Commit graph

15086 commits

Author SHA1 Message Date
Christoph Oelckers
95e62e91bb - split the FFont base class into its own file. 2019-02-17 13:50:57 +01:00
Christoph Oelckers
0963156c0a - did a bit of fine tuning to the character replacement mappings:
* prefer accent-less lower case over uppercase letters if an accented lower case letter cannot be found.
* added accent-less mappings for Latin Extended 1 (0x100-0x17f) and some easy to handle characters between 0x200 and 0x220. This should allow to display all Eastern European text without empty gaps for missing letters.
2019-02-17 13:41:04 +01:00
Christoph Oelckers
9102fb86a5 - moved FSpecialFont to its own file. 2019-02-17 12:53:12 +01:00
Christoph Oelckers
1f0c01459a - split FSinglePicFont into its own file. 2019-02-17 12:29:08 +01:00
Christoph Oelckers
7f1f25d998 - split the FSingleLumpFont class into its own file. 2019-02-17 12:00:04 +01:00
Christoph Oelckers
9dfffb6697 - moved font code into a subdirectory. 2019-02-17 11:43:04 +01:00
Christoph Oelckers
78d0fa9269 - fixed Windows startup.
* the window class name was still ASCII, thanks to some totally pointless and ultimately dangerous type cast to LPCTSTR which rendered all type checks ineffective.
* use wWinMain instead of WinMain so that a Unicode argv gets created. For whatever reason, the ANSI startup leaves this variable empty.
* added a 'disablecrashlog' CCMD for Windows. It is a lot more useful with a debugger present to get the standard crash notification from the system which allows opening a debugger than the crash log and no option to open a debugger.
2019-02-17 10:10:41 +01:00
Christoph Oelckers
f512f29270 - fixed crash log display.
This still contained pieces where a multibyte string was passed through SendMessage and WM_SETTEXT. All these have been replaced with SetWindowTextW.
This commit also removes the never used crash log upload code and all associated assets because it is extremely unlikely that such a feature will ever be implemented.
2019-02-17 08:50:49 +01:00
Christoph Oelckers
d39a624942 - fixed the player name display.
This was broken by several small unicode-incompatible code fragments.
This commit also removes the input limit for the player name and the savegame description. With multibyte encoding, limiting them to a fixed length did not work right.
Currently these will just overflow the fields if the text becomes too long, this needs some additional work.
2019-02-16 22:57:02 +01:00
Christoph Oelckers
deb233677e - made the menu's text input handler Unicode capable.
Also make sure that the savegame description remains readable. Unlike in-game text this can be done without double-encoding existing UTF-8.
2019-02-16 21:29:46 +01:00
Christoph Oelckers
54cb16ad8e - made the chat input Unicode-capable.
Also changed this to use the console font because it is far better equipped with special characters than the small font.
2019-02-16 18:49:38 +01:00
Christoph Oelckers
d15e3391a0 Merge remote-tracking branch 'remotes/origin/master' into localization
# Conflicts:
#	src/v_font.cpp
2019-02-16 17:35:15 +01:00
Major Cooke
32e65ff11d Pass the target as the source for active damage modifiers (i.e. PowerDamage) instead of the actual source.
- Getting the victim would be impossible otherwise, and passing in the original source is redundant when there's already the owner.
2019-02-16 17:26:21 +01:00
alexey.lysiuk
3864ed78e0 - fixed: offsets got lost in font's translated textures
https://forum.zdoom.org/viewtopic.php?t=63667
2019-02-16 17:26:02 +01:00
Rachael Alexanderson
35e2d40641 Squashed commit of the following:
- Implement page string names for dialog lumps
    - Create special new GZDoom name space for ZSDF
    - add usdf_gzdoom spec document
    - fixed: restored original behavior with negative conversation id's for the original strife dialog lumps
    - reposition the binary strife fix in a more appropriate location
    - add compatibility fix for negative numbers in responses in USDF/ZSDF (don't know if it's actually necessary)
2019-02-16 17:25:23 +01:00
Robert Cochran
07e0323771 Add handling of left and right mousewheel events to the SDL2 input path 2019-02-16 17:23:14 +01:00
Rachael Alexanderson
0fc4640cc9 - fix building in 32 bit windows 2019-02-16 11:12:10 -05:00
Rachael Alexanderson
9f62289507 Merge branch 'master' of https://github.com/coelckers/gzdoom into localization 2019-02-16 10:50:49 -05:00
Christoph Oelckers
64685705d0 - made the console Unicode-capable.
This also necessitated some character remapping in the console font to move the Windows-1252 extra characters to their proper Unicode code points.
2019-02-16 13:05:19 +01:00
Christoph Oelckers
8018ebfab5 - use the Unicode version of Windows's clipboard functions. 2019-02-16 09:50:00 +01:00
Christoph Oelckers
b4d96aaef9 - made Windows backend parts of the console Unicode capable. 2019-02-15 22:05:26 +01:00
Major Cooke
823eb90af8 - Fixed monsters waking up even if all the damage was absorbed without pain causing flags
- Fixed FORCEPAIN not overriding PainThreshold property
2019-02-15 18:57:34 +01:00
alexey.lysiuk
769be00483 - fixed automap marks placement with custom fonts
Automap rotation wasn't taken into account when drawing marks

https://forum.zdoom.org/viewtopic.php?t=63693
2019-02-15 17:21:59 +02:00
Christoph Oelckers
9fba9eee18 Merge branch 'localization' of https://github.com/coelckers/gzdoom into localization 2019-02-15 10:20:14 +01:00
Christoph Oelckers
c49665684b - fixed DHudMessageTypeOnFadeOut's character counter to be UTF-8 compatible.
This was reading the string by byte and not by character and could end up printing incomplete UTF-8 data.
2019-02-15 08:52:56 +01:00
Christoph Oelckers
340d7bce8d - added some character counting utilities to FString. 2019-02-15 08:51:41 +01:00
Christoph Oelckers
868ac5adf8 - switched the Windows backend to use the Windows Unicode API.
With localization for non-Latin languages on the support list the multibyte API doesn't cut it anymore. It neither can handle system text output outside the local code page nor can an ANSI window receive text input outside its own code page.
Similar problems exist for file names. With the multibyte API it is impossible to handle any file containing characters outside the active local code page.

So as of now, everything that may pass along some Unicode text will use the Unicode API with some text conversion functions. The only places where calls to the multibyte API were left are those where known string literals are passed or where the information is not used for anything but comparing it to other return values from the same API.
2019-02-14 22:23:33 +01:00
Christoph Oelckers
5f574033b5 pass full Unicode characters to EV_GUI_Char for Linux and macOS.
The Linux backend looked like it didn't handle anything non-ASCII at all, but this all needs to be tested.
Windows will be a bit more work because it requires using the Unicode API for creating the main window.
2019-02-14 14:29:49 +01:00
Rachael Alexanderson
0d2a24876b - Remove "gitversion.h" from "version.h" - should result in faster compiles after a commit in Windows
- Fix zdoom.rc to show the actual git commit tag and id for the Product Version
- Made zdoom.rc "codepage 1252" compliant as dictated by the #pragma (if this needs changed the pragma should be updated, this was messing up the version strings in the final compile)
2019-02-13 21:34:44 -05:00
alexey.lysiuk
be6ce43045 - added ability to customize font of automap marks
Set am_markfont CVAR to a desired font name
Use am_markcolor to select a text color, has no effect with the default font, AMMNUMx
2019-02-13 21:47:53 +01:00
Christoph Oelckers
8efc3188b9 - fixed map name setup
This was broken when localization for Hexen was added.
2019-02-13 00:47:03 +01:00
Christoph Oelckers
ef050d700c - Fixed loading of folder based fonts and added a config lump per font.
This is done by putting a font.inf file into the folder.
Current options are "Kerning", "Scale", "FontHeight" and "SpaceWidth"
2019-02-13 00:02:39 +01:00
Christoph Oelckers
e526cebc8e Merge remote-tracking branch 'origin/master' into localization 2019-02-12 00:20:00 +01:00
Christoph Oelckers
0b8fb3ac1a - cleanup of font init to have less special cases
To make things easier, DBIGFONT, SBIGFONT and HBIGFONT will now be renamed in the lump directory to make things a bit easier to handle.

Another change is to make font folders atomic units to prevent cross-pollution between incompatible fonts. The only exception to this are the def* folders because they need to piece together their fonts from both zd_extra.pk3 and the IWADs.
2019-02-12 00:19:44 +01:00
alexey.lysiuk
d4d010ac32 - added compatibility flag for buggy CheckSwitchRange behavior
https://forum.zdoom.org/viewtopic.php?t=63008
https://forum.zdoom.org/viewtopic.php?t=63650
2019-02-11 17:57:03 +01:00
Christoph Oelckers
fe981c68d3 - changed font loader to detect fonts in folders and to find all default fonts in folders. 2019-02-11 01:58:51 +01:00
Christoph Oelckers
e4690b4cd8 - exported all Hexen map names and intermission texts to the language table.
As IWAD content this is in zd_extra.pk3.
2019-02-11 01:33:09 +01:00
Christoph Oelckers
6d19374ae8 Only replace Strife dialogue content if the default strings from zd_extra.pk3 are present.
If not, use the dialogue file's content directly.
2019-02-11 00:46:13 +01:00
Christoph Oelckers
af5a2fe522 - removed the ActiveSequences counter.
It was only used to avoid traversing the list if all sequences were paused which is an exceptional situation.
On the other hand, the way it counted was not correct so rather than fixing it it seemed more appropriate to remove it entirely.
2019-02-10 20:30:40 +01:00
Christoph Oelckers
5e6a96d021 - fixed path of texture directory. 2019-02-10 14:08:27 +01:00
Christoph Oelckers
993a16787c - removed the special exception for those weird "No..." messages and moved the only one that isn't garbage to the language lump. 2019-02-10 09:59:05 +01:00
Christoph Oelckers
e57b16b9e7 - exported the character names of Strife's dialogues. 2019-02-09 13:15:30 +01:00
Christoph Oelckers
b1820039d7 - exported Strife's log texts to the string table.
This is dpne as a two-stage approach. TXT_LOGTEXTxxx will always take precedence over the log lumps, and TXT_ILOGxxx will only replace the original IWAD content.
This is so that PWADs replacing these lumps don't get overridden by the default texts.
2019-02-09 12:52:50 +01:00
Christoph Oelckers
88e227f1f3 Merge branch 'new_level_refactor' into localization 2019-02-09 12:22:15 +01:00
Christoph Oelckers
59954fa4f9 - fixed accidentally duplicated variable name in ChangeLevel function. 2019-02-09 12:07:30 +01:00
Christoph Oelckers
4642df3052 - fixed dropoff checks for portals and 3D floors in the same sector. 2019-02-09 10:39:08 +01:00
Christoph Oelckers
3d3f260137 - exported LevelLocals's compatibility flags to scripting and fixed all places where access to combined compatibility flags is needed. 2019-02-09 09:17:57 +01:00
Christoph Oelckers
8a28134254 Merge remote-tracking branch 'remotes/origin/master' into new_level_refactor 2019-02-09 08:47:07 +01:00
Christoph Oelckers
a5feff7aa0 - fixed: The level's local event manager wasn't fully taken down when freeing the level's data. 2019-02-09 08:46:48 +01:00
Major Cooke
acc510dfb3 Added inflictor, source and flag parameters to GetModifiedDamage on actors and ModifyDamage on inventory.
- The flags are used by DamageMobj so modders can determine radius damage, for example, by checking for DMG_EXPLOSION.
2019-02-08 20:07:49 +01:00
Major Cooke
1b97bae307 Added Z + camera roll relativity for A_QuakeEx's QF_RELATIVE flag. 2019-02-08 20:07:27 +01:00
Christoph Oelckers
449610496f - fixed: 'level.frozen' still needs to be writable and have an effect. 2019-02-08 20:04:45 +01:00
Christoph Oelckers
584dae85f4 - fixed: LEVEL_USEPLAYERSTARTZ was checked on the wrong variable. 2019-02-08 19:58:15 +01:00
Christoph Oelckers
0b2494f9ca - fixed: The global viewpoint's Level member was accessed before it was set.
All affected code needs to get a Level parameter passed in through its arguments.
2019-02-08 13:12:46 +01:00
Christoph Oelckers
bd1f5d9750 - start the HUD message ticker at -1 to compensate for the additional tick they now receive due to the change at which time the status bar gets ticked. 2019-02-08 08:58:16 +01:00
Christoph Oelckers
bcc1aa95b2 - fixed: ACS calls need to explicitly pass the level into COPY_AAPTR.
Unlike from an action function, this can be called with a null actor, which for the player constants still needs to return something valid.
2019-02-07 15:41:35 +01:00
Christoph Oelckers
c0bbb4fd0d - fixed lowercase handling of non-basic-latin characters and added Undead's Russian translation.
The added table may be overkill but this way the font engine is prepared for things to come.
Currently the text placement in the menu seems a bit broken, that's a task for later.
2019-02-07 13:49:54 +01:00
Christoph Oelckers
4d2bb11317 - reworked font loader to make adding multi-lump fonts easier.
A multi-lump font can be created by putting all characters into a subdirectory of fonts/ with the intended name. Each character needs to be named by its character index as hex number.
So far this is only active for the predefined small fonts
2019-02-07 13:12:39 +01:00
Christoph Oelckers
eec53a6670 - print more meaningful info in countdecals CCMD. 2019-02-07 09:39:37 +01:00
Christoph Oelckers
4cdbc99877 - fixed creation of phased light sequences. 2019-02-07 09:39:36 +01:00
Christoph Oelckers
9dec214c15 - properly un-count faded out decals without involving the Destroy method. 2019-02-07 09:39:36 +01:00
Christoph Oelckers
97e3e858a1 - re-count impact decals each time a savegame is loaded.
This counter is not always reliable, especially when running for longer periods, so putting it in a savegame is not a good idea.
2019-02-07 09:39:36 +01:00
Rachael Alexanderson
4f0850b098 Merge remote-tracking branch 'origin/new_level_refactor' into HEAD 2019-02-06 10:30:27 -05:00
Christoph Oelckers
74d34f6171 - fixed typo in ExitPic display.
It read the EnterPic instead.
2019-02-06 15:40:49 +01:00
Christoph Oelckers
f38060d01b - fixed: The static event manager never got a link to the primary level. 2019-02-06 15:40:49 +01:00
Rachael Alexanderson
0590de3be2 Merge remote-tracking branch 'origin/new_level_refactor' into HEAD 2019-02-06 08:05:45 -05:00
Rachael Alexanderson
20a9587bb7 Merge remote-tracking branch 'origin/master' into HEAD 2019-02-06 08:05:38 -05:00
Christoph Oelckers
495298079b - rewrote the language table so that it doesn't have to reload everything on a language change.
It now reads everything into a two-dimensional TMap and creates a list of mappings that apply to the current setting.
The constant need for reloading was the main blocker in redesigning how Dehacked strings get inserted. Currently they override everything, but IWAD-based Dehacked text shouldn't block PWAD overrides from PWADs' LANGUAGE lumps and instead be treated as coming from an [en default] block.

This also renames the main block from [enu default] to [en default], because it should be treated as the English default for all English locales and not just make it fall through to the base default as it did before.
2019-02-06 13:59:41 +01:00
alexey.lysiuk
37a79470de - fixed compilation on POSIX targets
src/p_acs.cpp:3250:75: error: cannot pass object of non-trivial type 'FString' through variadic constructor; call will abort at runtime [-Wnon-pod-varargs]
src/p_conversation.cpp:354:56: error: cannot pass object of non-trivial type 'FString' through variadic constructor; call will abort at runtime [-Wnon-pod-varargs]
src/p_conversation.cpp:438:51: error: cannot pass object of non-trivial type 'FString' through variadic constructor; call will abort at runtime [-Wnon-pod-varargs]
src/p_conversation.cpp:548:58: error: cannot pass object of non-trivial type 'FString' through variadic constructor; call will abort at runtime [-Wnon-pod-varargs]
src/p_conversation.cpp:572:59: error: cannot pass object of non-trivial type 'FString' through variadic constructor; call will abort at runtime [-Wnon-pod-varargs]
src/p_conversation.cpp:584:58: error: cannot pass object of non-trivial type 'FString' through variadic constructor; call will abort at runtime [-Wnon-pod-varargs]
2019-02-06 12:22:05 +02:00
alexey.lysiuk
78c0b7f230 - changed type of Nop expression to void
Control flow statements with constant condition no longer cause misleading fatal errors in ZScript

https://forum.zdoom.org/viewtopic.php?t=63566
2019-02-06 12:09:14 +02:00
Christoph Oelckers
7fa3081581 - fixed some remaining issues with the interpolator.
Thanks to the lazy counter it used in its stat display I never noticed that the serializer was incomplete and that UnlinkFromMap did not call its super method.
After changing the counter to be actively counting on each call, all the other issues became immediately apparent.
2019-02-06 10:44:30 +01:00
Christoph Oelckers
6ae9df6a23 - removed an old comment that no longer applied to the code in question.
The interpolator had been changed long ago to use proper GC tracking, so interpolations only can get collected if they had been fully orphaned.
This comment was the main reason why the design flaw in this code never got fixed until recently.
2019-02-06 09:38:17 +01:00
Christoph Oelckers
c25e7897a7 - fixed bad default initialization of BoundingRect's coordinates. 2019-02-06 09:25:45 +01:00
Christoph Oelckers
5a2d6de296 - split up the OnDestroy method of interpolations.
It seems there can be rare conditions where an interpolation is 'lost' and later garbage collected. If that happens after the owning map is gone, all pointers in the interpolation object will be invalid and Destroy would crash while trying to unlink it. So anything that explicitly deletes an interpolation now has to manually unlink it from the map first so that OnDestroy can be kept clean of map references.
2019-02-05 18:34:02 +01:00
Christoph Oelckers
979f1df281 Merge remote-tracking branch 'remotes/origin/master' into new_level_refactor
# Conflicts:
#	src/g_level.cpp
#	src/p_user.cpp
2019-02-05 13:49:07 +01:00
Christoph Oelckers
0936a2fa19 - exported all texts from Strife's dialogues to the string table.
Now all this content can be localized. However, since this is actual game content it was placed in a secondary file in zd_extra.pk3, so that it won't affect the GPL-compatible status of the main one.
2019-02-05 13:39:38 +01:00
Christoph Oelckers
c0e4ef159b - fixed display of "Find help" text in Strife. Also moved this piece of code to a place where a real player exists. This was set at a point where the map wasn't loaded yet which caused a few problems. 2019-02-05 13:34:49 +01:00
alexey.lysiuk
69492b1e27 - fixed ambient sounds "leaking" into reverb environment
Set speed of sound to 343.3 and init scale to 1 according to @kcat suggestion

https://forum.zdoom.org/viewtopic.php?t=63185
https://forum.zdoom.org/viewtopic.php?t=63524
2019-02-05 13:13:52 +02:00
Christoph Oelckers
ce22f1db51 - fixed: SendPitchLimits is not playsim code so it cannot use the PlayerPawn for anything.
This really needs to operate solely on the static players array.
2019-02-05 11:54:29 +01:00
Christoph Oelckers
546d3d1bf5 - allow localization of Hexen's original ACS strings.
This way of looking up strings is intentionally limited to content from Hexen.wad and Hexdd.wad.
2019-02-05 11:51:19 +01:00
alexey.lysiuk
c026b991ae - do not print initial player's log text on loading of saved game 2019-02-05 12:00:16 +02:00
alexey.lysiuk
7a46d6e9cd - fixed output of localized player's log text to console 2019-02-05 11:56:20 +02:00
Christoph Oelckers
26acd564fb - restored order of destruction of interpolations and thinkers, which got accidentally reversed. 2019-02-04 16:27:57 +01:00
alexey.lysiuk
8892cb619d - disabled usage of intrinsics on non-Intel platforms 2019-02-04 15:53:41 +02:00
alexey.lysiuk
2765159fc6 - disabled VM JIT completely on unsuported platforms 2019-02-04 15:53:35 +02:00
Christoph Oelckers
e41c898817 Merge branch 'master' into new_level_refactor 2019-02-04 13:11:01 +01:00
Christoph Oelckers
496eba3acb - fix polyobject init 2019-02-04 13:10:53 +01:00
Christoph Oelckers
af9636b7c3 - fixed glitches with some poorly set up sector stack portals. 2019-02-04 13:08:30 +01:00
alexey.lysiuk
20f29ab808 - fixed erroneous removal of property flag members
https://forum.zdoom.org/viewtopic.php?t=63520
2019-02-03 12:33:06 +02:00
alexey.lysiuk
8137162ca0 - fixes compilation of POSIX targets
src/posix/cocoa/i_input.mm:95:22: error: use of undeclared identifier 'E_CheckUiProcessors'
src/posix/cocoa/i_input.mm:200:21: error: use of undeclared identifier 'E_CheckRequireMouse'
src/posix/sdl/i_input.cpp:183:19: error: use of undeclared identifier 'E_CheckUiProcessors'
src/events.cpp:540:1: error: pasting formed '::RenderFrame', an invalid preprocessing token
src/events.cpp:541:1: error: pasting formed '::WorldLightning', an invalid preprocessing token
src/events.cpp:542:1: error: pasting formed '::WorldTick', an invalid preprocessing token
src/events.cpp:543:1: error: pasting formed '::UiTick', an invalid preprocessing token
src/events.cpp:544:1: error: pasting formed '::PostUiTick', an invalid preprocessing token
2019-02-03 11:19:17 +02:00
Christoph Oelckers
53162a8a5c Merge branch 'master' into new_level_refactor
# Conflicts:
#	src/am_map.cpp
2019-02-03 09:20:13 +01:00
Christoph Oelckers
2fd1276d28 - fixed: Instead of mapping Hexen's BLANK texture to the null texture, make its actual use type that of a null texture.
The software renderer does not have any safeguards against such a mapping and crashes on it.
This code was a quick hack from ancient times from when ZDoom did not have robust texture management and some recent changes ran afoul of this very special exception.
2019-02-03 08:59:37 +01:00
Christoph Oelckers
2cff43ba90 - fixed: The HUD model code did not account for placeholder sprites. 2019-02-03 08:23:18 +01:00
Alexander
03a2b9dc2e added am_showkeys_always 2019-02-02 17:54:00 +01:00
Christoph Oelckers
9f7fe203fc - had to fix a few things. 2019-02-02 17:29:13 +01:00
Christoph Oelckers
1dbbb56a1b Merge branch 'master' into new_level_refactor
# Conflicts:
#	src/p_user.cpp
2019-02-02 16:58:30 +01:00
Christoph Oelckers
235c4c0499 - allow localization of Strife's log text. 2019-02-02 16:56:58 +01:00
Christoph Oelckers
64476cde7e - fixed: Retriving a key's color did not work. 2019-02-02 16:52:28 +01:00
Christoph Oelckers
66eb4e5048 - separation of static and map-local event handlers into separate lists.
Having everything lumped together made this a maintenance hassle because it affected how the level has to be stored.
This hasn't been tested yet, so it may not work as intended!
2019-02-02 16:43:11 +01:00
Christoph Oelckers
d005e0b483 - changed the place where the CheckRequireMouse event gets called.
The original place in I_CheckNativeMouse is unsafe because that function can get called from the system message queue which can result in a bad global state of the VM for such a call because it can be recursively invoked from code that may temporarily alter some settings.
2019-02-02 11:00:26 +01:00
Nemrtvi
fa53ae21e6 Localized “FIND HELP” in Strife
The very first quest log that appears in Strife, “FIND HELP”, is located in a source file. This moves it to the language files.
2019-02-02 10:57:14 +01:00
Christoph Oelckers
484485f3cf - made the event manager an object so it can be instantiated multiple times. 2019-02-02 10:46:34 +01:00
Christoph Oelckers
8d83f03138 - changed the linedef translator into a struct and reorganized its storage to allow having different ones at the same time.
This was the last piece of data that couldn't be distinct for more than one level.
2019-02-02 01:22:12 +01:00
Christoph Oelckers
45dc9a7b47 - renamed the level variables.
currentUILevel is now primaryLevel.
For ZScript, currentVMLevel was added. This is also exported as 'level' and will change as needed.
This also means that no breaking deprecations will be needed in the future, because in order to sandbox a level only 4 variables need to be handled: level, players, playeringame and consoleplayer.
The remaining global variables are not relevant for the level state.

The static 'level' has been mostly removed from the code except some places that still need work.
2019-02-02 00:25:51 +01:00
Christoph Oelckers
6c006a5fbd - added the missing Level parameters to AActor::StaticSpawn and P_ExecuteSpecial.
I think these were the last two still missing it, all remaining uses of the global level variable are in code that doesn't get run through a level tick and are supposed to access the primary level.
2019-02-01 22:02:16 +01:00
Christoph Oelckers
bf665961cc - moved KEYCONF_only CCMDs out of play files. 2019-02-01 21:19:16 +01:00
Christoph Oelckers
32e5be83ea - moved a few more files and copied the data related parts of p_things.cpp to g_doomedmap.cpp 2019-02-01 19:48:17 +01:00
Christoph Oelckers
a1cc548af4 - moved some more code into the gamedata folder.
Two files were split:

g_level.h contained both the game data definitions and some prototypes belonging to the game logic. These were split up.
decallib.cpp contained both the data and the animation thinkers. The thinkers are now in their own file.
2019-02-01 19:20:58 +01:00
Christoph Oelckers
db77ed79cd - moved the resourcefiles and textures folders into gamedata. 2019-02-01 18:31:57 +01:00
Christoph Oelckers
c1e1284b52 - moved the CCMDs out of a_pickups.cpp. 2019-02-01 18:15:49 +01:00
Christoph Oelckers
3f90764faa - moved the contents of g_inventory to g_shared and gamedata subfolders.
a_pickups only contains a few native remains of the inventory code and the other two only the static data maintenance for their items.
2019-02-01 18:13:12 +01:00
Christoph Oelckers
edb34b9f7f Merge remote-tracking branch 'remotes/origin/master' into new_level_refactor 2019-02-01 17:59:25 +01:00
alexey.lysiuk
5e9001e7bc - fixed potentially incomplete list of argument flags for virtual function
https://forum.zdoom.org/viewtopic.php?t=63450
2019-02-01 17:58:06 +01:00
Christoph Oelckers
202f3d7d80 - changed most places where a player index is calculated by subtracting the player array's base access. 2019-02-01 17:31:11 +01:00
Christoph Oelckers
d358e401ee - removed all access to the consoleplayer variable from the play code
There is one exception in ACS for a net arbitrator check.
Aside from this the bot_observer CVAR was also removed. This was never implemented properly and could stomp upon custom player settings.
2019-02-01 17:02:10 +01:00
Christoph Oelckers
2903025268 - a few minor fixes. 2019-02-01 12:31:08 +01:00
Christoph Oelckers
de24fc2c88 - do not call renderer code directly to reset the view interpolation
The playsim really has no idea what the renderer is supposed to do here and the current system has some serious issues that eventually need addressing. So it is better to just set a flag that an actor needs to have its view interpolation reset if being used as a camera and let the render code deal with it.

This will keep the playsim clean of future changes to this feature.
2019-02-01 12:03:36 +01:00
alexey.lysiuk
5278274acf - fixed compilation errors with POSIX targets
src/posix/cocoa/i_video.mm:559:2: error: use of undeclared identifier 'atterm'
src/posix/sdl/hardware.cpp:85:28: error: ‘atterm’ was not declared in this scope
src/posix/sdl/i_input.cpp:261:10: error: ‘gamestate’ was not declared in this scope
src/posix/sdl/i_input.cpp:261:23: error: ‘GS_LEVEL’ was not declared in this scope
src/posix/sdl/i_input.cpp:263:48: error: ‘GS_INTERMISSION’ was not declared in this scope
src/posix/sdl/i_input.cpp:263:80: error: ‘GS_FINALE’ was not declared in this scope
src/posix/sdl/i_system.cpp:115:25: error: ‘atterm’ was not declared in this scope
src/posix/sdl/i_system.cpp:372:30: error: invalid use of incomplete type ‘const struct dirent’
src/posix/sdl/i_system.cpp:375:42: error: ‘findstate_t’ has not been declared
src/posix/sdl/i_system.cpp:391:12: error: request for member ‘current’ in ‘* fileinfo’, which is of non-class type ‘int’
src/posix/sdl/i_system.cpp:392:12: error: request for member ‘count’ in ‘* fileinfo’, which is of non-class type ‘int’
src/posix/sdl/i_system.cpp:392:56: error: request for member ‘namelist’ in ‘* fileinfo’, which is of non-class type ‘int’
src/posix/sdl/i_system.cpp:393:22: error: ‘alphasort’ was not declared in this scope
src/posix/sdl/i_system.cpp:393:31: error: ‘scandir’ was not declared in this scope
src/posix/sdl/i_system.cpp:394:16: error: request for member ‘count’ in ‘* fileinfo’, which is of non-class type ‘int’
src/posix/sdl/i_system.cpp:401:31: error: ‘findstate_t’ has not been declared
src/posix/sdl/i_system.cpp:403:2: error: ‘findstate_t’ was not declared in this scope
src/posix/sdl/i_system.cpp:403:15: error: ‘state’ was not declared in this scope
src/posix/sdl/i_system.cpp:403:37: error: expected primary-expression before ‘)’ token
src/posix/sdl/i_system.cpp:404:33: error: request for member ‘count’ in ‘* fileinfo’, which is of non-class type ‘int’
src/posix/sdl/i_system.cpp:406:39: error: request for member ‘count’ in ‘* fileinfo’, which is of non-class type ‘int’
src/posix/sdl/i_system.cpp:413:2: error: ‘findstate_t’ was not declared in this scope
src/posix/sdl/i_system.cpp:413:15: error: ‘state’ was not declared in this scope
src/posix/sdl/i_system.cpp:413:37: error: expected primary-expression before ‘)’ token
src/posix/sdl/i_system.cpp:425:16: error: ‘findstate_t’ was not declared in this scope
src/posix/sdl/i_system.cpp:425:29: error: expected primary-expression before ‘const’
src/posix/sdl/i_system.cpp:426:1: error: expected ‘,’ or ‘;’ before ‘{’ token
src/posix/sdl/i_main.cpp:160:6: error: ‘gamestate’ was not declared in this scope
src/posix/sdl/i_main.cpp:160:19: error: ‘GS_LEVEL’ was not declared in this scope
src/posix/sdl/i_main.cpp:160:44: error: ‘GS_TITLELEVEL’ was not declared in this scope
src/posix/sdl/i_main.cpp:217:18: error: ‘atterm’ was not declared in this scope
src/posix/sdl/i_main.cpp:242:11: error: ‘I_Quit’ was not declared in this scope
src/gameconfigfile.cpp:126:27: error: ‘SHARE_DIR’ was not declared in this scope
src/scripting/decorate/thingdef_parse.cpp:929:2: error: use of undeclared identifier 'strlwr'; did you mean 'strlen'?
src/scripting/decorate/thingdef_parse.cpp:937:3: error: use of undeclared identifier 'strlwr'; did you mean 'strlen'?
src/scripting/decorate/thingdef_states.cpp:564:2: error: use of undeclared identifier 'strlwr'; did you mean 'strlen'?
src/scripting/vm/jit_runtime.cpp:957:2: error: ‘unique_ptr’ is not a member of ‘std’
src/scripting/vm/jit_runtime.cpp:957:38: error: expected primary-expression before ‘>’ token
src/scripting/vm/jit_runtime.cpp:957:40: error: ‘nativeSymbols’ was not declared in this scope
src/utility/cmdlib.cpp:962:2: error: ‘DIR’ was not declared in this scope
src/utility/cmdlib.cpp:962:7: error: ‘directory’ was not declared in this scope
src/utility/cmdlib.cpp:962:34: error: ‘opendir’ was not declared in this scope
src/utility/cmdlib.cpp:967:33: error: ‘readdir’ was not declared in this scope
src/utility/cmdlib.cpp:969:10: error: invalid use of incomplete type ‘struct ScanDirectory(TArray<FFileList>&, const char*)::dirent’
src/utility/cmdlib.cpp:973:34: error: invalid use of incomplete type ‘struct ScanDirectory(TArray<FFileList>&, const char*)::dirent’
src/utility/cmdlib.cpp:985:20: error: ‘closedir’ was not declared in this scope
2019-02-01 11:08:58 +02:00
alexey.lysiuk
e400137ffe - fixed compilation of Windows Debug targets
src\sound\mididevices\music_opl_mididevice.cpp(112): error C3861: 'I_DebugPrint': identifier not found
src\sound\mididevices\music_opl_mididevice.cpp(206): error C3861: 'I_DebugPrint': identifier not found
src\sound\mididevices\music_opl_mididevice.cpp(234): error C3861: 'I_DebugPrint': identifier not found
src\sound\mididevices\music_opl_mididevice.cpp(244): error C3861: 'I_DebugPrint': identifier not found
2019-02-01 10:09:36 +02:00
Christoph Oelckers
ba451b46c8 - moved a bunch of files to the utility folder. 2019-02-01 01:18:32 +01:00
Christoph Oelckers
b77e83e0b9 - moved 15 more files to g_shared. 2019-02-01 00:48:21 +01:00
Christoph Oelckers
e3eaa5964d - removed v_video.h include from portals.h
This has no business in a play related file which also made no use of it.
2019-02-01 00:30:21 +01:00
Christoph Oelckers
18fb7fdd81 - moved some diagnostic CCMDs to g_dumpinfo.cpp. 2019-02-01 00:14:31 +01:00
Christoph Oelckers
5010e61309 - moved a few more play files free of global state references to g_shared. 2019-01-31 22:31:41 +01:00
Christoph Oelckers
65c2c318fb - prettification of p_teleport.cpp and some include cleanup. 2019-01-31 22:22:39 +01:00
Christoph Oelckers
ff903da19a Merge remote-tracking branch 'remotes/origin/master' into new_level_refactor 2019-01-31 20:43:24 +01:00
Christoph Oelckers
b40c709b66 - minor corrections. 2019-01-31 20:42:36 +01:00
Christoph Oelckers
7241072b16 - moved most utility code to a subdirectory.
Again no code changes.
2019-01-31 20:33:52 +01:00
Christoph Oelckers
89d607c9a6 - moved all rendering code into a common subdirectory.
No changes to the files themselves was made.
2019-01-31 19:58:17 +01:00
Christoph Oelckers
c77487dab8 - moved the menu.h include from oalsound.h to oalsound.cpp.
The menu is a very 'dirty' header, and forcing it to be pulled in with something entirely unrelated is not good - even though only two files include oalsound.h.
2019-01-31 19:44:04 +01:00
Christoph Oelckers
f6a91e1722 - moved the I_Error prototypes to doomerrors.h to avoid having to include the low level system header for this. 2019-01-31 19:38:04 +01:00
Major Cooke
b1c508fa6c Added CheckReplacee.
- Allows defining of what actor is replacing another for information.
- If multiple arachnotrons, a modder can attribute them as being a replacer of Arachnotron itself, allowing A_BossDeath and GetReplacee to work with it.
2019-01-31 19:05:44 +01:00
Christoph Oelckers
1dcdfec733 - Unload behavior with the map, not outside. 2019-01-31 17:58:18 +01:00
Christoph Oelckers
7b7334e245 - only activate lights if the light actor isn't dormant, and only create a new one if it doesn't already have one.
-
2019-01-31 09:01:02 +01:00
Christoph Oelckers
ddab2c3e78 - removed the playernum parameter from CheckLocalView
This was always used with 'consoleplayer' which really is the only thing making sense here. But this is a part of the global state which should be avoided in play code.

In particular, this makes no real sense in case of secondary maps where it should always return false.
2019-01-31 03:29:25 +01:00
Christoph Oelckers
7149d1d312 - added missing includes 2019-01-31 03:25:49 +01:00
Christoph Oelckers
0a781b9bbb - fixed: DInterpolation was unlinking itself from the wrong interpolator
The global one was just a leftover, the real one is on the current level.
2019-01-31 03:25:26 +01:00
Christoph Oelckers
65f3fec283 - copied a few more map information CCMDs to g_ccmd. 2019-01-31 03:03:56 +01:00
Christoph Oelckers
aa340145ac - moved the remaining thinker code to g_shared 2019-01-31 02:51:07 +01:00
Christoph Oelckers
4984bc8c5f - prettification of a few files 2019-01-31 02:50:12 +01:00
Christoph Oelckers
65a812e316 - moved the door thinkers into g_shared. 2019-01-31 02:38:39 +01:00
Christoph Oelckers
77f8dfeabf - fixed g_dumpinfo.cpp's includes 2019-01-31 02:38:23 +01:00
Christoph Oelckers
51581d018a - moved the hud message and alt hud code from g_shared to g_statusbar
This is where it really belongs, this was simply overlooked when the folder was split.
2019-01-31 02:31:57 +01:00
Christoph Oelckers
25d5b788f5 - reviewed and sorted out the remaining parts of g_shared 2019-01-31 02:27:54 +01:00
Christoph Oelckers
0b4862480e - fixed macOS compilation. 2019-01-31 02:05:33 +01:00
Christoph Oelckers
0f2938089d - started cleaning up the contents of the g_shared directory, starting with a_dynlight.cpp
This is supposed to be come the place where all pure play code should be placed, but for that all CVARs and CCMDs and other things that do not directly handle play data should be taken out to make code reviewing easier. These now get collected in two separate files, g_cvars.cpp and g_dumpinfo.cpp respectively.
The sole ZScript property in here has also been moved - to thingdef_properties.cpp.
2019-01-31 02:05:16 +01:00
Christoph Oelckers
18b8a03f05 - cleaned up the header list in maploader.cpp. 2019-01-31 01:23:06 +01:00
Christoph Oelckers
fa3312e2a9 - moved gamestate_t to g_game.h.
This made reviewing the code for accessing the global state hard, because the doomdef.h contains mainly constants, this particular item was the only thing in there that represents actual engine state.
2019-01-31 00:28:43 +01:00
Christoph Oelckers
c18a0e7736 - replaced DWORD_MAX with UINT_MAX globally.
This was the last remnant of ZDoom's old integer types.
2019-01-30 22:34:11 +01:00
Christoph Oelckers
0eb3b2abca Merge branch 'master' into new_level_refactor 2019-01-30 22:03:21 +01:00
Christoph Oelckers
a2065cae4b - fixed: RecreateAllAttachedLights must activate the lights it creates.
This also removes the gl_attachedlights CVAR because with the new management this doesn't really work anymore.
2019-01-30 20:21:00 +01:00
Christoph Oelckers
64ac6dbc6e - moved thinker storage into FLevelLocals. 2019-01-30 19:09:21 +01:00
Christoph Oelckers
99d63faea9 - fixed bad merge of dobjgc.cpp 2019-01-30 18:22:37 +01:00
Christoph Oelckers
3b4ded5694 - refactored the thinker list.
This was an unorganized set of static members in DThinker but has now been regrouped into something more structured.
2019-01-30 02:15:48 +01:00
Christoph Oelckers
e30f116faf - moved bglobal into FLevelLocals
This is still all static data, only the location has changed, but none of the access.
2019-01-30 01:38:18 +01:00
Christoph Oelckers
8bbdee5c28 - redirect most references to the global players array through FLevelLocals.
The Map loader may not access any global state at all - everything it can touch must be exchangable.
Furthermore, if we want to sandbox each level, there may be no direct access to any kind of global state whatsoever from the play code.
2019-01-30 01:15:32 +01:00
Christoph Oelckers
c15212ca82 -fixed: The HUD model info was taken from the wrong player
It used the current console player's camera, not the actual camera being used for rendering. Although this is the same most of the time, let's better do it right.

This also removes a few leftover references to the player array elsewhwere in the hardware renderer
2019-01-30 01:04:30 +01:00
Christoph Oelckers
b12de04258 - fixed the remaining deprecation warnings in the base script.
All these required access to the sector's Level reference.
The remaining references to the global 'level' variable are all in deprecated functions which is ok.
2019-01-30 00:58:44 +01:00
Christoph Oelckers
3c0200de19 - run disconnect scripts on the level the disconnected player is on
This is nearly always the primary one but let's keep the option of using bots on secondary levels.
2019-01-30 00:47:34 +01:00
Christoph Oelckers
ebdb2643c4 - moved UDMF custom properties into FLevelLocals. 2019-01-30 00:47:20 +01:00
Christoph Oelckers
f410762695 - missed two lines. 2019-01-30 00:29:42 +01:00
Christoph Oelckers
78b7b64237 - replaced all TThinkerIterators except one that probably won't be relevant anymore as things progress. 2019-01-30 00:27:05 +01:00
Christoph Oelckers
4ad327d7e0 - moved G_ChangeLevel and other exit functions into FLevelLocals. 2019-01-29 23:45:14 +01:00
Christoph Oelckers
68fe5534a4 - moved the SectorMarker handling into the level itself. 2019-01-29 21:29:44 +01:00
Christoph Oelckers
ea849e5aca - split G_DoLoadLevel into a level specific and a global part. 2019-01-29 21:19:16 +01:00
Christoph Oelckers
12351ae9bb - made dumpportals CCMD multi-level aware. 2019-01-29 20:23:18 +01:00
Christoph Oelckers
1b37d85ac3 - removed a few missed references in FLevelLocals's member functions. 2019-01-29 20:15:06 +01:00
Christoph Oelckers
4af5ea25c1 - change per-level attenuation of dynamic lights for each viewpoint.
To avoid unnecessary work, the current state is tracked.
2019-01-29 20:09:06 +01:00
Christoph Oelckers
6451b7d592 - moved the combined compatibility flags into FLevelLocals. 2019-01-29 19:28:22 +01:00
Christoph Oelckers
d716a17b96 - compatibility variable handling 2019-01-29 17:41:50 +01:00
Christoph Oelckers
4cb3ce8196 - StartTravel and EndTravel 2019-01-29 16:11:23 +01:00
Christoph Oelckers
14101fa447 - health groups and software rendering textures freed of 'level'
Edited cherry-pick of an older commit.
2019-01-29 16:06:17 +01:00
Christoph Oelckers
eb5a39960e - missed a few references 2019-01-29 15:22:26 +01:00
Christoph Oelckers
3c565c9e86 - moved the static sky variables into FLevelLocals and removed the redundant ones for the texture ID. 2019-01-29 04:44:44 +01:00
Christoph Oelckers
06e5dd1d86 - Handle level in bot code 2019-01-29 04:27:21 +01:00
Christoph Oelckers
14971c8c3a - missed references in p_effect.cpp 2019-01-29 04:20:36 +01:00
Christoph Oelckers
d4ee52f606 - handle G_StartSlideshow 2019-01-29 04:17:58 +01:00
Christoph Oelckers
de1b89707d Handle level in block iterators.
The scripted interface isn't done yet.
2019-01-29 03:26:22 +01:00
Christoph Oelckers
7d3cd53c7e - handle the software renderer's GetColorTable function
The real question here should be: Why does this need to get called in over 40 differenrt locations…?
2019-01-29 03:15:42 +01:00
Christoph Oelckers
f823e57446 Handle level check in texture coordinate calculation 2019-01-29 02:51:06 +01:00
Christoph Oelckers
473892dede - changed all model related references to level. 2019-01-29 02:18:19 +01:00
Christoph Oelckers
8652f140f2 - fixed missing declaration 2019-01-29 02:17:25 +01:00
Christoph Oelckers
932bbee928 - fixed some warnings 2019-01-29 02:16:36 +01:00
Christoph Oelckers
1d748b72a8 Split G_DoCompleted into a global part and a level specific part. 2019-01-29 02:39:14 +01:00
Christoph Oelckers
87859b2950 - add Level parameter to G_LeavingHub 2019-01-29 02:08:53 +01:00
Christoph Oelckers
f9239f6e0f - added a compiler-side workaround for the formerly static methods of FLevelLocals.
LevelLocals on the left side of.a function call will now always be remapped to 'Level', which will either remap to the same-named instance variable or the global deprecated one.

In a few degenerate cases where there is a conflicting local variable named 'level' it may error out but that is unavoidable here but this is very unlikely.
2019-01-29 02:04:31 +01:00
Christoph Oelckers
60873bc5d6 Moved the PointInSector functions into FLevelLocals 2019-01-29 01:30:41 +01:00
Christoph Oelckers
68667e5eaa - moved particle storage into FLevelLocals.
- moved parts of the render setup out of the separate render functions.

Things like particle and polyobject linking were duplicated several times for rendering different things in different renderers.
These things only need to be set up once before the renderer is started so it makes a lot more sense to consolidate them into one place outside the actual rendering code.
2019-01-29 01:09:02 +01:00
Christoph Oelckers
50d59e99cb - moved sound sequence head of list into FLevelLocals. 2019-01-28 23:53:40 +01:00
Christoph Oelckers
623330f938 - initial adjustments for P_Ticker. 2019-01-28 22:33:50 +01:00
Christoph Oelckers
befacddab4 - removed level references in p_trace.cpp. Also added a null check to the sector pointer of the LineTracer Trace function because a null pointer here would crash. 2019-01-28 22:19:09 +01:00
Christoph Oelckers
6312c44234 - removed the remaining level references from p_acs.cpp. 2019-01-28 22:04:33 +01:00
Christoph Oelckers
259ae41774 - sanitized the 'frozen level' code.
This had two different flags that were checked totally inconsistently, and one was not even saved.
Moved everything into a few subfunctions so that these checks do not have to be scattered all over the code.
2019-01-28 20:15:48 +01:00
Christoph Oelckers
3c14a7db76 - use map time, not hub time for map actions. 2019-01-28 18:42:56 +01:00
Christoph Oelckers
3364988680 - moved the interpolator into FLevelLocals and refactored its use to happen outside the renderers.
There is no need to do this deep inside the renderer where it required code duplication and made it problematic to execute on multiple levels.
This is now being done before and after the top level call into the renderer in d_main.cpp.
This also serializes the interpolator itself to avoid problems with the Serialize functions adding the interpolations into the list which can only work with a single global instance.
2019-01-28 18:26:14 +01:00
Christoph Oelckers
6a43d6c7ff Merge remote-tracking branch 'origin/master' into new_level_refactor 2019-01-28 15:50:42 +01:00
Christoph Oelckers
44f622c644 - more XCode warnings fixed. 2019-01-28 15:41:52 +01:00
Christoph Oelckers
d1ca3ef994 - added braces as per XCode's suggestion. 2019-01-28 15:20:02 +01:00
Christoph Oelckers
1dc11c5032 - changed infighting check so that the static skill checker does not access the level
Instead the level needs to be queried now.
2019-01-28 14:31:23 +01:00
Christoph Oelckers
d0942bcb97 - moved FirstThinker function to FLevelLocals
Currently it is meaningless but that's where it should be later.
2019-01-28 14:06:19 +01:00
Christoph Oelckers
41e576bbb5 - removed the intermediate P_SpawnPlayer inline 2019-01-28 03:02:25 +01:00
Christoph Oelckers
66695ac6a0 - made most of the player spawn spot handliing functions members of FLevelLocals. 2019-01-28 02:44:05 +01:00
Christoph Oelckers
0ef0698d24 - use the proper level for setting up a hardware rendered scene.
The shader timer may be taken from the primary level for the entire scene, because it will always be the same for all levels in a set.
The camera textures need to be prepared for all levels.
2019-01-28 02:43:39 +01:00
Christoph Oelckers
d941dea005 - added a level iterator for operations that need to make changes to all open levels.
Since currently there is only one level, this will obvciously only run once on that level for the time being.

This is mainly used for CCMDs and CVARs which either print some diagnostics or change some user-settable configuration.
2019-01-28 02:41:29 +01:00
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