Commit graph

11351 commits

Author SHA1 Message Date
Magnus Norddahl
df8fa1274a - Oops, forgot to actually disable vid_glswfb in last commit 2017-04-12 03:22:38 +02:00
Magnus Norddahl
96834fa524 - Turn off vid_glswfb, gl_es on Linux ARM and stop saving it in the config file until it fully works 2017-04-12 03:21:43 +02:00
Christoph Oelckers
0e0eca0e0f - replaced some dyn_casts with calls to FindActor.
- fixed type checks in A_Morph.
2017-04-12 01:29:51 +02:00
Christoph Oelckers
e4d2380775 - moved all remaining fields from PClassActor to FActorInfo.
- added a few access functions for FActorInfo variables.

With PClassActor now empty the class descriptors can finally be converted back to static data outside the class hierarchy, like they were before the scripting merge, and untangle the game data from VM internals.
2017-04-12 00:07:41 +02:00
Christoph Oelckers
854053a14f - use TArrays instead of TMaps to store damage factors and pain chances.
For these fields maps have no advantage. Linearly searching a small array with up to 10 entries is nearly always faster than generating a hash for finding the entry in the map.
2017-04-11 23:29:37 +02:00
Christoph Oelckers
4afe2d4218 - moved OwnedStates and NumOwnedStates out of PClassActor. 2017-04-11 22:44:35 +02:00
Christoph Oelckers
05240ccbe5 - fixed redundant reallocation of constructable meta fields.
- some optimization of access to OwnedStates in old DECORATE.
- consolidate all places that print a state name into a subfunction.
- allocate states from the ClassDataAllocator memory arena. States do not need to be freed separately from the rest of the static class data.
2017-04-11 21:48:41 +02:00
Christoph Oelckers
311ce2362a - started moving stuff out of PClassActor into meta data.
This reinstates the old FActorInfo as part of the meta data a class can have so that the class descriptor itself can be freed from any data not directly relevant for managing the class's type information.
2017-04-11 19:37:56 +02:00
Christoph Oelckers
6a3ddaa8fa - moved Restricted/ForbiddenToPlayerClass fully to the script side.
This required some fixes for allowing to read from metadata arrays.
2017-04-11 15:11:13 +02:00
Christoph Oelckers
45691e91c9 - removed PClassActor::PointerSubstitution.
This is not needed anymore because classes do not need to be replaced. The only reason this was implemented was the original design with the class descriptors taking on all the metadata themselves.
2017-04-11 14:03:49 +02:00
Christoph Oelckers
1febf277af - fixed crash on bad PNGs.
The cast to a signed long could create negative numbers which failed the sanity check and caused a stack corruption.
2017-04-11 10:29:52 +02:00
Magnus Norddahl
f049e6145b - remove all usage of std::make_unique to keep things C++11 compliant 2017-04-11 01:25:44 +02:00
Magnus Norddahl
bdf02ea67c - move masked reads 2017-04-11 01:11:30 +02:00
Christoph Oelckers
7a6e70e777 - reenabled the part of OP_THROW that throws a VMAbortException. This part is still needed for a runtime variable access check. 2017-04-11 00:11:36 +02:00
alexey.lysiuk
4c1e03ebff Fixed alignment issue with GCC/Clang i386 build 2017-04-10 22:20:34 +03:00
alexey.lysiuk
d5edd3db36 Commented out remains of VM exception handling opcodes
This fixes build with GCC/Clang
2017-04-10 22:18:43 +03:00
Christoph Oelckers
040c70714c - commented out the exception handling opcodes in the VM.
They are currently not used and not planned to be used - and they are rather costly by increasing stack size per call quite significantly.
2017-04-10 20:41:55 +02:00
Christoph Oelckers
9ae97502be - removed the last remnants of the ATAGs. 2017-04-10 17:08:52 +02:00
Christoph Oelckers
60dd58e7d2 - most ATAG stuff is gone, except for the static storage space in the VMFunction. 2017-04-10 16:06:18 +02:00
Christoph Oelckers
5464336035 - removed ATAGs from the function builder. 2017-04-10 15:48:27 +02:00
Christoph Oelckers
e551ef52f8 - removed atag parameter from GetConstantAddress. 2017-04-10 15:39:04 +02:00
Christoph Oelckers
ef77cbd295 - stop using the ATAGs for checking pointer types in asserts.
This is an incredibly costly way to do a debug check as it infests the entire VM design from top to bottom. These tags are basically useless for anything else but validating object pointers being passed to native functions (i.e. mismatches between definition and declaration) and that simply does not justify a feature that costs execution time in non-debug builds and added memory overhead everywhere.
Note that this commit does not remove the tags, it only discontinues their use.
2017-04-10 15:18:31 +02:00
alexey.lysiuk
175e784b67 Fixed applying of powerup effects after (un)morph
https://mantis.zdoom.org/view.php?id=556
2017-04-10 15:46:30 +03:00
alexey.lysiuk
287a0933bd Fixed lookup of inventory and ammo types in FraggleScript
https://forum.zdoom.org/viewtopic.php?t=55950
2017-04-10 11:58:53 +03:00
Christoph Oelckers
e1698c6d41 - split P_PlayerThink into several smaller functions.
This is for a future script export where overriding the actions separately may be interesting.
2017-04-08 15:45:11 +02:00
Christoph Oelckers
18d6fb7f49 - fixed: USEACTORPITCH in the model code was still using inverted pitch. 2017-04-08 10:24:12 +02:00
Magnus Norddahl
9f180b29b9 - Remove GL_MAJOR_VERSION check for OpenGL ES as apparently not even this can be done right by driver writers 2017-04-08 00:19:39 +02:00
Rachael Alexanderson
3a36ffee35 - vid_glswfb is now true by default in Linux 2017-04-07 09:53:59 -04:00
Magnus Norddahl
73effc70bb - The legacy OpenGL path resets the GLSL version, which in turn makes #version 0 crash the AMD driver. Old stuff that uses the legacy path will not get glswfb acceleration. 2017-04-07 15:45:08 +02:00
Magnus Norddahl
35c35fc26f - Check if glCreateProgram or glCreateShader fails, because apparently AMD found a way to make exactly that happen 2017-04-07 15:27:04 +02:00
Rachael Alexanderson
b1e1f25218 - detect gl es shaders and request them 2017-04-06 23:34:50 -04:00
Magnus Norddahl
85a9984807 - Add OpenGL ES 3 support to GL renderer 2017-04-06 23:34:42 -04:00
Magnus Norddahl
b7482e10e2 - Detect dinosaur OpenGL and refuse to use it 2017-04-06 23:34:37 -04:00
Magnus Norddahl
e690de25a8 - Use SDL_GL_GetProcAddress on platforms where the SDL is being used. Since SDL initialized OpenGL for us, it is the only reliable way of retrieving proc addresses.
- Check if ogl_LoadFunctions failed and make OpenGLSWFrameBuffer gracefully recover from that
2017-04-06 23:33:56 -04:00
Christoph Oelckers
74faacd218 - fixed: FxVMFunctionCall::GetDirectFunction did not perform any checks on the function's self pointer and failed to report a mismatch as an error.
- also fixed two places in the code where the above caused some incorrect definitions not to be detected.
2017-04-06 20:52:38 +02:00
alexey.lysiuk
ca4888eb3d Added CVar.GetCVar() function to do player-dependent console variables lookup 2017-04-06 10:51:36 +03:00
alexey.lysiuk
26e4b74261 Restored initial behavior of CVar.FindCVar()
https://mantis.zdoom.org/view.php?id=537
2017-04-06 10:50:40 +03:00
alexey.lysiuk
ac5e516148 Removed obsolete forward declaration 2017-04-06 10:39:53 +03:00
Magnus Norddahl
1312e9fb72 - fix linker error on platforms with no SSE support 2017-04-05 22:36:57 +02:00
alexey.lysiuk
a27ab73f33 Fixed broken dialogue customization in USDF parser
https://mantis.zdoom.org/view.php?id=539
2017-04-05 13:43:49 +03:00
alexey.lysiuk
dd30d2a045 DEHACKED lumps from IWAD now have precedence over embedded lumps and separate files
See https://forum.drdteam.org/viewtopic.php?t=7588

Processing order is now the same as in Chocolate Doom
prBoom+ loads separate files after all WAD lumps though
This makes sense but would change loading sequence existed in ZDoom for years
2017-04-04 12:20:12 +03:00
Magnus Norddahl
f12c42d8d1 - add fuzz mode to softpoly 2017-04-04 01:11:55 +02:00
Magnus Norddahl
5c5e3bdcba - change fuzzing to not do any offsetting but keep the shading pattern produced by it 2017-04-03 19:11:38 +02:00
Major Cooke
d3ef3b585b - fixed: Flat sprites did not rotate their sprite angles when given the FLATSPRITE flag. 2017-04-03 17:06:33 +02:00
Major Cooke
73c1451048 - fixed: The functionality for AddEventHandlers and EventHandlers were backwards. 2017-04-02 19:23:28 +02:00
Christoph Oelckers
e074c75609 - added a generic TransformRect to the status bar so that the proper transformations can be applied to draw operations that require special parameters not supported by the stock functions. 2017-04-02 12:58:31 +02:00
alexey.lysiuk
4cf3e1be2c Removed obsolete workaround for Apple's GCC 4.x from node builder 2017-04-02 11:51:58 +03:00
alexey.lysiuk
bb9cd1b159 Removed special initialization of legacy render styles
Workaround for Apple's GCC 4.0.1 is now completely pointless
2017-04-02 11:41:04 +03:00
alexey.lysiuk
5187acd44f Fixed undefined behavior in drawing of status bar graphics
Debug configuration built with Apple's Clang had bogus render styles applied to graphics in status bar
2017-04-02 11:38:59 +03:00
alexey.lysiuk
659f75c84a Avoid duplication of member in OpenGL software framebuffer class 2017-04-02 10:13:25 +03:00
alexey.lysiuk
63f85f6b07 Fixed compilation of Cocoa backend
Use the same member names in framebuffer class for all backends
2017-04-02 10:11:41 +03:00
Magnus Norddahl
4268090738 - switch OpenGLSWFrameBuffer to use m_Lock instead of LockCount 2017-04-02 00:47:18 +02:00
Magnus Norddahl
4a9dffa70d - change subsector gbuffer to use a 8x8 block memory layout to avoid having to clip memory reads and writes 2017-04-01 23:21:06 +02:00
Magnus Norddahl
0ed60b8df6 - fix OpenGLSWFrameBuffer::Begin2D 2017-04-01 22:14:04 +02:00
Christoph Oelckers
3f552ea95f - added loop tag reading to the new streaming music class.
This is somewhat brute-force thanks to the surprising lack of good documentation for the Ogg headers. The only other option would have been some rather bloated library for a function that should be 25-30 lines at most.
2017-04-01 21:40:36 +02:00
Christoph Oelckers
dfd3535e02 - added a dedicated player class for streamed music formats (i.e. MP3, Ogg and Flac)
The idea is to have more control on the game side instead of dealing with these formats in the backend, which was done for FMod because it already had the decoders implemented.
However, with OpenAL this setup makes no sense and only complicates future extensions that can be better handled at a higher level.
2017-04-01 19:47:12 +02:00
Magnus Norddahl
4a0b3c3bab - speed up triangle setup slightly 2017-04-01 16:42:24 +02:00
Christoph Oelckers
54764c136d - changed the 2D draw abort check to use a dedicated variable, that gets set in Begin2D and unset at the end of D_Display.
This is really all the extent where 2D draw operations may be allowed. Trying to detect this from other variables is not reliable.
2017-04-01 12:59:58 +02:00
Christoph Oelckers
9dc8933109 - let 'stat think' also print the number of active thinkers. 2017-04-01 12:30:38 +02:00
alexey.lysiuk
36ad485edd Proper default value for GL framebuffer lock in Cocoa backend
No more error when running with +map command line parameter with classic HUD:
> VM execution aborted:  Attempt to draw to screen outside a draw function
> Called from BaseStatusBar.DrawImage [Native]
> Called from DoomStatusBar.DrawFullScreenStuff at gzdoom.pk3:zscript/statusbar/doom_sbar.txt, line 140
> Called from DoomStatusBar.Draw at gzdoom.pk3:zscript/statusbar/doom_sbar.txt, line 41
2017-04-01 13:16:31 +03:00
Christoph Oelckers
e780cd8297 - seems the wrong version of this got committed... 2017-04-01 12:04:31 +02:00
Christoph Oelckers
41f2f61b94 - minor VM optimization: Precalculate a function's frame size when compiling it instead of doing it each time it gets called.
This made up ca. 10% of the 'call' instruction's execution time.
2017-04-01 10:42:47 +02:00
alexey.lysiuk
893607c96c Fixed crash in decals handling caused by reference to undefined class
https://forum.drdteam.org/viewtopic.php?t=7589
2017-04-01 10:36:35 +03:00
alexey.lysiuk
59ae50aecb Fixed compilation warning reported by GCC/Clang
src/gl/textures/gl_texture.cpp:691:25: warning: comparison of integers of different signs: 'unsigned int' and 'int' [-Wsign-compare]
2017-04-01 10:24:05 +03:00
Magnus Norddahl
da6bfe65ff - only calculate gradients once 2017-04-01 04:38:15 +02:00
Magnus Norddahl
6db89a2ce1 - clean up the triangle setup functions 2017-04-01 03:44:45 +02:00
alexey.lysiuk
f48af606df Fixed creation of BaseStatusBar
No more access to memory ouside of class instance
Minimized amount of copy-pasted code

https://mantis.zdoom.org/view.php?id=511
2017-03-31 12:53:28 +03:00
Christoph Oelckers
5601364aaf - fixed some issues with Set/GetClipRect. 2017-03-30 21:12:39 +02:00
Christoph Oelckers
228c57fae3 - fixed: Even SBARINFO needs to call the scripted Init method of the status bar because it initializes some data used by the automap HUD. 2017-03-30 19:00:26 +02:00
Christoph Oelckers
91ac6e30fe - fixed: The automap tried to access a variable before it was initialized.
The fix is not ideal but the way this code is used it cannot be done any better.
2017-03-30 18:51:24 +02:00
Christoph Oelckers
3a1228bf95 - exported the clipping rectangle to scripting and added a statusbar scaling wrapper for it.
- fixed: BaseStatusBar.Fill did not pass its flags parameter to the native function.
2017-03-30 12:13:28 +02:00
Christoph Oelckers
a3ef711d1d - added a special slider type for the scaling options that prints a descriptive text instead of the slider for the special settings.
- fixed the adaptive scale calculation in GetUIScale which had the coordinates mixed up.
2017-03-30 11:30:09 +02:00
Christoph Oelckers
f95c29ad28 cleaned up the scaling options.
- all 5 settings affected by uiscale have been changed to have the exact same semantics: -1, if supported means special scaling, this is available for HUD and status bar, 0 means to use uiscale, any larger value is a direct scaling factor.
- scaling is cut off when the factor is larger than screenwidth/320 or screenheight/200 because anything larger will definitely not fit.
- a lot of code has been cleaned up and consolidated. Especially the message code had an incredible amount of redundancy.
- all scaling options have been moved into a submenu. This menu is not complete, though - it still requires a special menu widget to convey the intended information without confusing the user.
2017-03-30 02:16:23 +02:00
Christoph Oelckers
1dcc017daf - reimplemented the position display, but changed its position a bit upward.
- activated the RenderOverlay event, now that it can be called from the correct spot, i.e. right after the top level HUD messages are drawn. The system's status output will still be drawn on top of them.
2017-03-29 23:51:53 +02:00
Christoph Oelckers
bde73fc530 - added automatic brightmaps.
Everything in the brightmaps/auto directory will automatically be assigned to the same-named texture.
2017-03-29 23:13:11 +02:00
Christoph Oelckers
7011010ff2 - fixed the drain callback.
- changed the effect spawn prevention of the Hexen flame strike weapon and reverted the attempt to fix this in FastProjectile.

This cannot be fixed in the base class, which was doing everything right. It's the flame missile that was doing undefined things by stopping its movement without clearing its missile flag. This cannot work because missiles are given some minimal forced velocity to ensure collision detection and any attempt to address this without clearing the missile flag is doomed to fail.
2017-03-29 22:50:13 +02:00
Christoph Oelckers
3f9ad55432 - allow multiple expressions in 'for' iteration part. 2017-03-29 22:18:52 +02:00
Christoph Oelckers
b38934b532 - fixed declaration of ACS getters for status bar.
- fixed some uninitialized variables in font print code.
2017-03-29 21:54:11 +02:00
Christoph Oelckers
01b095c911 - added colorization for untranslated fonts. This uses the light color of the vertices. The software rendered 2D code will ignore this infomation.
- added a virtual OnRetrun method to menus.
2017-03-29 21:22:05 +02:00
Christoph Oelckers
d36f656caf - added a callback for when damage is drained from a target. 2017-03-29 20:25:54 +02:00
Christoph Oelckers
356144a537 - fixed: The player menu was not able to set the new name because the security check did not account for the text enter menu being present. 2017-03-29 20:11:58 +02:00
Christoph Oelckers
9d1031f0ba - fixed ForcedScale handling in SBARINFO.
Due to the setup it would miss setting it when changing between HUDs.
2017-03-29 20:01:57 +02:00
Christoph Oelckers
401a1e80e8 - fixes typo in actionspecials.h. 2017-03-29 19:24:56 +02:00
Christoph Oelckers
1d4ab0cc2a - implemented proper scaling for the status bar itself.
This allows using the UI scale or its own value, like all other scaling values.
In addition there is a choice between preserving equal pixel size or aspect ratio because the squashed non-corrected versions tend to look odd, but since proper scaling requires ununiform pixel sizes it is an option.

- changed how status bar sizes are being handled.

This has to recalculate all scaling and positioning factors, which can cause problems if the drawer leaves with some temporary values that do not reflect the status bar as a whole.
Changed it so that the status bar stores the base values and restores them after drawing is complete.
2017-03-29 19:23:40 +02:00
Christoph Oelckers
7ba6860102 - scriptified the automap HUD and made it obey hud_scale instead of always being fully scaled. 2017-03-29 14:20:22 +02:00
Christoph Oelckers
2f06c09681 - fixed map name display on the automap HUD
This would cut off overlong names and the handling for status bars with protruding elements was far too simplistic and worse, making assumptions based on game mode.
It now uses a virtual function to query the status bar itself for returning this information so it can be overridden and uses V_BreakLines to split the text if it is wider than the display.
2017-03-29 10:36:16 +02:00
Christoph Oelckers
fabf8451e7 - use Fill to draw Strife's health bars. 2017-03-29 02:24:04 +02:00
Christoph Oelckers
598523a1de - moved all coordinate adjustment for the status bar mode into one function and use this function in all places where status bar related coordinate adjustments need to be performed, also in SBARINFO.
- fixed unscaled status bar placement.
- fixed inventory count display for Doom status bar.
2017-03-29 01:59:03 +02:00
Christoph Oelckers
914c829f79 - added Floor/Ceiling_MoveToValueAndCrush action specials. 2017-03-29 01:25:02 +02:00
Christoph Oelckers
3a569f176d - added GetLineX/GetLineY ACS functions. 2017-03-29 01:02:29 +02:00
Magnus Norddahl
d160424aea - added DFrameBuffer::HasBegun2D to allow scripting to test if 2D drawing is active (instead of using IsLocked, which may return false when vid_hw2d is active) 2017-03-29 00:45:53 +02:00
Christoph Oelckers
054d9a5bcc - allow passing the activator to ScriptCall. 2017-03-29 00:43:12 +02:00
Christoph Oelckers
19e7d60275 - removed DSBarInfo::Scaled because it tended to disagree with StatusBar->Scaled. 2017-03-29 00:35:35 +02:00
Christoph Oelckers
2d1641f0cd - fixed: Reference types passed as a reference parameter were not properly checked for. 2017-03-29 00:00:25 +02:00
Christoph Oelckers
5e3e4a3bd1 - fixed: The wall spliter for 3D lights did not initialize the resulting colormap's fog density value. 2017-03-28 23:36:26 +02:00
Christoph Oelckers
fa893c082b - changed the default for hud_scale to 0 (i.e. use uiscale)
- allow calling Menu.SetMenu from play code so that in-game menus can be opened.
2017-03-28 22:51:37 +02:00
Christoph Oelckers
6870efe134 - added a GetCVarString ZScript/DECORATE function.
- fixed: loading a savegame triggered PlayerEntered events.
2017-03-28 21:37:43 +02:00
nashmuhandes
99d1581c27 Added "DontLightActors" flag for dynamic lights. Actors will not be illuminated by lights that are given this flag. 2017-03-28 21:33:16 +02:00
Christoph Oelckers
bdf761e457 - moved th player resurrection code into a player_t method. 2017-03-28 21:29:14 +02:00
Christoph Oelckers
71fe4a83c9 - fixed: the translucent flat drawer used a bad condition for dynamic light processing which caused a problem with the GL 3.x lighting method. 2017-03-28 21:18:03 +02:00