Commit graph

944 commits

Author SHA1 Message Date
Mitchell Richters
4ef0d20e0e - gameinput.cpp: Consolidate checkCrouchToggle() from Duke with discrete implementations from Blood in 7c8efde38c and Exhumed in 032db82f82 to unify the functionality. 2020-11-07 13:44:25 +11:00
Mitchell Richters
7c8efde38c - Blood: Add crouch toggle mechanism.
* Fixes #151.
2020-11-07 13:23:16 +11:00
Christoph Oelckers
7a482c6284 - make DHUDFont an object. 2020-10-31 13:20:54 +01:00
Christoph Oelckers
7de6528a1f - the status bars work as objects.
# Conflicts:
#	source/common/menu/menudef.cpp
2020-10-31 13:20:54 +01:00
Christoph Oelckers
3b7ce26c86 - final function moves and renamed hud_scale to hud_scalefactor. 2020-10-31 13:20:00 +01:00
Christoph Oelckers
3a0c84d3ca - split statusbar.cpp in two.
To keep Raze-exclusive content out of the main file that's about to be edited.
2020-10-31 13:19:59 +01:00
Christoph Oelckers
668c34d4c1 - ensure for all games that deleting a sprite unlinks all sounds from it.
This was only present in Duke but is needed for all games.
2020-10-29 00:08:06 +01:00
Christoph Oelckers
7dda316391 - define console background for Blood. 2020-10-25 15:31:20 +01:00
Christoph Oelckers
28a926eb9a - Blood: Copy the 'shade' member for sprites.
This got lost when the loader was transitioned to using a local buffer to read the map data.
Fixes #140
2020-10-24 19:11:58 +02:00
Christoph Oelckers
c2828fe2e3 fixed undefined end of list behavior of iterators
Also fixed a few warnings
2020-10-18 12:14:05 +02:00
Christoph Oelckers
eb78b88598 - all Blood stat iterators ported. 2020-10-15 20:22:39 +02:00
Christoph Oelckers
33164694b9 - use iterator class for all stat loops in Blood's actor.cpp. 2020-10-15 20:22:38 +02:00
Christoph Oelckers
0a0a995cbd - some cleanup of build.h 2020-10-15 20:22:38 +02:00
Christoph Oelckers
be3292d29b - removed the mostly unused macros for sprite iteration. 2020-10-15 20:22:38 +02:00
Christoph Oelckers
aa5c7c3e34 - replaced all sector sprite iterators in Blood. 2020-10-15 20:22:38 +02:00
Christoph Oelckers
ec5762f024 - do not use index 0 of Blood's X arrays.
This can be written to through uninitialized data and break things quite badly.
2020-10-14 13:51:59 +02:00
Christoph Oelckers
bca29ed402 - no bit fields, please!
The memory savings are not worth the negative side effects.
2020-10-13 23:56:30 +02:00
Christoph Oelckers
1637157f46 - removed some unused variables. 2020-10-13 21:45:21 +02:00
Christoph Oelckers
53481fb9a3 - Blood: simplified management of XSectors and XWalls.
This does not need a free list - they get statically allocated per level, so a simple counter is enough.
2020-10-13 20:36:57 +02:00
Christoph Oelckers
2b1284e8fa - reorganized Blood's level structures to not use bitfields.
Only the single bits are still a bitfield,  combined with an int in a union - all other fields are 8, 16 or 32 bit now.
For serialization this is necessary - I have to wonder anyway if the added code to process the bit fields wasn’t even more than the data savings…
2020-10-13 20:23:51 +02:00
Christoph Oelckers
817fa8aba3 - save the entire engine state as JSON.
The sprite lists may still need optimization. Due to different handling between Blood and the core engine they need to be written out completely which is quite wasteful.
2020-10-13 20:18:08 +02:00
Christoph Oelckers
20248d8e08 - fixed a few CCMDs which were blocked in the console. 2020-10-12 19:48:47 +02:00
Mitchell Richters
c08851e4c0 - Blood/Duke/RR/SW: Drop resetinputhelpers(). 2020-10-12 14:42:43 +11:00
Christoph Oelckers
b4a011300a - implemented proper delta serialization for sectors and walls. 2020-10-11 21:11:38 +02:00
Christoph Oelckers
e6bd5989c2 - removed some unused parts from Blood's map loader. 2020-10-11 18:34:58 +02:00
Christoph Oelckers
1757ef2aa6 - split the game input code off gamecontrol.cpp into its own file. 2020-10-11 16:33:43 +02:00
Christoph Oelckers
8e1c71b867 Merge branch 'InputContinuation' 2020-10-11 15:24:51 +02:00
Christoph Oelckers
6acc9db540 - cleanup of the remaining homegrown Blood wrappers.
consoleSysMsg and dassert are gone now, all places now call the system implementation directly.
2020-10-11 14:30:44 +02:00
Christoph Oelckers
1579bec714 - Blood: got rid of ThrowError.
Use I_Error directly.
2020-10-11 14:30:44 +02:00
Christoph Oelckers
2769abcf0f - Blood: Removed most #defines.
only ThrowError and dassert left...
The unused BitWriter class was also removed.
2020-10-11 14:30:43 +02:00
Christoph Oelckers
7b6964a08f - Blood: #define replacement 2020-10-11 14:30:43 +02:00
Christoph Oelckers
c87185a337 - use distinct names for monster AI variables and functions.
I was just toying around with compiling all of these as a single unit and that uniform naming made it impossible.
2020-10-11 14:30:41 +02:00
Christoph Oelckers
2f4c78dd73 - use distinct variable names for QAV and SEQ management. 2020-10-11 14:30:41 +02:00
Christoph Oelckers
3b59bf759c - Blood: there's no need to store the loadsave handlers in local variables that never get used. 2020-10-11 14:30:40 +02:00
Christoph Oelckers
ca288d08f4 - compile all files with script exports in the main project.
This hopefully gets around the failure to find these on on-Windows Builds.
2020-10-11 07:40:11 +02:00
Christoph Oelckers
fe2e96d3a6 Merge branch 'master' into InputContinuation
# Conflicts:
#	source/games/duke/src/duke3d.h
2020-10-10 21:39:27 +02:00
Christoph Oelckers
a39cf290e3 - Blood: fixed: The player's inventory and some other state were reset for each level, not each new game. 2020-10-10 20:20:12 +02:00
Christoph Oelckers
db21d5e946 - took all script exports out of the namespaces.
It looks like GCC cannot deal with this - on MSVC it works fine.
2020-10-10 10:11:22 +02:00
Mitchell Richters
79cd5e4731 - Blood: Fix warptocoords CCMD. 2020-10-09 12:33:47 +11:00
Mitchell Richters
c6e3b4df11 - Blood: Use backend interpolation functions for angle and rotscrnang. 2020-10-09 11:34:42 +11:00
Christoph Oelckers
a10aacea3a - added the QAV drawer page. 2020-10-09 00:50:21 +02:00
Mitchell Richters
9bcdeae6cd - InputPacket: Change q16avel to avel, changing type from fixed_t to float. 2020-10-08 14:47:30 +11:00
Christoph Oelckers
a953404331 - SW's text menus done.
This also copies the Build texture animation info into the texture manager so that the 2D code can access it through existing interfaces.
2020-10-07 23:22:29 +02:00
Mitchell Richters
bd68f67460 - Blood: Cut q16ang/q16look_ang/q16rotscrnang over to PlayerAngle struct. 2020-10-08 07:55:54 +11:00
Christoph Oelckers
6041a3355c - removed the file location reporting for Blood errors because it embeds the full path into the executable, which is not acceptable. 2020-10-07 20:52:25 +02:00
Christoph Oelckers
789eb6d51d - Most of Duke's menus work again. 2020-10-07 20:32:43 +02:00
Christoph Oelckers
2bb38f7d67 - get load and save game menus and related CCMDs working again. 2020-10-07 18:32:57 +02:00
Mitchell Richters
fca846272e - gamecontrol: Initial setup of PlayerAngle struct and deployment within Duke.
* Struct made up of binangle class units.
* Create signed clone of binangle for use with look_ang and rotscrnang.
* Append currently outgoing function names with `2` at the end to avoid conflict.
2020-10-07 23:13:29 +11:00
Mitchell Richters
6a30d6880e - InputPacket: Change q16horz to horz, changing type from fixed_t to float. 2020-10-07 18:22:07 +11:00
Mitchell Richters
d16b4651bb - gamecontrol: Remove old horizon code left behind while cutting over each game. 2020-10-07 18:12:09 +11:00
Mitchell Richters
c03131f8d1 - Blood: Cut q16horiz/q16slopehoriz over to PlayerHorizon struct. 2020-10-07 17:16:58 +11:00
Mitchell Richters
f39939d114 - gamecontrol: Initial setup of PlayerHorizon struct and deployment within Duke.
* Started with the most complicated game first.
* Struct made up of fixedhoriz class units.
* Append currently outgoing function names with `2` at the end to avoid conflict.
2020-10-07 17:12:48 +11:00
Mitchell Richters
09a05f354c - Re-standardise horizon around 0 and not 100.
* Blood had this right. It makes sense that the horizon be based around as it's easier to work with.
* Removed all associated game math to deduct default horizon of 100 when doing weapon zvel etc, meaning actual horizon can just be used.
* Re-did return to center function to work on the already converted pitch. Return speed should be 1:1 with previous code.
2020-10-07 13:28:45 +11:00
Christoph Oelckers
0968a9d97e - renamed the Customizer to 'Delegate' because this works very much like a delegate in Objective-C.
- route menu sound calls through the delegate to better deal with differences between games.
2020-10-07 01:00:43 +02:00
Christoph Oelckers
603c3b50ec - reimplemented Blood's menu items. 2020-10-07 00:50:26 +02:00
Christoph Oelckers
06b00887f5 - added a menu control for Blood's dripping blood. 2020-10-06 23:49:34 +02:00
Christoph Oelckers
b8941a09ad - we need this... 2020-10-06 21:11:37 +02:00
Christoph Oelckers
d22bdf9dc7 - use an alias for the menu bar texture in Blood.
Direct tile access has been disabled for now, hopefully this can be buried deep in the engine for all eternity.
2020-10-06 20:05:51 +02:00
Christoph Oelckers
3dbb8cbb11 - safety commit 2020-10-05 21:47:53 +02:00
Christoph Oelckers
82612a1330 - it compiles again (with lots of code commented out.) 2020-10-04 20:11:02 +02:00
Christoph Oelckers
7661720585 - fixed Blood map loading
Whoever designed that map format with its idiotic encryption should burn in Hell >)
It's a needless complication and open invitation for errors.
To avoid follow up problems it now uses its own local struct for loading in the sprites and the global spritetype no longer depends on any map format and can be changed as the need arises.

Fixes #101
2020-10-03 18:35:47 +02:00
Christoph Oelckers
89d5d18b9e - these parts were missed somehow. 2020-10-02 22:42:54 +02:00
Christoph Oelckers
4e67197838 - added back the hijacked 'detail' member to spritetype.
This changes the Blood map loader to not use the in-game sprite structure for loading a level and moves the qsprite_filler array back into the sprite.
2020-10-02 22:18:08 +02:00
Christoph Oelckers
e8cd336f86 - same procedure for Blood.
This time there were 3 additional texts and the notify display, though, except for multiplayer content that wasn't touched yet.
The result is the same: No need to extend the tiny font with international characters
2020-09-29 22:20:25 +02:00
Christoph Oelckers
47c1c22ff7 - do not stop the music in the cross-game level-end handler.
Some maps require that it continues playing here.
2020-09-27 20:42:55 +02:00
Christoph Oelckers
3210dd5782 - fixed the noisiest value truncation warnings after shortly re-enabling them in the compiler, plus a few places where the warning pointed to incorrect code. 2020-09-26 11:59:24 +02:00
Christoph Oelckers
64607834f3 - Blood: fixed application of palette from the QAV data for HUD weapons. 2020-09-25 23:55:20 +02:00
Christoph Oelckers
89bc194035 - added shareware checks to the "start game" menus. 2020-09-25 19:36:50 +02:00
Mitchell Richters
9b12675f4e - processMovement(): Re-arrange parameter variables somewhat so game-specific parameters are at the end and to allow some common defaults so they don't need specifying. 2020-09-25 22:26:50 +10:00
Mitchell Richters
4ff3810711 - Blood/Duke/RR/SW: Improvements to 3rd person viewing by modifying the rendered player's posz so the camera is looking further above the camera sprite as EDuke32 does. Blood just enables the crosshair when using 3rd person view. 2020-09-25 17:52:00 +10:00
Mitchell Richters
04af1d9ce8 - All Games: Unify processMovement(). 2020-09-24 22:32:37 +10:00
Mitchell Richters
8690c633d8 - Blood: Add extra call to inputState.ClearAllInput() in StartLevel(). 2020-09-24 00:20:40 +10:00
Mitchell Richters
e078ea6ebd - Blood/Exhumed/SW: Hook up gi->clearlocalinputstate(). 2020-09-24 00:15:51 +10:00
Mitchell Richters
64113f8f9c - Blood/Duke/SW: Smooth out player's zpos adjustment while in 3rd person view. 2020-09-23 23:12:59 +10:00
Mitchell Richters
407b5346e3 - Blood: Fix issues taking damage following level transitions.
Fixes https://forum.zdoom.org/viewtopic.php?f=340&t=69919.
2020-09-23 13:28:07 +10:00
Mitchell Richters
d391e56d81 - Blood: Fix a few more issues following horizon change. Chase-cam now has proper z-pos. 2020-09-23 13:20:57 +10:00
Mitchell Richters
3d58a09aeb - Blood: Fix player's z-pos with changed horizon. 2020-09-23 08:54:19 +10:00
Christoph Oelckers
5e6317b8b9 Merge remote-tracking branch 'remotes/Github_private/Blood_InputReworking' 2020-09-22 23:32:28 +02:00
Christoph Oelckers
880b811e0d - rewrote map loader to work independently of data structure sizes.
This is needed to extend a few fields that are too narrow - e.g. the texture offset fields have no room for interpolating scrolling textures.
Blood not done yet, will also need to be changed to get rid of the limits.
2020-09-22 22:40:53 +02:00
Christoph Oelckers
43a9be0ad0 - removed Blood's loadboard replacement hook.
It never calls engineLoadBoard but always its own map loading function directly.
2020-09-22 22:38:08 +02:00
Mitchell Richters
2f9783150c - Blood: Correctly set playerHorizMin() and playerHorizMax() with respect to horizon changing from 0 to 100 like the other games (min used to be -180, max used to be 120). 2020-09-22 22:55:23 +10:00
Mitchell Richters
639ad46af1 - Blood: When dead, ensure player's horizon scales to max horizon value like before (old horizon was based on 0, not 100, so 100+120 is gi->playerHorizMax(). 2020-09-22 22:52:17 +10:00
Mitchell Richters
ac635ebd0f - Blood/RR: Replace a few playerSet*() calls with playerAdd*(). Because the setters continually set until target is reached, can cause some perceivable smoothness issues if ticker re-targets's player's angle/horizon before input code has reached target. 2020-09-22 22:50:27 +10:00
Mitchell Richters
f168373ecf - Blood: Repair some ROR regressions from 31fc39b051.
Potentially addresses #87 and #88.
2020-09-22 18:14:43 +10:00
Mitchell Richters
46810ec490 - fix a few places where Q16.16 values were downscaled, only to be scaled back up again. 2020-09-22 15:51:48 +10:00
Mitchell Richters
31bb9e4d8d - Blood: Open up MAXHORIZVEL to SW levels to compensate for removal of q16horz scaling in previous horizon code. 2020-09-22 07:46:30 +10:00
Mitchell Richters
d40a2d3e95 Merge branch 'back_to_basics2' into Blood_InputReworking
# Conflicts:
#	source/blood/src/hudsprites.cpp
#	source/exhumed/src/status.cpp
#	source/games/duke/src/game_misc.cpp
#	source/sw/src/draw.cpp
2020-09-22 07:34:39 +10:00
Mitchell Richters
9859571ded - DrawCrosshair(): Factor in Blood's adjustable horizon which defaults to 90.
* Fixes https://forum.zdoom.org/viewtopic.php?f=340&t=69920.
2020-09-22 07:29:52 +10:00
Mitchell Richters
5c097c4a74 - Blood: Fix player's slope with horizon now based on 100 and not 0. 2020-09-22 07:13:48 +10:00
Mitchell Richters
59e4fae064 - Game input: Fix miscellaneous issues.
* Duke/RR: Fix `SB_CENTERVIEW` not clearing while `cl_syncinput 1`.
* Duke/RR: Remove superfluous call to `apply_seasick()`.
* RR: Change two calls from `playerSetAngle()` to `playerAddAngle()` Updated version of `playerSetAngle()` doesn't stop setting angle until target is reached, a bit too strict for this and compromised vehicle turning.
* `applylook()`: Remove dead flag. Was only used with Duke, no other game called the function when dead anyway. Since the input helpers are processed outside of `applylook()` now this is not needed.
* `applylook()`: Extend function with a bit of commentary.
2020-09-21 17:12:53 +10:00
Mitchell Richters
f806cdcec6 - Blood/Duke/RR/SW: Unify the player's angle/horizon helper functions. 2020-09-21 17:12:51 +10:00
Mitchell Richters
7bf1cacc7f - Blood/Duke/RR/SW: Unify the player's angle function.
* For Blood/SW, exposes `SB_LOOK_LEFT`/`SB_LOOK_RIGHT` to games, hooking up `q16look_ang` and `q16rotscrnang` within.
* For SW, use Duke & Blood's return to center function and remove `PF_TURN_180` bit.
* For RR, replace a few misused bits with some bools inside of `player_struct`.
* Since bulk of functionality is sourced from Duke (30Hz), apply proper scaling so SW speed matches (40Hz).
2020-09-21 17:12:26 +10:00
Christoph Oelckers
3810c4cb51 - Blood: instead of running the indexer after saving a state, just save the pointer before indexing to directly restore it. 2020-09-20 22:00:39 +02:00
Mitchell Richters
0ab3b33a6c - Blood/Duke/RR/SW: Unify the player's horizon function.
* For Duke/SW, we continually apply `SB_CENTERVIEW` only if it was previously a toggled action, similar to Blood.
* For SW, we remove two SW-specific bits (`PF_LOCK_HORIZ` and `PF_LOOKING`) that are no longer needed.
* For Duke, we remove `return_to_center` and just use the `SB_CENTERVIEW` action bit as required.
* For `sethorizon()`, feature set and adjustment speeds are an averaged out accumulation across Duke/SW:
** GameTicRate is factored in for adjustment decisions to provide consistency for SW being the faster game.
** Adjustment amounts are half way between Duke/SW.
2020-09-20 20:01:36 +10:00
Mitchell Richters
0c4fe5f91b - Blood: Fix remaining issues such as starting horizon, remove q16look and clean up some remaining bits in nnexts.cpp. 2020-09-20 16:21:40 +10:00
Mitchell Richters
f7957fc237 - Blood: Factor in game's tic-rate when aiming/looking up/down.
* Doesn't matter for Blood, but will matter for SW in a unified approach. Might as well get it right here.
* Appreciate the literal doubles in lieu of the enums isn't great, but this function will go into the backend in due course.
2020-09-20 16:21:38 +10:00
Mitchell Richters
d2501007f2 - Blood: Adapt uplifted DoPlayerHorizon() from SW to Blood.
* Horizon now standardised on 100 like the other games.
* Need to determine where/why/how the player's horizon is starting out at 0 and get it to init at 100 like the other games.
2020-09-20 16:21:36 +10:00
Mitchell Richters
6a091deb67 - Blood: Re-apply input scaling removed in 495c522096e0c9b31bdf6952e612bc3d03030da2 until the entire return to centre function is standardised across games. 2020-09-20 16:21:31 +10:00
Mitchell Richters
40bbb61239 - Blood: Get death chase-cam going while unsynchronised using input helpers. 2020-09-20 16:21:28 +10:00
Mitchell Richters
6e4ee9e975 - Blood: Forbid unsynchronised input if dead. 2020-09-20 16:21:26 +10:00