Commit graph

675 commits

Author SHA1 Message Date
Christoph Oelckers
ee08412e49 - scriptified G_PlayerFinishLevel.
Outside of SBARINFO this was the biggest remaining piece of code that referenced AInventory internals.
2018-12-02 16:26:02 +01:00
Christoph Oelckers
588ddd185b - scriptified TakeInventory, including the ACS/FS interfaces. 2018-12-01 17:11:09 +01:00
Christoph Oelckers
eb47fb9adc - scriptified GiveInventory and made the interface a bit more configurable by mods.
Now a child type can decide for itself how to treat 'amount'.
The scripting interfaces to this function in ACS and FraggleScript have been consolidated and also scriptified.
2018-12-01 17:07:09 +01:00
Christoph Oelckers
a0c0e8bdfe Merge remote-tracking branch 'remotes/origin/weapon_scriptification' into asmjit
# Conflicts:
#	src/g_inventory/a_pickups.cpp
2018-11-30 21:28:44 +01:00
Christoph Oelckers
f43f0b9bd4 - added a few more direct native entry points. 2018-11-29 00:27:09 +01:00
Christoph Oelckers
d3ff657231 - added a direct native function for NextHighestCeilingAt to test multiple return values. 2018-11-28 21:40:56 +01:00
Christoph Oelckers
6fc63b9b78 - started with a ScriptUtil class which will allow moving function implementations for ACS and FraggleScript to zscript.txt
So far 3 functions for testing implemented.
2018-11-24 13:06:01 +01:00
Christoph Oelckers
bd84a60663 - scriptified the rest of the morph code. 2018-11-24 10:47:42 +01:00
Christoph Oelckers
ac1bffc51b - scriptified P_MorphMonster. 2018-11-24 09:33:03 +01:00
Christoph Oelckers
97573a0452 - implemented VMCallWithDefaults and used it for all calls with variable arguments.
This isn't used for the 3 action function calls because it requires an array allocation which would be a bit too costly for something as frequently called as action functions.
They will need a different approach.
2018-11-16 19:18:33 +01:00
Christoph Oelckers
c24da62cdd - marked all places where an incomplete parameter list may be passed to the VM by a native call by redirecting VMCall to an intermediate VMCallWithDefaults. This function must later fill in the missing arguments from the default. 2018-11-16 18:41:27 +01:00
ZZYZX
d85e5afdfb Destructible geometry - minor fixes and 3D floor support 2018-11-07 00:12:37 +01:00
ZZYZX
b911bbc424 Single commit - destructible geometry feature 2018-10-31 17:22:09 +01:00
alexey.lysiuk
2ae8d39441 Removed all superfluous #include's
Automatically optimized by CLion IDE with manual corrections
2018-04-24 14:30:35 +03:00
Christoph Oelckers
e89a598b31 - renamed FTexture's UseType flags and gave them a dedicated type.
This was done mainly to reduce the amount of occurences of the word FTexture but it immediately helped detect two small and mostly harmless bugs that were found due to the stricter type checks.
2018-03-25 20:26:16 +02:00
Christoph Oelckers
da74b9df95 - serialize the temporary music volume that can be set through ACS. 2018-03-24 13:07:18 +01:00
Jason Francis
bd7791ad9c Allow setting string user variables in ACS 2018-03-24 10:20:39 +01:00
Christoph Oelckers
b939836846 - renamed FileRdr back to FileReader. 2018-03-11 19:29:37 +01:00
Christoph Oelckers
247785bca2 - converted map loader to FileRdr and took the opportunity to clean up its interface. 2018-03-10 21:48:33 +01:00
Marrub
66d15dc215 Make the ACS string pool reserve more strings
Due to only reserving a single new string when growing the string pool, any ACS code that generates lots of strings will eventually cause massive amounts of lag, to the point where ACSStringPool takes up *most of the execution time*. The proposed change fixes this issue.
2018-02-10 20:18:26 +01:00
alexey.lysiuk
d5bc0a1fa9 Uniform way to guard ACS stack and variables
ACS VM stack and map/world/global variables arrays are now checked for out of bounds access
2018-02-03 14:39:01 +02:00
Christoph Oelckers
d207f426c1 Typo. 2018-01-27 12:49:52 +01:00
Christoph Oelckers
1794774f22 - ScriptedMarine already exists as a name so most literal occurences in the source could be replaced with more efficient direct use of the name. 2018-01-27 09:54:33 +01:00
alexey.lysiuk
b5006bbee4 Fixed potential compilation error in ACS loader
https://forum.zdoom.org/viewtopic.php?t=59164
2018-01-20 10:34:07 +02:00
alexey.lysiuk
09e2326c63 Use dummy uallong() function for all Intel targets
64-bit Intel targets built with GCC/Clang were using strict memory alignment version of this function
2018-01-14 10:13:18 +02:00
alexey.lysiuk
72f181be08 Revert "Added partial bounds check for instruction pointer in ACS VM"
This reverts commit 83cd53c9b1.
2018-01-14 10:04:13 +02:00
alexey.lysiuk
83cd53c9b1 Added partial bounds check for instruction pointer in ACS VM
This change adds verification of instruction pointer for indirect usages only, i.e. via NEXT...() macros
2018-01-06 13:26:51 +02:00
alexey.lysiuk
44f01e1dc6 Added bounds check for local variables in ACS VM 2018-01-06 12:13:15 +02:00
alexey.lysiuk
4b044e30d7 - ACS stack checking (proxy commit by Rachael) 2018-01-03 23:35:57 -05:00
alexey.lysiuk
a89bc23789 Fixed crash when loading saved game with missing ACS module 2017-12-10 13:24:16 +02:00
alexey.lysiuk
0d05b41f22 Fixed incomplete ACS string pool state after loading of saved game
https://forum.zdoom.org/viewtopic.php?t=58571
2017-12-02 11:51:52 +02:00
alexey.lysiuk
f5f7cd9fed Fixed broken FOV in SetCameraToTexture() ACS function 2017-09-11 12:22:22 +03:00
nashmuhandes
f96f71044f Change camera texture FOV to doubles. 2017-09-02 07:44:38 +02:00
alexey.lysiuk
122f5d9515 Fixed crash caused by script number collision of ACS typed scripts
Wrong typed script can be picked when the same ACS script number is used for different script types from multiple behavior lumps
Although script in particular state is discarded and null pointer could be dereferenced
https://forum.zdoom.org/viewtopic.php?t=57718
2017-08-31 11:40:16 +03:00
alexey.lysiuk
b077518c89 Fixed crash when morph item is used from ACS
https://forum.zdoom.org/viewtopic.php?t=57571
2017-08-13 16:15:31 +03:00
Christoph Oelckers
c1de32896c - addressed incorrect ACS printbold implementation: For native Hexen maps it will now be correct, but all others will have to set a flag in MAPINFO's 'gameinfo' section to avoid problems with numerous ZDoom maps depending on the incorrect implementation. 2017-08-12 10:20:34 +02:00
Christoph Oelckers
d8d4723ae1 - removed PCD_GetActorZ double check. 2017-05-31 11:52:51 +02:00
Christoph Oelckers
b5dc5ceb3c - removed some unused static variables 2017-04-26 14:48:33 +02:00
alexey.lysiuk
1d84b28fc2 Added support for bool type in SetUserVariable() ACS function
https://mantis.zdoom.org/view.php?id=462
2017-04-18 15:37:45 +03:00
Christoph Oelckers
cd180d29c7 - block direct use of 'new' for DObjects.
This is to ensure that the Class pointer can be set right on creation. ZDoom had always depended on handling this lazily which poses some problems for the VM.
So now there is a variadic Create<classtype> function taking care of that, but to ensure that it gets used, direct access to the new operator has been blocked.

This also neccessitated making DArgs a regular object because they get created before the type system is up. Since the few uses of DArgs are easily controllable this wasn't a big issue.

- did a bit of optimization on the bots' decision making whether to pick up a health item or not.
2017-04-14 13:31:58 +02:00
Christoph Oelckers
929affa3cb - removed MarkACSThinker.
The global variable holding a pointer to this thinker should be a weak reference to the instance in the thinker chain, there is no need to mark this global variable, as the thinker's lifetime is only determined by the thinker chain.

- committed a few Posix related file the last commit missed.
2017-04-14 10:59:57 +02:00
Christoph Oelckers
aeb455d705 - removed all RTTI checks for the types. 2017-04-13 15:38:06 +02:00
Christoph Oelckers
b2d944974e - first stage of simplifying the type system.
Let's use inline checkers in PType instead of constantly having to do clumsy IsKindOf checks etc. Once complete this also means that the types can be taken out of the class hierarchy, freeing up some common names.
2017-04-13 12:52:18 +02:00
Christoph Oelckers
6599e2c425 - moved the VM types into their own file and only include it where really needed. 2017-04-13 01:12:04 +02:00
Christoph Oelckers
6308251084 - added a FindSymbol wrapper to PClass so that other code does not need to access the symbol table directly.
- added an isActor utility function to codegen.cpp to simplify a few constructs.
2017-04-12 13:08:41 +02:00
Christoph Oelckers
9c9b2ccf6d - replaced more dyn_casts and checks for RUNTIME_CLASS(PClassActor)
It is preferable to use IsDescendantOf wherever possible if we ever want to be able to separate PClass from PType.
2017-04-12 10:20:58 +02:00
Christoph Oelckers
3a569f176d - added GetLineX/GetLineY ACS functions. 2017-03-29 01:02:29 +02:00
Christoph Oelckers
054d9a5bcc - allow passing the activator to ScriptCall. 2017-03-29 00:43:12 +02:00
Christoph Oelckers
4417afd548 - changed VMValue to handle strings by reference.
This makes VMValue a real POD type with no hacky overloads and eliminates a lot of destructor code in all places that call a VM function. Due to the way this had to be handled, none of these destructors could be skipped because any value could have been a string.
This required some minor changes in functions that passed a temporary FString into the VM to ensure that the temporary object lives long enough to be handled. The code generator had already been changed to deal with this in a previous commit.
This is easily offset by the code savings and reduced maintenance needs elsewhere.
2017-03-22 01:44:56 +01:00
Christoph Oelckers
9a24771a7d - refactored FDynamicColormap out of sector_t.
This has increasingly become an obstacle with the hardware renderer, so now the values are being stored as plain data in the sector, with the software renderer getting the actual color tables when needed. While this is a bit slower than storing the pregenerated colormap, in realistic situations the added time is mostly negligible in the microseconds range.
2017-03-15 22:04:59 +01:00