Commit graph

283 commits

Author SHA1 Message Date
Christoph Oelckers
cd7986b1b1 - refactored global sides array to be more VM friendly.
- moved FLevelLocals to its own header to resolve some circular include conflicts.
2017-01-08 18:46:17 +01:00
Christoph Oelckers
12a99c3f3c - got rid of clearbuf.
This was used in only 4 places, 3 of which could easily be replaced with a memset, and the fourth, in the Strife status bar, suffering from a pointless performance optimization, rendering the code unreadable - the code spent here per frame is utterly insignificant so clarity should win here.
2016-12-09 12:48:10 +01:00
Christoph Oelckers
229c55ce61 - moved ammo to its own file, including the backpack.
- moved weapon declarations to their own header.
2016-11-30 12:24:50 +01:00
Christoph Oelckers
78fa076079 - moved armor class declarations to their own file and added necessary #includes only to those files actually using them.
- added copyright headers to a_armor.cpp and a_keys.cpp.
2016-11-30 10:55:03 +01:00
Christoph Oelckers
e01f680b72 - scriptified the Mauler, completing Strife. 2016-11-29 14:32:49 +01:00
Christoph Oelckers
b625156df6 - scriptified Strife's flamethrower and grenade launcher. 2016-11-29 14:12:39 +01:00
Christoph Oelckers
5beebb83b7 - scriptified Strife's assault gun and missile launcher. 2016-11-29 13:28:43 +01:00
Christoph Oelckers
be5ba70ed2 - scriptified Strife's dagger and crossbow. 2016-11-29 13:00:07 +01:00
Christoph Oelckers
3af9232fca - scriptified a_strifeitems.cpp and a_debris.cpp.
- Changed the glass shards so that they do not have to override FloorBounceMissile. It was the only place where this was virtually overridden and provided little usefulness.
- made 'out' variables work.
- fixed virtual call handling for HandlePickup.
2016-11-29 12:17:05 +01:00
Christoph Oelckers
55b549c0c6 - converted the rest of a_strifestuff.cpp.
- changed some very old A_Explode calls which passed all values as integer literals.
2016-11-29 00:16:30 +01:00
Christoph Oelckers
edd8e51a69 - scriptified most of a_strifestuff.cpp. 2016-11-28 23:30:14 +01:00
Christoph Oelckers
caef5344b0 - scriptified a_thingstoblowup.cpp.
- changed the power crystal floor movement to use DFloor instead of an incomplete in-place hack to ensure that everything is processed properly.
2016-11-28 21:33:14 +01:00
Christoph Oelckers
dd5494d848 - scriptified Stalker and Sentinel. 2016-11-28 19:56:16 +01:00
Christoph Oelckers
360cbfba2a - scriptified Oracle, Programmer and Rebels. 2016-11-28 19:42:26 +01:00
Christoph Oelckers
119bcb924d - scriptified the Loremaster. 2016-11-28 18:59:57 +01:00
Christoph Oelckers
bf1c2a7e51 - scriptified the Inquisitor. 2016-11-28 18:49:25 +01:00
Christoph Oelckers
b8cf377d9e - scriptified the Crusader. 2016-11-28 18:36:13 +01:00
Christoph Oelckers
9064a5b0ac - scriptified Strife's coins.
- added a String class to allow attaching methods to the builtin string type. This works by checking if the left side of the member accessor is a string and just replacing the tyoe in this one place, all the rest is automatic.
2016-11-28 18:15:18 +01:00
Christoph Oelckers
d2ce78fae7 - changed the return value of PickupMessage to an FString so that it can interface with scripts.
- use standard convention of prefacing localizable strings with "$" for C_MidPrint.
2016-11-28 16:19:01 +01:00
Christoph Oelckers
53318f4bde - scriptified Reaver and Templar. 2016-11-28 15:51:07 +01:00
Christoph Oelckers
8551a4f6e1 - scriptified the Sigil. This isn't fully tested yet. 2016-11-28 14:39:25 +01:00
Christoph Oelckers
c9a4087c18 - scriptified a_entityboss.cpp. 2016-11-28 13:11:27 +01:00
Christoph Oelckers
dc9ee0727a - scriptified a_spectral.cpp.
- consolidated A_Tracer and A_Tracer2.

Note that this commit temporarily disables a few features in order to make it compile.
2016-11-28 12:55:33 +01:00
Christoph Oelckers
b171d6e21f - scriptified a_alienspectres.cpp. 2016-11-28 11:52:03 +01:00
Christoph Oelckers
7ea9f60464 - scriptified the Acolyte. 2016-11-28 10:41:36 +01:00
Christoph Oelckers
096c51d546 - changed AInventory::HandlePickup to work iteratively instead of recursively.
Two reasons for this:

1. if this has to be routed through the VM each recursion will cost 1000 bytes of stack space which simply is not good.
2. having the virtual function only care about the item itself but not the entire inventory chain is a lot less error prone for scripting.

Since the scripting interface needs a separate caller function anyway this seemed like a good time to change it. The same will be done for the other chained inventory handlers as well.
2016-11-27 16:24:31 +01:00
Christoph Oelckers
7385cd70c0 - scriptified the Minotaur.
Interesting tidbit: The damage calculation in P_MinotaurSlam had been incorrect for the Heretic version since the friendly Hexen Dark Servant was added, but nobody ever noticed in 14 years...
2016-11-26 01:14:47 +01:00
Christoph Oelckers
66d28a24b8 - disabled the scripted virtual function module after finding out that it only works if each single class that may serve as a parent for scripting is explicitly declared.
Needless to say, this is simply too volatile and would require constant active maintenance, not to mention a huge amount of work up front to get going.
It also hid a nasty problem with the Destroy method. Due to the way the garbage collector works, Destroy cannot be exposed to scripts as-is. It may be called from scripts but it may not be overridden from scripts because the garbage collector can call this function after all data needed for calling a scripted override has already been destroyed because if that data is also being collected there is no guarantee that proper order of destruction is observed. So for now Destroy is just a normal native method to scripted classes
2016-11-25 00:25:26 +01:00
Christoph Oelckers
633da6e5d8 - scriptified two of the Acolyte's functions.
- added a DActorIterator class.
- fixed: It was not possible to have functions of the same name in two different classes because the name they were searched for was not qualified by the class. Changed so that the class name is included now, but to avoid renaming several hundreds of functions all at once, if the search fails, it will repeat with 'Actor' as class name.

This commit contains preparations for scriptifying Hexen's Dragon, but that doesn't work yet so it's not included.
2016-11-16 01:36:21 +01:00
Christoph Oelckers
a63c749f04 - moved A_Light to Actor after finding some mods which used it badly. Besides, it should be fine to use this from PlayerPawns as well. 2016-11-15 13:39:41 +01:00
Christoph Oelckers
a2f4cd7cda - fixed: All functions that are callable from weapon states and not members of Actor need to be declared 'action'.
With the stricter type checks of the self pointer that were now implemented these all produced errors.
2016-11-13 14:20:30 +01:00
Leonard2
7dbc4710f1 Add the new argument to all uses of the implement macro 2016-11-09 17:45:55 +01:00
Leonard2
bb2d61de50 Replaced the many implement macros with a single one that takes arguments instead 2016-11-09 17:45:53 +01:00
Christoph Oelckers
286f9510d4 - got rid of all default parameter redundancies.
- scriptified a few more functions.
2016-10-28 00:32:52 +02:00
Christoph Oelckers
c7347608a4 - scriptified A_FatAttack*.
- swapped parameters of two-parameter VelToAngle method, so that internal and script version are in line.
- fixed parameter asserts to handle NULL pointers properly.
2016-10-27 17:47:46 +02:00
Christoph Oelckers
371712c53a - turned everything I could into non-action functions.
- fixed emission of the self pointer in FxVMFunctionCall. I did not realize that the self expression only sets up a register for the value, not pushing it onto the stack.
2016-10-22 17:49:08 +02:00
Christoph Oelckers
b1a83bfd26 - started with cleanup and separation of DECORATE code.
* everything related to scripting is now placed in a subdirectory 'scripting', which itself is separated into DECORATE, ZSCRIPT, the VM and code generation.
 * a few items have been moved to different headers so that the DECORATE parser definitions can mostly be kept local. The only exception at the moment is the flags interface on which 3 source files depend.
2016-10-12 19:22:33 +02:00
Christoph Oelckers
e89d072abc - most thinkers are done. Some stuff about polyobject pointers is temporarily disabled right now because some of the required functions have already been pulled out. 2016-09-19 19:14:30 +02:00
Christoph Oelckers
88eab9d1f9 - And another batch of serializers. 2016-09-19 15:07:53 +02:00
Christoph Oelckers
d24aa5dec9 - reformatting for easier search. 2016-09-19 10:47:59 +02:00
Christoph Oelckers
f536523fbd - It's Height, not height... 2016-09-06 22:36:53 +02:00
Christoph Oelckers
5a3147407e - fixed floatification error in A_MaulerTorpedoWave. 2016-09-06 22:34:59 +02:00
Leonard2
05d1df3571 Fixed crashes with the A_CrispyPlayer and A_HandLower action functions
Simply using FindPSprite in those functions wouldn't be enough because if a mod is using the firehands layer when they are called this would go very wrong
2016-07-13 13:01:32 +02:00
Leonard2
3ea70980f9 Fixed: the strife firehands were interpolated if a mod used the layer before them
The flags were also already reset, no need to do it twice
2016-07-13 13:01:32 +02:00
Leonard2
b8e1bead0a Removed unneeded checks
GetPSprite cannot return a null pointer and calling setstate with a null pointer destroys it
2016-07-13 13:01:32 +02:00
Christoph Oelckers
d87665bfe0 - fixed: A_CheckTerrain must add to the actor's current velocity, not set it. 2016-07-04 00:39:35 +02:00
Edoardo Prezioso
56508a2d82 - Avoid issues with misused Strife actions. 2016-06-17 23:09:34 +02:00
Christoph Oelckers
2c928a2cda - fixed: Strife's firehands' coordinates need WEAPONTOP being added because it cannot be taken from the main weapon layer which no longer exists when the hands appear. 2016-06-17 15:26:00 +02:00
Christoph Oelckers
7ccdbf9b62 Merge branch 'PSprites' 2016-06-16 16:16:16 +02:00
MajorCooke
c9f4620702 Reimplemented P_SetPsprite. 2016-06-16 07:24:00 -05:00