Commit graph

14732 commits

Author SHA1 Message Date
Christoph Oelckers
64e9f7e43b - changemap must use the current UI level if the user wants to go to "*". 2019-01-28 02:08:49 +01:00
Christoph Oelckers
aee8851643 - fixed all the missed level references in the decal thinkers. 2019-01-28 02:07:46 +01:00
Christoph Oelckers
472a1118dd - had to move the tag manager. This somehow got skipped by the last commit. 2019-01-28 01:37:21 +01:00
Christoph Oelckers
7211c1db0f - give the tag manager a reference to the level.
This is needed for the compatibility search of the sector tag iterator which linearly searches the sector array.
2019-01-28 01:33:52 +01:00
Christoph Oelckers
a7746278a8 - a few remaining simple ones
This also removes a few pointless comments that popped up and consolidates setting a level's music into a subfuntion.
2019-01-28 01:25:52 +01:00
Christoph Oelckers
648e472744 - handled approx. half of all cases where the address of level is taken. 2019-01-28 00:55:21 +01:00
Christoph Oelckers
b4acb857ad - the final batch of easy level replacements.
What's left will require a bit more work...
2019-01-27 21:59:19 +01:00
Christoph Oelckers
11c453a71f - fix handling of the global script in FraggleScript.
Depending on serialization order is not a good idea here, so now it's no longer stored as a parent in the main level script but explicitly checked for when looking for a variable.
2019-01-27 21:03:25 +01:00
Christoph Oelckers
4d98c10ea3 - let the sound code use the current UI level.
This is what should be audible. To prevent other levels from playing sound, all entry points check whether the sound playing entity belongs to the current UI level.
2019-01-27 19:32:38 +01:00
Christoph Oelckers
b4a95ccaa9 - roughly 50 more, mostly search and replace. 2019-01-27 19:16:14 +01:00
Christoph Oelckers
06ba8c4c00 - 50 more simple replacements of 'level' 2019-01-27 17:35:50 +01:00
Christoph Oelckers
8c542e9be8 - removed level references in the software renderers. 2019-01-27 17:21:36 +01:00
Christoph Oelckers
4f540c1703 - give the sector a level reference. 2019-01-27 17:12:03 +01:00
Christoph Oelckers
522cc855ad - a few more. 2019-01-27 16:59:50 +01:00
alexey.lysiuk
95679c36b2 - added virtual destructor to FDelayedCommand
src/c_dispatch.cpp:143:5: warning: delete called on 'FDelayedCommand' that is abstract but has non-virtual destructor [-Wdelete-non-virtual-dtor]
src/tarray.h:582:5: warning: delete called on 'FDelayedCommand' that is abstract but has non-virtual destructor [-Wdelete-non-virtual-dtor]
src/tarray.h:574:5: warning: delete called on 'FDelayedCommand' that is abstract but has non-virtual destructor [-Wdelete-non-virtual-dtor]
2019-01-27 17:38:10 +02:00
Christoph Oelckers
ae544fa21f - removed a few direct uses of TThinkerIterator. 2019-01-27 16:15:32 +01:00
Christoph Oelckers
c8cd11422a - translate UMAPINFO specials at execution time, not load time.
At load time the context for translation does not exist.
2019-01-27 16:09:05 +01:00
Christoph Oelckers
73696e2781 - handled most level references in actorinlines.h and p_mobj.cpp. 2019-01-27 16:08:22 +01:00
Christoph Oelckers
c94f0f47a2 - removed all remaining references to level and TThinkerIterator from p_floor.cpp, p_lights.cpp, p_pusher.cpp and p_scroll.cpp. 2019-01-27 15:02:37 +01:00
Christoph Oelckers
5aa379e50e - removed all remaining references to level and TThinkerIterator from p_enemy.cpp. 2019-01-27 14:53:08 +01:00
Christoph Oelckers
2ed2202caa - removed all remaining references to level and TThinkerIterator from p_enemy.cpp. 2019-01-27 14:49:51 +01:00
Christoph Oelckers
84baa5bb4d - deprecated the global 'level' variable.
This will currently output 9 warnings for the UDMF property getters. To silence these a bit more work is needed.
2019-01-27 14:33:02 +01:00
Christoph Oelckers
e9954ee018 Merge branch 'master' into new_level_refactor 2019-01-27 14:08:23 +01:00
Christoph Oelckers
9bb4ea34e7 - fixed: When A_SpawnProjectile got fixed, this fix broke the old A_CustomMissile function because the added workaround was overlooked.
This now separates the code more clearly into the twp paths to make the differences easier to see and compare.
2019-01-27 14:00:23 +01:00
Christoph Oelckers
e7aa10b5c8 - changed thinker initialization to occur in a Construct function instead of the constructor itself.
This was done to ensure that this code only runs when the thinker itself is fully set up.
With a constructor there is no control about such things, if some common initialization needs to be done it has to be in the base constructor, but that makes the entire approach chosen here to ensure proper linking into the thinker chains impossible.
ZDoom originally did it that way, which resulted in a very inflexible system and required some awful hacks to let the serializer work with it - the corresponding bSerialOverride flag is now gone.

The only thinker class still having a constructor is DFraggleThinker, because it contains non-serializable data that needs to be initialized in a piece of code that always runs, regardless of whether the object is created explicitly or from a savegame.
2019-01-27 13:08:54 +01:00
Christoph Oelckers
22939aade7 Merge branch 'master' into new_level_refactor
# Conflicts:
#	src/c_dispatch.cpp
2019-01-27 10:26:23 +01:00
Christoph Oelckers
39f53a4de0 - took the delayed console command execution out of the thinker management.
Doing this intermingled with the thinkers is highly unsafe because there are absolutely no guarantees about order of execution.
Effectively it ran these commands right in the middle of the playsim which could cause all sorts of synchronization issues, because CCMDs are part of the UI, not the playsim.

- pass a const string to AddCommandString.

This function manipulated the input buffer, leading to all sorts of code contortions to make sure that the passed parameter is clean for that.
This function will now create a copy of the passed parameter which it can manipulate without complicating its calling code.

# Conflicts:
#	src/c_dispatch.cpp
2019-01-27 10:24:49 +01:00
Christoph Oelckers
8323524014 - give thinkers a 'level' member and change linking to the chain to happen outside the constructor. 2019-01-27 01:49:20 +01:00
Christoph Oelckers
df4c7d8f56 - initialize the impact decal counter for each level. 2019-01-26 23:36:22 +01:00
Christoph Oelckers
9b1b6db85d - added a pseudo-serializer for FLevelLocals pointers.
This doesn't really write out any info for the pointer, if the level does not match it just errors out.
This is both for quick detection of badly used level data and for automatic restoring of the pointer from the serializer's working level.

This also removed the temporary workarounds in DAutomap and DLevelScript to restore these pointers when a savegame is loaded.
2019-01-26 21:23:19 +01:00
Christoph Oelckers
e5139cc325 - moved all EV_Light* functions and G_SerializeLevel into FLevelLocals 2019-01-26 17:55:15 +01:00
Christoph Oelckers
fe06c49e34 - fixed: DAutomap::Serialize needs to call its super method. 2019-01-26 17:54:58 +01:00
alexey.lysiuk
0e5320cb3a - fixed linking of optimized targets
Undefined symbols for architecture x86_64:
  "AActor::Vec3Angle(double, TAngle<double>, double, bool)", referenced from:
      Net_DoCommand(int, unsigned char**, int) in d_net.cpp.o
2019-01-26 17:22:35 +02:00
Christoph Oelckers
05830455e7 - made the automap an object.
This simplifies handling a lot because it allows to make the level the owner of its map.
2019-01-26 15:21:20 +01:00
Christoph Oelckers
625e9f2525 - the sector variables are still needed. 2019-01-26 12:22:02 +01:00
Christoph Oelckers
fb86f397a0 - Level as member variable in the sight checker. 2019-01-26 09:01:40 +01:00
Christoph Oelckers
10feb446fa - made most of the EV_* functions part of FLevelLocals. 2019-01-26 08:28:45 +01:00
Christoph Oelckers
28761b4c33 - made G_InitLevelLocals a member function of FLevelLocals.
This was another cheap one with a good number of removed references.
2019-01-25 19:46:03 +01:00
Christoph Oelckers
20989a0b41 - use a local variable to access the level in DLevelScript.
This was a relatively cheap change but removes a significant batch of references to the global variable, only making the entry points to the ACS interpreter relevant.
2019-01-25 19:36:09 +01:00
Rachael Alexanderson
2f84de9c37 - fixed indentations caused by conflict resolution in cherry-picked commit d911fa99a1 2019-01-25 13:02:30 -05:00
Christoph Oelckers
4e052f2857 - use a separate variable pointing to the current level for the UI code.
UI always runs on the primary level, so this does not need the ability to operate on multiple levels. Additionally, this can later be set to null when running play code so that scope violations result in an abort.
2019-01-25 18:31:40 +01:00
nashmuhandes
06e7ca4170 Missed "Abnt_C2" in the keybind name array. 2019-01-25 03:51:39 -05:00
Rachael Alexanderson
1407d0a7c5 - add 'cl_blockcheats' - useful for people who use debugging keys, allows a user to consciously turn off cheats without affecting the server 2019-01-24 22:09:09 -05:00
Christoph Oelckers
ba114f6f23 - give the hardware renderer's drawinfo its own level pointer 2019-01-25 01:26:16 +01:00
Christoph Oelckers
0124cecc15 - added missing #include. 2019-01-25 01:19:35 +01:00
Christoph Oelckers
bf3dc2f99b Merge branch 'rolling_back' into new_level_refactor 2019-01-25 00:57:01 +01:00
Christoph Oelckers
b2ee99c7cc - call level compatibility handlers for all levels and pass the map name as a second parameter.
This is for user-made handlers for which the checksum is rather useless both for deciding whether to call the handler and for identifying the map.
2019-01-25 00:56:15 +01:00
Christoph Oelckers
f4081c33a6 - give line_t a GetLevel function.
The portal getters need this, even though currently it only gets the global level.
2019-01-25 00:42:55 +01:00
Christoph Oelckers
3cef56249d - moved most functions of portals.cpp into FLevelLocals.
Much of this is used during level init and needs to be independent of the current level.
2019-01-25 00:30:55 +01:00
Christoph Oelckers
2623fbb54b - deleted unused mus2midi.cpp file. 2019-01-24 20:40:31 +01:00
Christoph Oelckers
7418ebef56 - use default constructors for the thinkers to avoid empty non-inlined functions. 2019-01-24 20:33:25 +01:00
Christoph Oelckers
4d55c28b60 - moved a large batch of code from p_spec.cpp and a few other files into the maploader folder. 2019-01-24 20:27:34 +01:00
Christoph Oelckers
0a6b6173de - Moved Strife conversation data into FLevelLocals. 2019-01-24 19:53:11 +01:00
Christoph Oelckers
0e5986769e - moved the tid hash into FLevelLocals and adjusted the interface to the iterators. 2019-01-24 19:28:40 +01:00
Christoph Oelckers
4c250a58ca - reroute all uses of FActorIterator and NActorIterator through FLevelLocals. 2019-01-24 18:50:22 +01:00
nashmuhandes
68f0cf111d Punctuated the input strings in UpperCamelCase format. 2019-01-24 04:07:34 -05:00
Christoph Oelckers
1f2162fea8 - moved the scripted creation functions for tag iterators to LevelLocals
The old static methods are now deprecated, this was done to clarify the relationships at play here.
2019-01-24 02:17:10 +01:00
Christoph Oelckers
97495e1857 - moved the tag manager into FLevelLocals 2019-01-24 01:53:05 +01:00
Christoph Oelckers
7e9340f3b7 - removed most global references to the tag manager by routing most access to FLevelocals. 2019-01-24 01:40:09 +01:00
Christoph Oelckers
9f8dd66189 - changed Polyobject thinkers to operate on the actual polyobjects instead of indices
This also changes the action special interface to pass a Level parameter to the separate functions and makes a few other minor adjustments to the polyobject code.
2019-01-24 01:05:07 +01:00
Christoph Oelckers
65750bd7bf Wrap all iterator calls in the map loader into FLevelLocals methods.
This should later be done for everything else as well, but the map loader should really be free of global dependencies ASAP.

Also replace TThinkerIterator<AActor> with FThinkerIterator globally because this only adds pointless type checks - with all actor subclasses being scripted this class has become redundant.
2019-01-24 00:43:43 +01:00
Christoph Oelckers
85b5f8d0a0 - moved several setup methods into the map loader
Code hasn't been moved yet, this only changes the declarations.
2019-01-24 00:22:18 +01:00
Christoph Oelckers
ac7a9183aa - re-applied the changes for p_spec.cpp
This is mostly map loader code which really should not operate on the global level.
2019-01-24 00:02:51 +01:00
Christoph Oelckers
83d464d1be - fixed code emission for constant ZScript function arguments 2019-01-23 22:37:16 +01:00
Christoph Oelckers
77cbd0c238 - copied the changes to DFlashFader in master. 2019-01-23 22:35:48 +01:00
Christoph Oelckers
a78daa8937 - fixed flicker light selection of light radius. 2019-01-23 22:31:22 +01:00
Christoph Oelckers
d60707c71e - added the fix for BuiltinNew which I missed when cherry-picking. 2019-01-23 22:02:13 +01:00
Christoph Oelckers
ceb38751f0 - fixed some merging issues. 2019-01-23 22:01:37 +01:00
Christoph Oelckers
3f835cd124 - removed now unused BuildGammaTable function 2019-01-23 21:50:11 +01:00
Rachael Alexanderson
dc27011370 - remove vid_hwgamma, force always use shader gamma
*** note to drfrag: Please don't cherry-pick this commit. Systems that do not use renderbuffers will still need this feature!
2019-01-23 21:50:11 +01:00
Christoph Oelckers
12c10b5156 - fixed Identifier resolving for static functions
This entered the code path which warned about ambiguous use of variables in action functions and as a result ran afoul of subsequent error checks.

Since ZScript has no global scope resolution operator, this needs to ignore all non-static class symbols and try to look up any of these as global identifiers.
2019-01-23 21:50:10 +01:00
Christoph Oelckers
5a054da4d9 - removed incorrect assert.
This assert disallowed pointers to non GC'd objects, which on some occasions can happen and must be allowed.
2019-01-23 21:48:59 +01:00
nashmuhandes
d911fa99a1 Move the "time" string in saved game comment into the LANGUAGE lump.
# Conflicts:
#	src/g_game.cpp
2019-01-23 21:48:30 +01:00
alexey.lysiuk
0dbd591812 - fixed 'overriding core lump' error
Wrong container was reported for overriding lump
2019-01-23 21:47:19 +01:00
Rachael Alexanderson
45d94ee993 - set resolution selector to auto detected resolution at startup, remove the entries from the config file
- committing a change for fullscreen sets scaling to 1.0 to guarantee the selected number of pixels are actually used
2019-01-23 21:45:09 +01:00
Christoph Oelckers
057b746e58 - fixed: The rail attack only considered the puff's decal if it had ALWAYSPUFF set. 2019-01-23 21:44:39 +01:00
alexey.lysiuk
4c3192fb28 - applied proper use type to font textures
Font upscaling no longer depends on texture resizing setting

https://forum.zdoom.org/viewtopic.php?t=63184
2019-01-23 21:43:06 +01:00
Christoph Oelckers
33f8b697ce - fixed: application of fake contrast should never result in a light level of 0 unless the sector's own light level is 0. 2019-01-23 21:42:26 +01:00
Christoph Oelckers
f61150a75e - fixed: TVector3::Pitch() got the sign inverted.
This caused bad calculations with CMF_OFFSETPITCH. Note that to compensate for the fix, the SphericalCoords function had to have its own inversion of the value removed so that it calculates the same result as before.
2019-01-23 21:42:09 +01:00
Christoph Oelckers
7d3c577c2c - normalize the pitch in ACS's SetActorPitch.
Apparently some people have to pass positive numbers in here to get a negative pitch, e.g. 350.0 instead of -10.0...
This prevents clamping of such out-of-range values that would otherwise constitute valid pitches with the wraparound in place.
2019-01-23 21:41:52 +01:00
alexey.lysiuk
e8f45fad40 - workaround MSVC 2015 code generation issue, x64 only
With optimization turned on illegal instructions were generated for turbo CVAR handler function

https://forum.zdoom.org/viewtopic.php?t=63157
2019-01-23 21:41:20 +01:00
Christoph Oelckers
5e4ef04a4d - allow assignment of line IDs through LevelCompatbility. 2019-01-23 21:40:19 +01:00
Christoph Oelckers
dd2ea206f9 - fixed default alpha for sector colors
It has to be 0, not 255.

# Conflicts:
#	src/p_lnspec.cpp
2019-01-23 21:39:55 +01:00
Christoph Oelckers
f22121a9df - recalculate the line deltas if a nodebuild is needed
One potential cause is moving around vertices in which case these do not match anymore
2019-01-23 21:38:48 +01:00
Christoph Oelckers
8872125f96 - fixed some merging issues. 2019-01-23 21:37:51 +01:00
Christoph Oelckers
7966282c1c - Fixed error reporting for the BSP loader
Using global variables for this is bad, and it didn't even catch all cases. Now a node build is only considered successful if everything is set up successfully.

# Conflicts:
#	src/maploader/maploader.cpp
2019-01-23 21:34:57 +01:00
alexey.lysiuk
cd9fa75ede - fixed potentially missing event handlers
Event handlers linked list might skip an entry if its order was in a middle of existing handlers

https://forum.zdoom.org/viewtopic.php?t=63258
2019-01-23 21:34:11 +01:00
alexey.lysiuk
84db7f783d - fixed wrong self type in Array.Resize()
https://forum.zdoom.org/viewtopic.php?t=63275
2019-01-23 21:33:41 +01:00
Christoph Oelckers
9b2c11a612 - fixed crash in the precaching code.
This didn't detect software canvas textures and crashed on the missing image.
2019-01-23 21:32:46 +01:00
alexey.lysiuk
141d5bdf3e - fixed compilation errors
src/scripting/decorate/thingdef_parse.cpp:80:11: error: no viable conversion from 'const FName' to 'FString'
src/scripting/zscript/zcc_compile.cpp:1359:26: error: use of undeclared identifier 'Name_globalfreeze'; did you mean 'NAME_globalfreeze'?

# Conflicts:
#	src/scripting/zscript/zcc_compile.cpp
2019-01-23 21:28:24 +01:00
Christoph Oelckers
7c3ec662e1 - ensure proper emission of deprecations.
For global variables this wasn't implemented.

# Conflicts:
#	src/namedef.h
#	src/scripting/backend/codegen.cpp
#	wadsrc/static/zscript/base.txt
2019-01-23 21:27:20 +01:00
alexey.lysiuk
21eb23ad15 - relaxed caller type check for states modified by Dehacked
https://forum.zdoom.org/viewtopic.php?t=63178
2019-01-23 21:23:17 +01:00
Magnus Norddahl
c8ba84dc33 - fix black cam texture on HUD
# Conflicts:
#	src/gl/renderer/gl_scene.cpp
2019-01-23 21:20:52 +01:00
Magnus Norddahl
d3205f46a8 - fix null pointer crash 2019-01-23 21:19:43 +01:00
alexey.lysiuk
7c0633a3e9 - fixed script line numbers after multi-line raw string literal
https://forum.zdoom.org/viewtopic.php?t=63210
2019-01-23 21:19:08 +01:00
Christoph Oelckers
f7489976ec - the sound compatibility flags do not need level support.
They are intentionally omitted from both MAPINFO and compatibility settings.
This removes the last place where it still went through the map-modified versions of the compatflags.

# Conflicts:
#	src/s_sound.cpp
2019-01-23 21:18:36 +01:00
Marrub
ad5c62da95 Make LevelLocals::ExecuteSpecial return int 2019-01-23 21:15:25 +01:00
alexey.lysiuk
21531c5ddb - unary minus operator propagates boolean operand to integer
https://forum.zdoom.org/viewtopic.php?t=63214
2019-01-23 21:14:29 +01:00
Christoph Oelckers
4126f8ce72 - made OP_NEW a builtin function instead of an opcode.
The code was present 3 times due to the JIt, and this is not something that benefits from being a real opcode, even in the interpreted case.
2019-01-23 21:12:23 +01:00
Marrub
cc73449d29 Fix return value of native BuiltinCallLineSpecial 2019-01-23 21:09:34 +01:00