- Setting WOF_INTERPOLATE on any of the functions with flags (except A_OverlayFlags) will enable one tic for interpolating.
- Setting PSPF_INTERPOLATE with A_OverlayFlags will permanently enable it for that layer, but requires manual calling.
A_OverlayPivotAlign(int layer, int halign, int valign)
- Aligns the pivot point origin to a corner of the PSprite before applying offsets.
- - halign: Horizontal. Applicable constants are PSPA_<LEFT/CENTER/RIGHT>.
- - valign: Vertical. Applicable constants are PSPA_<TOP/CENTER/BOTTOM>.
- - Default is top left.
A_OverlayVertexOffset(int layer, int index, double x, double y, int flags)
- Allows offsetting the corners of the psprite, granting modders the ability to skew weapon sprites as they see fit.
- - index: The index of the vertice. Valid ranges are between [0,3].
- - x/y: Offsets of vertices.
- - flags: Takes WOF_ flags.
Other changes:
- Removed pivot point interpolation since it's pointless.
- Removed PSPF_PIVOTSCREEN due to complications with it having relativity. This will be revisited either later or in another submission.
- Added ResetPSprite() to be called with BringUpWeapon(), A_Lower(), and morph weapon raising to reset all the new properties to 0.
Nearly ready now. Just some final testing needed.
- Fixed PSPF_PIVOTPERCENT not being applied at start by default.
- Pivots now start in the upper left corner. Alignment flags are planned next for pivot point starting.
Significant progress made, but more testing still required.
- Fixed A_OverlayPivot carrying over copying of X to Y if Y is zero. This is meant to be exclusive to A_OverlayScale only.
- Added WOF_ZeroY to prevent copying X to Y for A_OverlayScale when desired, mirroring A_SetScale's behavior.
The idea behind this is to outright remove the relative position adding from the engine side and let it happen with A_OverlayOffset instead. Still more work to do.
* it is now possible to switch back to the main intro loop from the fullscreen console.
* do not distort the background of the fullscreen console. Always draw the console on top of what the main loop currently displays with a translucent black overlay.
* do not use the CONPIC for the fullscreen console as it tends to be more of a distraction than an asset when filling the entire screen.
* cleaned up c_console.cpp and moved several pieces of code unrelated to actual console management out of it.
I think it is inevitable that such status bars will appear in mods sooner or later and with the old code it is virtually impossible to create a wide status bar that displays properly but gets subjected to this code.
This only concerns the actual horizontal scroller. The vertical one still needs work and the "The End" screen only works if the second picture of the scroller is the full widescreen image because this page is done as a regular single image page which does not know anything about widescreen asset replacements.
The option still remains for cases where it does not work but the cases where mode 3 causes real problems are rare.
All I could find were a handful of poor intermission pics in some old mods which aren't worth keeping this artificial limitation.
This should only flag the tree as new if it is different from the last one.
This not only caused issues with dynamic updates but also made the renderer recreate the tree's data structures repeatedly.
Mainly to allow using 'if constexpr'.
Older CI compiler setups like GCC 5 for Linux were removed as a consequence.
Windows 32 bit was also removed because there are no plans to do any more 32 bit releases of GZDoom.
Rationale:
1. Now to reset a CVAR to default, the user doesn't need to remember the default value.
2. If a modder wants to reset a CVAR via menu command, they don't need to keep menudef and cvarinfo in sync.
src/common/filesystem/file_ssi.cpp:78:20: warning: comparison of integers of different signs: 'int' and 'uint32_t' (aka 'unsigned int') [-Wsign-compare]
src/common/filesystem/file_ssi.cpp:130:38: warning: comparison of integers of different signs: 'size_t' (aka 'unsigned long') and 'int' [-Wsign-compare]
This allows proper dimensions in the stock menus and should make menu layout for mods a lot easier because coordinates are more predictable than with the clean factors.
The feature is opt-in for custom content. As long as only stock elements are used, the menu will be able to switch between both on its own, but as soon as custom classes or custom elements are used, the virtual size must be declared explicitly, defaulting to clean scaling.
In this mode the clean scaling factors are ignored and content is always scaled to fit the screen as efficently as possible.
For the default summary screens an option was added to use this mode, which is a lot closer to the original look of this screen.
It is not 100% identical because it still factors in the author, if given and long level names that may be broken into multiple lines of text.
The background size wasn't taken into account for the splats and the widescreen check never verified the height of the background image.
It will now unconditionally use the new widescreen expansion mode for everything to reduce problems, use the background's display size for positioning overlays and only in the case of 200 pixel tall images perform widescreen positioning adjustment.
* a few shorter fields were moved into alignment gaps
* the visible angles are now stored as floats. Since these are only used for rendering the loss of precision is negligible, but this shortens AActor by 16 bytes alone.
Sensitivity scaling of both axes is now exposed as a raw factor to the user instead of obscuring it behind an unclear 'prescale' boolean.
This also consolidates the coordinate processing code to prevent such discrepancies as were present here from happening again.
Migration code for old config settings is present so that this change does not affect existing configurations.
Sound stopping was done in the wrong place - this killed the sound before they could be serialized for hub travel.
The sound may only be stopped *after* calling G_DoCompleted.
This reverts commit 8fc9f1e5ef.
As I already feared, this does not work right. The entire linking/unlinking code is simply too fragile. So no protection here against inept tinkering.
(for some reason it was unable to figure out the overrides for 'lumpname' in the function g_level.cpp/CalcMapName, even though this is a very old function)
- DirectInput axes are now X first, Y second.
- Menu axes controls swapped/fixed.
- Added SDL DualShock3 buttons in menu actions.
- Fixed SDL mouse system cursor; it could appear in-game.
This is the last parameter for A_RadiusThrust() DECORATE function.
If it is omitted or none, then A_RadiusThrust will behave as usual.
If it is set for some species name, it witt thrust only that species.
Of course, these species should be +VULNERABLE to be thrustable.
* support for SSI container format - this is an obscure format used by a few Duke Nukem mods - added to have this subsystem identical between both engines.
* removed some dead wrapper code
* made the Open methods local to their implementations, this was never called virtually.
* new texture format: ANM - this reads the first frame of a Build-ANM movie as a texture.
* some preparations for indexed (paletted) rendering.
* optimization of the patch texture checker - do not read in the entire file if checking the initial header is sufficient for rejecting it.
* removed refreshFreq variable and related code. This only got into the backend because of stupid interpolation code in some of the Build games which has long been removed.
* save FixedBitArrays as base64 in savegames.
* allow indirections in the string table - by prefixing the language string with '$$' the remaining text is interpreted as another string label to resolve.
* constexpr in palette code, also replacing #defines with enums.
Backported from Raze - without this there is no way to implement sounds that can unload themselves, because the existing ChannelEnded function is called when the sound is still active.
If the loader is allowed to go on, these objects will be linked into game structures and may do unpredictable things before the loader has a chance to abort at the end.
Some people apparently have to toy around with the engine's innards without fully understanding them. :(
When properly used the saveguards should never be triggered.
* Add FALLDAMAGE flag and add property to properly apply falling damage to the monsters
* Change name of propermonsterdamage property to propermonsterfallingdamage
It's possible for an actor to call Destroy() in a ZScript method (such
as Tick()) and then subsequently call A_StartSound() to play a sound.
Generally speaking this doesn't happen within a given class, but with a
class hierarchy, Destroy() may be called unbeknownst to a mod developer.
Even though checking bDestroyed is likely good practice, this ensures
that sounds won't be started on actors flagged for cleanup.
- If the hint text portion of a STRINGS lump entry begins with a '$', the value is treated as a string table lookup
Allows SECRETS strings to be translated via LANGUAGE lump. Reference: https://forum.zdoom.org/viewtopic.php?f=15&t=69827
Replaced explicit save of configuration file, which doesn't work after recent backend refactoring, with passing of CVARs we need to store to a new GZDoom process
https://forum.zdoom.org/viewtopic.php?t=69790
It's not obvious where we can reset blocking line in a more generic way, and whether it's possible at all, because this member is exposed to scripting
https://forum.zdoom.org/viewtopic.php?t=69747
src\common\audio\sound\s_sound.cpp(556,27): warning C4244: '=': conversion from 'double' to 'float', possible loss of data
src\scripting\vmthunks.cpp(2678,13): warning C4244: 'return': conversion from 'time_t' to 'int', possible loss of data
src/console/c_cmds.cpp:690:11: warning: format string is not a string literal (potentially insecure) [-Wformat-security]
src/scripting/vmthunks.cpp:2698:21: warning: comparison of integers of different signs: 'int' and 'unsigned long' [-Wsign-compare]
* Added ViewAngle/Pitch/Roll properties to actors.
- These are offsets for camera angles that allow turning the camera without affecting aim or movement direction.
- Added A_SetView<Angle/Pitch/Roll>, which will set the view direction.
- Added ABSVIEWANGLES flag, used to make the view absolute instead of an offset.
* Converted functions to be direct-native.
* Simplified some stuff, made up-to-date
* Dealt with DST problems
* Made SystemTime.Format clearscope, as there is no reason for this function to be limited to the ui
- If the actor passed into the function has THRUACTORS, PIT_CheckThing won't be called anymore.
- Moved THRUACTORS check to just under the self clipping check in PIT_CheckThing.
Bogus pointers and offsets were serialized silently
This will to find other cases of dangling pointers, and protect from loading of broken saved games
https://forum.zdoom.org/viewtopic.php?t=67494
Inventory items had dangling floor and ceiling sector pointers after transition to a new level
This could cause random issues with serialization
https://forum.zdoom.org/viewtopic.php?t=67494
This is a quick fix for an error in which Animated Doors crash the game by trying to check "actor->player" when "actor" itself is NULL. Deleting the check entirely also worked, but I worried it might be there for some higher-level scripting reason. This just puts in a check to make sure actor isn't NULL before checking actor->player, and keeps the behavior in that case the same.
I think this was happening because I had doors being opened by projectiles (like in Metroid) which were being despawned into NULL pointers when they hit the doors, as this was an issue when initially programming said doors..
- 1: The missile will continue moving through the actor, and it's down to the modder to handle bouncing.
- 0: The missile will explode.
- Any other value will process a bouncing actor as normally done in the engine.
src/common/engine/stats.h:139:31: error: invalid output constraint '=A' in asm
src/common/platform/posix/osx/iwadpicker_cocoa.mm:379:1: warning: non-void function does not return a value [-Wreturn-type]
- Sets the direct pitch of the sound to the specific float. Default is 0.0, meaning do not set a specific pitch. Regular pitch is 1.0.
- Only works for direct sound definitions.
- Overrides $PitchShift unless value is <= 0.0
- Overridden by A_StartSound's pitch parameter if the value > 0.0.
* 0: previous behavior (completely MAPINFO controlled)
* 1: always show level tally at the end of an episode
* 2: always show level tally even when changing levels within a hub
With introduction of localization support, several strings are no longer identical to the original messages
Double spaces were removed, and letter case was changed
The latter is already handled, extra whitespaces are now deleted to deal with the former
https://forum.zdoom.org/viewtopic.php?t=69236