Commit graph

9225 commits

Author SHA1 Message Date
ZZYZX
302af61686 Added per-thing render hooks 2017-01-23 20:48:57 +02:00
ZZYZX
5bfd484ae2 Generalized event handler definition; removed excessive VM calls when we don't have override defined. 2017-01-23 20:48:57 +02:00
ZZYZX
ca0d92a454 Added EventHandler.CreateOnce and EventHandler.Find to refer to handlers after they are created 2017-01-23 20:48:57 +02:00
ZZYZX
ce616f9c06 Added: prototype event system 2017-01-23 20:48:57 +02:00
Christoph Oelckers
b3aa7c61a9 - fixed: Class and struct name lookup was not context aware.
If a later module reused an existing name for a different class or struct type, this new name would completely shadow the old one, even in the base files.
Changed it so that each compilation unit (i.e. each ZScript and DECORATE lump) get their own symbol table and can only see the symbol tables that got defined in lower numbered resource files so that later definitions do not pollute the available list of symbols when running the compiler backend and code generator - which happens after everything has been parsed.

Another effect of this is that a mod that reuses the name of an internal global constant will only see its own constant, again reducing the risk of potential errors in case the internal definitions add some new values.

Global constants are still discouraged from being used because what this does not and can not handle is the case that a mod defines a global constant with the same name as a class variable. In such a case the class variable will always take precedence for code inside that class.

Note that the internal struct String had to be renamed for this because the stricter checks did not let the type String pass on the left side of a '.' anymore.

- made PEnum inherit from PInt and not from PNamedType.

The old inheritance broke nearly every check for integer compatibility in the compiler, so this hopefully leads to a working enum implementation.
2017-01-23 19:10:28 +01:00
alexey.lysiuk
d0565cafbd Fixed compilation error with GCC/Clang
src/scripting/zscript/zcc_compile.h:95:10: error: extra qualification ‘ZCCCompiler::’ on member ‘StringConstFromNode’ [-fpermissive]
2017-01-23 11:19:26 +02:00
Christoph Oelckers
5a4a5a17db - added core lump checks for ZScript.
- load internal shaders only from file 0. This does not contain aborts, like most of the other checks,but it will now refuse to load any core shader file from anything but gzdoom.pk3.
2017-01-23 01:56:15 +01:00
Christoph Oelckers
517733a04e Merge branch 'clangfix' of https://github.com/edward-san/zdoom
# Conflicts:
#	src/scripting/zscript/zcc_compile.h
2017-01-23 01:39:31 +01:00
Christoph Oelckers
f720073b31 - removed all code that was only there to implement the broken Simplifier that just got removed. 2017-01-23 01:37:43 +01:00
Christoph Oelckers
68c3f42a53 - no more Simplify for global constants as well. 2017-01-23 01:10:40 +01:00
Edoardo Prezioso
4694f9b201 - Fixed GCC/Clang 'extra qualification' error. 2017-01-23 00:22:25 +01:00
Edoardo Prezioso
092b2d6ea0 - Fixed Clang compile error [-Wnon-pod-varargs]. 2017-01-23 00:11:42 +01:00
Christoph Oelckers
061ba48dc1 - no more simplify in state parameters.
- resolving constants with the backend requires a few more error checks.
2017-01-22 23:53:50 +01:00
Christoph Oelckers
2880f56080 - also switched scripted properties away from Simplify. 2017-01-22 23:00:41 +01:00
Christoph Oelckers
4c93e2baa3 - use the expression evaluation capabilities of the compiler backend to resolve constants in actor defaults.
This is the first step to get rid of Simplify and all the baggage it depends on.
2017-01-22 22:19:32 +01:00
Christoph Oelckers
f9f5e45824 - memset the entire vissprite structure when drawing a psprite because this does not initialize all fields. 2017-01-22 20:12:44 +01:00
Christoph Oelckers
f15b051327 - use std::unique_ptr to manage the resource file for loading a savegame because the try/catch handler to ensure its deletion was causing some problems. 2017-01-22 20:06:11 +01:00
alexey.lysiuk
f9ef935840 Fixed warning reported by GCC/Clang when optimization is enabled
src/scripting/codegeneration/codegen.cpp:4097:12: warning: variable 'cast' is used uninitialized whenever 'if' condition is false
2017-01-22 17:00:36 +02:00
alexey.lysiuk
935d49d75f Fixed returning of value from TakeInventory() function
Issuing take CCMD no longer causes assertion failure at src/scripting/vm/vmexec.h:662
assert(numret == C && "Number of parameters returned differs from what was expected by the caller")
2017-01-22 13:51:46 +02:00
alexey.lysiuk
03f9425eb1 Fixed missing xBRZ menu options on platforms without MMX support
xBRZ texture resize modes are no longer removed from menu for targets with HAVE_MMX undefined
2017-01-22 12:11:17 +02:00
alexey.lysiuk
da4981ef91 Fixed invisible mouse cursor in SDL backend
See https://mantis.zdoom.org/view.php?id=71
2017-01-22 10:25:37 +02:00
Christoph Oelckers
d289c00ae3 - restored a line of code that got lost when fixing the parameter checks in CallStateChain. 2017-01-22 01:28:37 +01:00
Christoph Oelckers
ee40135d55 - removed the bogus SetPointer method from PClassPointer.
This was blocking proper bookkeeping of class pointer variables, in particular it rendered PointerSubstitution ineffective.
2017-01-21 23:26:58 +01:00
ZZYZX
659c11514b OpenGL: Added picnum override handling for actors 2017-01-21 23:04:45 +01:00
Christoph Oelckers
aaae52c60b - fixed: FResourceFile::OpenResourceFile did not close the opened file in case it contained invalid data. 2017-01-21 20:15:06 +01:00
alexey.lysiuk
2358b65921 Fixed compiler warning reported by GGC/Clang
No more 'warning: comparison of integers of different signs: int and unsigned long'
2017-01-21 14:47:10 +02:00
Christoph Oelckers
45d3b58cc6 - fixed redundant variable declaration shadowing an outer one. 2017-01-21 13:26:26 +01:00
Christoph Oelckers
2a6fafa15e - don't let P_DamageMobj return negative values.
This serves no purpose, there's not a single place in the code which checks for it, but if that negative values goes unchecked to functions that expect an actually meaningful value for damage inflicted, some bad results can happen. If no damage is inflicted, a proper 0 needs to be returned so that the value can actually be worked with. The return value was a ZDoom invention, it is completely unclear why -1 was chosen if some kind of protection rendered the damage ineffective.
2017-01-21 13:12:34 +01:00
Christoph Oelckers
4dc1d117f2 - fixed: Without letting CMake find OpenGL, under Windows the library must be added manually to the project or linker errors will happen. 2017-01-21 11:50:53 +01:00
Christoph Oelckers
cbdf9870ec - fix uninitialized variable. 2017-01-21 11:46:23 +01:00
Christoph Oelckers
19df603f92 - fixed: P_RailAttack did not make adjustments for the shooter's floorclip. 2017-01-21 10:55:57 +01:00
alexey.lysiuk
5158b1c337 Fixed undefined behavior of DropInventory()
See https://mantis.zdoom.org/view.php?id=93
2017-01-21 11:43:11 +02:00
ZZYZX
6f5fff00a0 Implemented static methods in String struct. Implemented String.Format and String.AppendFormat. Implemented native vararg methods for the future. 2017-01-21 10:32:26 +01:00
Edoardo Prezioso
da3da61b67 - Make OpenGL library link fully dynamic on Unix.
Also, remove all the OpenGL CMake checks, because they're not needed anymore.
2017-01-20 23:21:37 -05:00
Christoph Oelckers
7e114c1127 - moved some more code out of the way. 2017-01-21 00:49:54 +01:00
Christoph Oelckers
274727e8ae - moved the draw functions which are exclusively used by the Strife status bar into strife_sbar.cpp to get them out of the way. They are not expected to survive anyway. 2017-01-21 00:41:59 +01:00
Christoph Oelckers
74f4171947 - removed several unused draw functions from DBaseStatusBar. 2017-01-21 00:29:19 +01:00
Christoph Oelckers
355570198d - moved statusbar code to a separate directory before starting work on it. 2017-01-20 22:59:31 +01:00
Christoph Oelckers
36e1d71f2b - fix spelling error. 2017-01-20 22:45:09 +01:00
Christoph Oelckers
23a7fd40aa - fixed: The script wrapper for AActor::TakeInventory erroneously called RemoveInventory, not TakeInventory. 2017-01-20 20:04:57 +01:00
Christoph Oelckers
7adc34932f - fixed: The state parameter for CallStateChain was checked for the wrong type. 2017-01-20 19:56:29 +01:00
Edoardo Prezioso
e993f9304b - Fixed GCC/Clang compile error. 2017-01-20 19:10:07 +01:00
Christoph Oelckers
4fa5055548 - fixed: With some functions moved to Weapon, Dehacked needs to check Weapon, not StateProvider to find its code pointers. 2017-01-20 17:23:13 +01:00
Christoph Oelckers
302cb41403 - fixed typo in MorphMonster definition. 2017-01-20 17:20:50 +01:00
Christoph Oelckers
314e49f791 - let A_SpawnProjectile, A_FireProjectile, A_SpawnItem(Ex) and A_ThrowGrenade return the spawned actors to the calling code.
- fixed the return type checks in CallStateChain. These made some bogus assumptions about what return prototypes to support and would have skipped any multi-return function whose first argument was actually usable.
2017-01-20 12:39:51 +01:00
Christoph Oelckers
f5421491ec - wrapped the entire DSBarInfo class in a container and completely decoupled it from DBaseStatusBar.
The idea is, when status bars are moved to ZScript that only this small wrapper class needs to be dealt with and the implementation can be left alone. SBARINFO is far too complex to be scriptified, but having it inherit directly from DBaseStatusBar and access its member variables severely limits the options of dealing with the status bar code. This way, it only accesses some globally visible functions in DBaseStatusBar and no variables.

- renamed the global ST_X and ST_Y variables because it is far too confusing and error-prone to have the same names inside and outside DBaseStatusBar.
2017-01-20 11:11:22 +01:00
Rachael Alexanderson
f3159af211 - fixed: Remove ccmd should check if an object is actually an inventory object before attempting to check its owner. (Ooops!) 2017-01-20 10:03:33 +01:00
Christoph Oelckers
9d828a7ca0 - marked all virtual overrides in DSBarInfo with the 'override' keyword so that I do not have to search for them again. 2017-01-20 01:42:21 +01:00
Christoph Oelckers
c880b26d98 - scriptified MorphProjectile and CustomSprite.
This should for now conclude actor class scriptification. The remaining ten classes with the exception of MorphedMonster are all too essential or too closely tied to engine feature so they should remain native.
2017-01-20 01:11:36 +01:00
Christoph Oelckers
3c30b59bab more inventory scriptification
* completely scriptified DehackedPickup and FakeInventory.
* scriptified all remaining virtual functions of Inventory, so that its inheritance is now 100% script-side.
* scriptified CallTryPickup and most of the code called by that.

- fixed: Passing local variables by reference did not work in the VM.
2017-01-19 23:42:12 +01:00