Commit Graph

999 Commits

Author SHA1 Message Date
Mitchell Richters 3f886ad818 - SW: Fix change in 1354d52c05 that accidentally caused minor loss of precision in the panel code. 2020-09-01 23:35:00 +10:00
Mitchell Richters 9605e41f9f - SW: Fix Q16.16 operation not using m_fixed inlines. The one that got away... 2020-09-01 23:28:47 +10:00
Mitchell Richters 17da849add - SW: Get synchronised input going in a testable way. This is not a complete re-factor, just enough to get it going.
* Remove bool `PedanticMode`.
* Transition appropriate lines to `cl_syncinput`.
* Remove inlines added purely only to maintain DOS demo compatibility.
* Fix a few pedantic Q16.16 >> Int >> Q16.16 conversions.
2020-09-01 23:08:23 +10:00
Mitchell Richters 1354d52c05 - Major cleanup of Q16.16 utilisation within games and engine.
* Remove fix16.h/cpp and utilise library from m_fixed.h.
* Extend m_fixed.h with two inline functions for int to/from float operations.
* Replace fix16_floor operations with those from xs_Float.h
* Replace multiple Q16.16 conversions from 0 to just be 0.
* Replaced all found in-game bit-shifts and multiplications/divisions with inline functions from m_fixed.h
* Replaced many casts of FRACUNIT as double in SW's panel.cpp as it is converted to double by way of type promotion.
* Fixed missed precision fixes in SW's panel.cpp where some types weren't declared correctly.
* Replaced 100+ `Cos()/Sin() >> 16` operations for Blood with inline functions `CosScale16()/SinScale16()`.
2020-09-01 23:00:47 +10:00
Christoph Oelckers 3204a3e5fc - negated the meaning of SB_AIMMODE.
This is because 'classic' aim mode will reset the view if the mouseaim key is not pressed.
The problem with this is that an empty input packet will trigger a view reset. If the meaning is inverted the default aim mode is free mouse view which doesn't try to alter any view state and is therefore preferable for an empty packet.

Fixes #292
2020-08-31 20:51:22 +02:00
Christoph Oelckers 007c6e122d - gameclock abstraction
This may need more work to have a reliable timer
2020-08-31 00:16:43 +02:00
Christoph Oelckers 2f05a93547 Merge branch 'Packet' into back_to_basics2
# Conflicts:
#	source/core/gamestruct.h
#	source/games/duke/src/gameloop.cpp
#	source/games/duke/src/player_d.cpp
2020-08-31 00:09:56 +02:00
Christoph Oelckers b8258da997 - cleaning out some trash from compat.h.
The header from hell...
2020-08-30 23:34:40 +02:00
Christoph Oelckers 5136e7dc2d - SW: Moved the key display on the fullscreen HUD above the ammo display.
Space is a bit too tight when activating the clip display otherwise, especially on 4:3 screens.
2020-08-30 21:01:29 +02:00
Mitchell Richters c0374cf890 - SW: Move static function `DoReloadStatus()` into the class as private function 2020-08-30 20:24:38 +02:00
Mitchell Richters 26ffc82cc0 - SW: Remove duplicated code from dd832aaea3f688b375c74643606f299c76d92f3b. 2020-08-30 20:24:38 +02:00
Mitchell Richters 10962e2193 - SW: Implement `cl_showmagamt` for the game's shotgun and uzi.
* SW does not have any special characters in its BigFont, so currently there's no divider between ammunition amounts. This is to be discussed on the PR.
2020-08-30 20:24:37 +02:00
Mitchell Richters e32cd81cc7 - Unify `stat fps` for all games. 2020-08-30 20:24:36 +02:00
Christoph Oelckers 59a964bb83 - same for SW 2020-08-30 20:24:36 +02:00
Christoph Oelckers ffe5b114f3 - the engine starts on the new main loop and is capable of running the intros and the menu, but not the game yet. 2020-08-30 12:49:21 +02:00
Christoph Oelckers 0c455acaa2 - more work to switch over to the new loop.
Mainly separation of ticker and render calls
2020-08-30 10:42:44 +02:00
Christoph Oelckers 1e0b8038e5 - removed I_ResetTime entirely and refactored SW's use of it. 2020-08-30 08:13:34 +02:00
Christoph Oelckers d49aedacea - continued work on main loop - added a few new entry points to the game interface. 2020-08-30 00:55:49 +02:00
Christoph Oelckers 56d0647412 - migrated the last 3 remaining UI controls to CCMDs. 2020-08-29 17:49:15 +02:00
Christoph Oelckers 694444b62a - converted the remaining input bits.
Looks like it is working in all games except Blood (not that it surprises me that it's Blood again which has issues...)
2020-08-29 13:32:55 +02:00
Christoph Oelckers 7659107b75 - removed SW's SK_AUTO_AIM for good.
When networking becomes a thing again this can be done as a server CVAR without such a messy approach.
2020-08-29 02:19:41 +02:00
Christoph Oelckers dc1f56e8f9 Merge remote-tracking branch 'remotes/Github_private/back_to_basics2' into Packet
# Conflicts:
#	source/core/inputstate.cpp
#	source/exhumed/src/exhumed.h
2020-08-29 01:19:48 +02:00
Christoph Oelckers fe7f3a2f9e - handle the run key. 2020-08-29 00:57:07 +02:00
Christoph Oelckers b9e0f493b2 - transitioned the 5 primary action keys: Open, Jump, Crouch and Fire/AltFire. 2020-08-28 23:25:08 +02:00
Christoph Oelckers 847fa48724 - cleaned out the remaining parts of baselayer.h
In particular this means to remove the option to disable widescreen aspect ratios. The way this was handled makes no sense with the current render backend.

The aspect ratio code will have to be redone entirely to properly obey the backend's settings.
2020-08-28 09:06:49 +02:00
Christoph Oelckers d73bf62465 Revert "- Set frame-time as close to the buffer swap as possible, and calculate smoothratio for Duke/SW as late as possible."
This reverts commit 97feb483ab.
2020-08-28 08:25:51 +02:00
Mitchell Richters 97feb483ab - Set frame-time as close to the buffer swap as possible, and calculate smoothratio for Duke/SW as late as possible.
* Micro-optimisation, but was getting a very occasional jitter in Duke 3D that seems to have gone with this.
2020-08-28 15:27:16 +10:00
Christoph Oelckers d62d2eaec7 - processed all remaining local input CCMDs and removed some bits only needed for multiplayer.
These MP bits should be reimplemented as network commands later, they only take up valuable space in the bit field.
2020-08-28 00:03:35 +02:00
Christoph Oelckers ee7d558282 - removed the remains of sending pause with the input packets.
None of this was really working anymore, but will have to be rethought once a network stream exists again.
But even then, this is better sent as a separate command, and in MP only.
2020-08-27 22:38:52 +02:00
Christoph Oelckers 447573aa36 - consolidation of invprev, invnext and invuse. 2020-08-27 22:19:24 +02:00
Christoph Oelckers 43de0d8312 - consolidation of inventory item activation through hotkeys.
This also adds hotkeys for Exhumed which never implemented them.
2020-08-27 21:25:09 +02:00
Christoph Oelckers 10df3e094a - rework of weapon input to use common features in shared code.
This also adds stubs for all unimplemented features in the games for easier addition.
2020-08-27 00:53:35 +02:00
Christoph Oelckers f597f7c265 - made the GameFunc constants global again.
With most of the more specific features being migrated to CCMDs the list is relatively clean now, with merely 2 buttons that are game specific.
2020-08-27 00:25:59 +02:00
Christoph Oelckers c7e667a17a - transition weapon selection in SW.
Thanks to the macro insanity for trivial operations in this code base this turned out to be a lot more troublesome than Duke...
2020-08-27 00:06:59 +02:00
Mitchell Richters 55f688b13f - SW: Rename `q16horz` to `q16horiz` and `q16aimvel` to `q16horz` for consistency and to avoid confusion down the track. 2020-08-27 08:00:50 +10:00
Christoph Oelckers 4e846f8d66 - do not print game init messages to the notify display. 2020-08-26 20:19:54 +02:00
Christoph Oelckers abf715eace - unified the packet structures of all games.
Currently the bit fields are still separate and they have to be merged, but for now the added memory does not matter.
Having this structure in the common parts will allow work on consolidating the input code, though.
2020-08-26 17:12:48 +02:00
Mitchell Richters 4fcec5f6d3 - SW: Alt implementation for preparing a nuke.
* Given the original code in `pNukeAction()` (poorly named), the intent appeared to be that the weapon should go off-screen for preparation, returning once weapon initialised.
* Commit restores that behaviour behind a CVAR.

# Conflicts:
#	source/core/gamecvars.cpp
#	source/core/gamecvars.h
2020-08-26 17:00:19 +02:00
Christoph Oelckers b76168f673 - moved the main event processing functions into the global main loop.
Now, with all the Build timer stuff removed these calls were all identical between games.
2020-08-26 16:59:41 +02:00
Mitchell Richters a9f556c1bd - SW: Restore random element to player's weapon left/right bobbing behind a CVAR.
# Conflicts:
#	source/core/gamecvars.cpp
#	source/core/gamecvars.h
2020-08-26 16:45:42 +02:00
Mitchell Richters 50793184ee - SW: Remove random element from player's weapon left/right bobbing causing bob value to be between 24-48 and lock to 36. 2020-08-26 16:45:42 +02:00
Christoph Oelckers ddd6a300ab - added UpdateSounds calls to the blocking loops in Duke's and SW's StartGame functions. 2020-08-26 04:15:33 +02:00
Christoph Oelckers cc5e6d19c3 - fixed sound updating by moving the engine's UpdateSound call into the main loop.
This needs to be called unconditionally for every frame being rendered, not all of the game modules did that.
Placing this call here ensures that it is independent of anything the games do.
2020-08-26 04:10:16 +02:00
Christoph Oelckers de871c9ab9 - use the game timer, not the Build timer for the sound eviction delay.
This is supposed to wait for two game frames to be on the safe side.
2020-08-26 03:50:07 +02:00
Mitchell Richters 4eec9dca63 - Duke/SW: Use `I_GetBuildTime()` instead of `gameclock` in game-side sound code.
* Code is called where `gameclock` might not be set.
2020-08-26 10:09:02 +10:00
Mitchell Richters e0aaaf1f60 - All Games: Move `gameclock` and `lastTic` to gamecontrol. 2020-08-26 09:49:44 +10:00
Mitchell Richters 76776d24d7 - All Games: Remove use of `ClockTicks` and replace with `int`. 2020-08-26 09:49:42 +10:00
Mitchell Richters aba5c4c134 - All Games: Remove use of `timerGetHiTicks()`. 2020-08-26 09:49:36 +10:00
Mitchell Richters b883204f6a - All Games: Remove remaining use of `totalclock` and associated timing code. 2020-08-26 09:49:34 +10:00
Mitchell Richters 76b05dbcd6 - Build (and games): Remove `totalclocklock`. 2020-08-26 09:48:56 +10:00
Mitchell Richters 40739d9176 - SW: Add `ogameclock` and use in places where `ototalclock` was used.
* Duke used `ototalclock` only to keep track of when the game ticked. SW uses it in the rendering code for differentials between tics so we should preserve that to prevent issues down the track.
2020-08-26 09:48:51 +10:00
Christoph Oelckers 84b6af24d3 - renamed the fields in SW's packet structure to match Duke's.
Preparation for moving the packet management into public code.
2020-08-25 22:06:01 +02:00
Christoph Oelckers 8256b54005 - applied a few fixes:
* removed the timer callback stuff that came back through the backdoor.
* do not use gameclock in the UI code - use the underlying timer directly.
* UpdateSounds must still use totalclock, until this can be refactored in its entirety.
2020-08-25 20:20:35 +02:00
Mitchell Richters c888bc802d - SW: Make a bit more use of the calculated smooth ratio. 2020-08-25 19:51:32 +02:00
Mitchell Richters 386661f1ba - SW: Migrate to GZDoom time code like Duke. 2020-08-25 19:51:32 +02:00
Christoph Oelckers cf36e7d770 - SW: stop cutscene sound before going to the summary screen. 2020-08-25 18:28:50 +02:00
Christoph Oelckers 7d30218d8e - fixed: In SW the automap follow mode blocked all game input, even when the automap was off. 2020-08-25 18:09:57 +02:00
Christoph Oelckers 7c1e64757a - use generalized automap label code for Shadow Warrior, too. 2020-08-25 00:16:02 +02:00
Christoph Oelckers e7c58a5b29 - make hud_scale a floating point CVAR. 2020-08-24 21:48:47 +02:00
Christoph Oelckers 6d1e3e77fc - fixed item percentage display on SW's status bar.
Fixes #242
2020-08-24 20:46:14 +02:00
Christoph Oelckers 76811a1881 - InputState cleanup
This removes most of the InputState class because it is no longer used.
The only remaining places still checking scan codes are the modifiers for sizeup and sizedown.
All the rest was remapped to safer methods. The multiplayer taunts are currently inoperable, they will need support of shift-bindings to get proper support.
2020-08-24 20:34:18 +02:00
Christoph Oelckers c09a5150a9 - added some predefined fullscreen modes
This is to cut down on boilerplate code because these encode the virtual screen size in the mode parameter, making it unnecessary to specify a virtual size separately.
2020-08-24 20:25:53 +02:00
Christoph Oelckers f1a988b221 - make use of map bindings
All automap controls have been moved there, and sizeup/sizedown have been made CCMDs, taking screen size management entirely out of the game modules
2020-08-24 20:20:15 +02:00
Christoph Oelckers debb4b17b6 - transitioned SW's automap to the global variables
Also copied the automap label output to the status bar for proper ordering.
2020-08-24 19:36:17 +02:00
Christoph Oelckers 7859a29e95 - use global variables to track automap state
So far implemented in Duke/RR.
2020-08-24 19:31:43 +02:00
Christoph Oelckers 91b31cec39 - fixed: hud_messages completely blocked the messages, even from going to the console.
It should only block the on-screen notification display, which the backend already implements. The game code should not check this CVAR again.
2020-08-23 22:46:53 +02:00
Christoph Oelckers 4469cf7edb - only go from menu to console when closing with Escape. 2020-08-23 21:24:31 +02:00
Christoph Oelckers c0da85d0ff - SW: fixed: When entering the summary screen, clear the FinishedLevel variable immediately.
So that its value won't stick around and trigger the screen again. Same when an exception occurs.
Fixes #232.
2020-08-23 20:55:21 +02:00
Christoph Oelckers adb98a47ba - restructured the main loop code so that the actual loop is in the common code. 2020-08-23 17:47:05 +02:00
Christoph Oelckers 4467547c8c - fixed fortune cookie message display.
Fixes #219.
2020-08-21 21:15:32 +02:00
Christoph Oelckers a3915c6861 - added missing menu sounds for SW.
Fixes #220.
2020-08-21 21:04:16 +02:00
Christoph Oelckers 0f3555fc7c - fixed speed of SW's credits.
Fixes #229.
2020-08-21 19:38:38 +02:00
Mitchell Richters b9038db433 - remove all the discrete definitions of variables from alt HUDs in Duke/RR/SW. 2020-08-21 22:20:54 +10:00
Mitchell Richters 8e10bb8856 - SW: Don't flash the weapon's ammo icon when flashing text for low ammo in DrawHUD2. 2020-08-21 10:18:31 +02:00
Mitchell Richters 4e0bef35c0 - simplify some of my math in the the fullscreen HUD drawers.
May no one ever see the original code again... :S
2020-08-21 16:23:44 +10:00
Mitchell Richters 3067bad9b9 - Blood/Duke/Exhumed/SW: Fix `map` CCMD so the game doesn't return to the menu if incorrect map specified (or crash in the case of Exhumed). 2020-08-21 15:11:02 +10:00
Mitchell Richters cc15de3ed9 - SW: Comment out code block causing interpolation issues when initialising a nuke.
* If there was a `pNukePresent()` function, that's where the commented out code belongs.
* I believe the rocket switching type was simplified during development and this is just an omission that's now obvious with interpolation. Only just, but you can notice this in an uninterpolated state while bobbing.
* Fixes #212.
2020-08-20 08:52:22 +10:00
Mitchell Richters 7698723e43 - SW: Fix cheats via the console following changes in e22d9b21e4. 2020-08-20 07:43:57 +10:00
Christoph Oelckers dd20d74c51 - revert unintended change of text labels. 2020-08-19 19:18:47 +02:00
Christoph Oelckers cbe4618a91 - do not play the random sword selection sounds on a map's very first tic.
This tends to interfere with map specific voice lines.
Fixes #214
2020-08-19 19:07:06 +02:00
Christoph Oelckers c2fd4d3d18 - SW: reset screen blend when resetting a level.
Fixes #211
2020-08-19 17:31:05 +02:00
Christoph Oelckers 5cfd427e42 - renamed local totalclock variables to reduce noise for the forthcoming timer cleanup. 2020-08-19 17:23:18 +02:00
Christoph Oelckers 91cc6a657b - tick the fortune cookie display within the playsim code to ensure its duration is handled properly.
Fixes #204
2020-08-19 17:10:54 +02:00
Christoph Oelckers e22d9b21e4 - changed SW's cheat prefix from 'sw' to 'lw' (i.e. Lo Wang) so that the cheats do not start with two movement keys. 2020-08-19 16:51:15 +02:00
NY00123 829bc10ccb SW: If a saved load is loaded at a point which is right after killing
a boss, ensure that FinishTimer and FinishAnim are appropriately
updated. This commit bumps GameVersion.
Additionally, the set of FinishAnim to 0 in NewLevel had
to move to a different location (InitLevelGlobals2), so
it doesn't override the value stored in the saved game.

# Conflicts:
#	source/sw/src/game.cpp
2020-08-19 14:24:56 +02:00
Mitchell Richters 042caf1b21 - SW: Implement `cl_weaponsway` for game. 2020-08-19 15:35:04 +10:00
Christoph Oelckers 6eba7dc410 - play music on the summary screen and check for advancing every frame.
Fixes #203
2020-08-18 20:26:16 +02:00
Christoph Oelckers 5acd7cf5e1 - SW: Stop music when ending game.
Fixes #205
2020-08-18 20:15:06 +02:00
Mitchell Richters 8d101a4a57 - SW: Properly fix the Uzi when reloading. 2020-08-18 22:48:58 +10:00
Mitchell Richters 471355dc2b - SW: Fix some typos in `pUziReload()`, fix some interpolation issues in `pUziClip()` and fix sequence of events in `InitWeaponUzi2()`. 2020-08-18 21:40:48 +10:00
Mitchell Richters a29d7bd3cd - SW: Change `pSpawnSprite()` x/y coordinates from int to double to preserve precision for some calls. 2020-08-18 21:39:20 +10:00
Mitchell Richters 7af5d26feb - SW: Fix the Uzi's reload interpolation issues. 2020-08-18 20:58:58 +10:00
Mitchell Richters 78e0e94f58 - SW: Fix interpolation issues with sword, fists and heart. 2020-08-18 20:49:12 +10:00
Mitchell Richters 5cc30ad7c6 - SW: Increase precision of x/y coordinates where possible. 2020-08-18 18:26:04 +10:00
Mitchell Richters d79c61d559 - SW: Interpolate between `ox`/`x` and `oy`/`y` coordinates in `pDisplaySprites()`. 2020-08-18 18:26:02 +10:00
Mitchell Richters df6f27530e - SW: Define `ox` and `oy` in `PANEL_SPRITEstruct` and back up panel sprite x/y coordinates where appropriate. 2020-08-18 18:26:00 +10:00
Mitchell Richters da2b1347ef - SW: Change `smoothratio` from int to double for storing returned result from `CalcSmoothRatio()` with full precision. 2020-08-18 18:25:58 +10:00
Mitchell Richters e8faca52a2 - SW: Prepare draw and panel code for interpolation of weapon's x/y coordinates. 2020-08-18 18:25:56 +10:00
Christoph Oelckers a535f62d4a - fixed: SW's intro cutscene must not terminate its sound.
Fixes #201.
2020-08-18 00:04:48 +02:00
Christoph Oelckers 65cb267d56 - save the cookie texts in a savegame and clear them on level exit. Also handle them on a per-player basis.
Fixes #196
2020-08-17 22:05:14 +02:00
Christoph Oelckers 9159855957 - SW: set the main view's projection after rendering the camera texture, not before.
Otherwise the main view will take over the projection settings from the camera texture.
Fixes #194.
2020-08-17 21:33:42 +02:00
Christoph Oelckers ba2ff12f5b - fixed summary screen properly this time.
Fixes #195
2020-08-17 21:19:18 +02:00
Christoph Oelckers 55de06ab2f - fixed a few incorrect text labels.
Fixes #193
2020-08-17 20:55:57 +02:00
Christoph Oelckers ca66e70d65 - print stats on secondary HUD. 2020-08-17 20:47:42 +02:00
Christoph Oelckers ebc16ffe14 - do not display ammo for fists and sword
Fixes #192
2020-08-17 20:43:31 +02:00
Christoph Oelckers 522d8af6ca - SW: implement the "end game" function.
Fixes #189
2020-08-17 20:38:46 +02:00
Christoph Oelckers 17f9bc8a8a - initiate a full game reset when respawning after death.
This was done with the old code but we now have to set the respective flag explicitly because the init code is inside the main loop, not outside.
Fixes #188
2020-08-17 20:30:44 +02:00
Christoph Oelckers 8011526e71 - SW: fixed crosshair size.
Fixes #186
2020-08-17 20:28:12 +02:00
Mitchell Richters 77825b4927 - SW: Remove duplicate if statement line. 2020-08-17 21:11:53 +10:00
Mitchell Richters d0ed88221d - SW: Alt HUD positioning tweaks. 2020-08-17 21:10:40 +10:00
Christoph Oelckers d6701d91a3 - aded Alt. HUD icon tiles
Not tested yet, this merely uses the numbers from the item pickup function.
2020-08-17 01:06:29 +02:00
Christoph Oelckers f7291960c3 - draft version of the secondary fullscreen HUD.
All elements are present, but the icons are still missing because I do not know the proper numbers yet.
2020-08-16 23:52:44 +02:00
Christoph Oelckers 25e8636a60 - eliminated a few smaller headers. 2020-08-16 23:21:24 +02:00
Christoph Oelckers 736f1461ca - fixed the summary screen. 2020-08-16 23:00:05 +02:00
Christoph Oelckers 85538b467b - fixed some initialization issues with the new main loop.
Looks like all map starting cases are working now.
2020-08-16 22:45:19 +02:00
Christoph Oelckers 695d81f88c - main loop WIP. 2020-08-16 21:55:26 +02:00
Christoph Oelckers 60275c9b6b - started with SW's new main loop.
Intro and menu are done, the game loop is quite a mess, unfortunately.
2020-08-16 20:10:26 +02:00
Christoph Oelckers 01d9bde7f4 - more cleanup of game.cpp.
The game init code is done.
2020-08-16 19:11:04 +02:00
Christoph Oelckers baf1166319 - trying to bring order to game.cpp
Some reshuffling, plus moving the automap drawer to its own file.
2020-08-16 18:18:56 +02:00
Christoph Oelckers 78d3afb0bf - cleaning out more garbage. 2020-08-16 17:09:59 +02:00
Christoph Oelckers ab7774c6d7 - thinning out some garbage. 2020-08-16 16:57:42 +02:00
Christoph Oelckers a8b0839592 - switch SW to CCMD based input. 2020-08-16 16:00:40 +02:00
Christoph Oelckers 8c98d44620 - handle console-based map changes directly instead of the cheat handler.
This allows handling user maps again.
2020-08-16 14:54:33 +02:00
Christoph Oelckers 532b11467f - handle all level access and indexing through the mapinfo data.
No more level numbers will be stored in the game code.
2020-08-16 14:39:18 +02:00
Christoph Oelckers 90a4d0dcb8 - removed the non-functional user map handling.
This will have to be redone in a more flexible manner
2020-08-16 11:42:13 +02:00
Christoph Oelckers f9b953eeae - removed SW's network code. 2020-08-16 10:40:20 +02:00
Christoph Oelckers 7bb6b6a1ee - do not call handleEvents outside the main loop.
In other places I_GetEvent should be used to call the system's message pump and keep the app responsive, but all game side processing should be skipped.
2020-08-16 10:00:13 +02:00
Christoph Oelckers 4b44e6e392 - removed redundant calls to timerUpdateClock. 2020-08-16 09:16:38 +02:00
Christoph Oelckers da38ad4554 - more dead code removal.
SW really has a lot of leftover commented out code...
2020-08-16 09:14:07 +02:00
Christoph Oelckers af2c836e54 - unused code cleanup. 2020-08-16 09:04:24 +02:00
Christoph Oelckers af4464ba16 - remove all sound precaching code in SW
We're loading all sounds at game startup anyway so there's no point to do this.
2020-08-16 08:46:51 +02:00
Christoph Oelckers ef78e8602a - major cleanup and consolidation of the screen/hud resizing code.
This is now being handled by the backend, except for the processing of the key bindings which cannot be done yet.
2020-08-16 02:55:50 +02:00
Christoph Oelckers 5cf54033ed - removed the demo code. 2020-08-15 22:31:44 +02:00
Christoph Oelckers deb9b74ce2 - got rid of all remaining rotatesprite calls in SW.
Also removed some dead code from player.cpp.
2020-08-15 22:04:37 +02:00
Christoph Oelckers 67b3a38fa3 - draw all menu elements with DrawTexture instead of rotatesprite 2020-08-15 21:09:21 +02:00
Christoph Oelckers 5e81f88907 - replaced SW's stats display with the shared version. 2020-08-15 21:03:42 +02:00
Christoph Oelckers 910ca69484 - migrated all of SW's text display to the backend and removed the various redundant printing functions. 2020-08-15 20:29:13 +02:00
Christoph Oelckers f0150569a4 - ported the load level screen and deleted some dead code in game.cpp 2020-08-15 16:41:08 +02:00
Christoph Oelckers aa8113cf06 - ported the level summary screens. Not hooked up yet. 2020-08-15 15:29:47 +02:00
Christoph Oelckers 8595b9fa47 -play SW's intro through the screen job framework. 2020-08-15 13:04:15 +02:00
Christoph Oelckers 3f9cc1412c - transitioning helper for screen jobs. 2020-08-15 10:55:21 +02:00
Christoph Oelckers 3455610031 - base palette cleanup.
Avoid passing this anywhere in the client code. It should only be set right before rendering the 3D view and the only code using the base palette should be the 3D renderer and hud_drawsprite.
Also make the palette override CVARs 3D view only in debug mode.
2020-08-14 21:18:14 +02:00
Christoph Oelckers 249c5b5734 - removed some dead code. 2020-08-14 21:12:32 +02:00
Christoph Oelckers 66cb7f61a4 - fixed rendering on narrow screens with an aspect ratio less than 4:3 and removed some parts that are no longer needed. 2020-08-14 21:01:27 +02:00
Christoph Oelckers a5d9886aa9 - cleaned up the remnants of the old statusbar code. 2020-08-14 00:56:34 +02:00
Christoph Oelckers 67c340b573 - ported the inventory bar.
Now the panel system is only used for displaying the weapons.
2020-08-14 00:38:27 +02:00
Christoph Oelckers 70b2215f4e - ported the minibar HUD. 2020-08-13 22:37:58 +02:00
Christoph Oelckers 8c7b93ceef - ported the compass. 2020-08-13 22:13:56 +02:00
Christoph Oelckers 9ccf717311 - ported the inventory display on the status bar. 2020-08-13 21:57:53 +02:00
Christoph Oelckers eafaa56834 - armor and key display. 2020-08-13 21:14:01 +02:00
Christoph Oelckers 188b2d2daa - ammo and weapon display ported. 2020-08-13 20:14:53 +02:00
Christoph Oelckers b50bdb1ca1 - SW: started transition of the status bar. 2020-08-13 18:45:55 +02:00
Christoph Oelckers dc653bbdc0 - thinning out some crap. 2020-08-13 18:19:44 +02:00
Christoph Oelckers d7f8d1a5bf - replaced the border drawing code in SW with Blood's. 2020-08-13 17:54:17 +02:00
Christoph Oelckers 0b6f299d0e - removed the bot code.
This would become a refactoring hassle, maybe re-add it later?
2020-08-13 00:45:50 +02:00
Christoph Oelckers 4538068bcc - more SW cleanup, removed two more files. 2020-08-13 00:04:55 +02:00
Christoph Oelckers bb6972abb4 - SW: get rid of redundant common_game.h 2020-08-12 23:43:21 +02:00
Christoph Oelckers aef59ef523 - migrated SW cheats to the generic system, removed the more pointless of SWP's cheats and filled in a few blanks. 2020-08-12 22:24:51 +02:00
Evan Ramos 81f85ee480 SW: Fix regression causing the last heat seeker to be a normal missile
It was caused by the fix for crashing when firing outside the map.

Also port said fix to the bunny rockets.
2020-08-12 19:16:25 +02:00
Christoph Oelckers d3df4e580c - do not restart one-page image scrollers with Enter
Instead go back one menu level.

Fixed #129
2020-08-10 01:12:53 +02:00
Christoph Oelckers 4b69a181c3 - use symbolic constants for some statnums 2020-08-06 20:54:51 +02:00
Christoph Oelckers 9060abbafd - 8 more SW headers gone. 2020-08-06 00:18:45 +02:00
Christoph Oelckers 72806e27eb - cleanup work on SW
* consolidating smaller headers to reduce number of files
* remap all unmapped keyboard checks to corresponding buttons
2020-08-05 22:36:38 +02:00
Christoph Oelckers 4fef66c78a - SW script parser cleanup 2020-08-05 22:36:37 +02:00
NY00123 22b492a5b3 SW: If a saved load is loaded at a point which is right after killing
a boss, ensure that FinishTimer and FinishAnim are appropriately
updated. This commit bumps GameVersion.
Additionally, the set of FinishAnim to 0 in NewLevel had
to move to a different location (InitLevelGlobals2), so
it doesn't override the value stored in the saved game.

# Conflicts:
#	source/sw/src/game.cpp
2020-08-04 20:11:37 +02:00
Mitchell Richters 157933e902 - fixed regression from b9eef9c6a3 where the angle wouldn't apply if horizon was specified. 2020-08-04 23:13:22 +10:00
Mitchell Richters b9eef9c6a3 - make ang and horiz optional on each game's `warptocoords` CCMD as suggested in commentary for 1dc6edfa56. 2020-08-04 22:33:17 +10:00
Mitchell Richters a9b05eff86 - fix coolie death issues raised in https://forum.zdoom.org/viewtopic.php?f=340&t=69254 in manner suggested by OP. 2020-08-04 19:02:26 +10:00
Mitchell Richters 3e44d850b3 - fix issues with Exhumed and SW `warptocoords` CCMDs when cherry-picking from public branch. 2020-08-04 18:04:44 +10:00
Mitchell Richters 1dc6edfa56 - create SW dynamic CCMD `warptocoords`. 2020-08-04 17:53:34 +10:00
Christoph Oelckers 4bab061bd0 - removed some dead code from SW. 2020-08-03 20:53:00 +02:00
Christoph Oelckers d526c6401f - use the generic cheat system for Blood. 2020-08-03 20:51:31 +02:00
Mitchell Richters f0e0a3db41 - quick and dirty fix to get SW menu input cranking again (mostly for testing PR #77 under SW since it's the only game with a clock of 120/3). 2020-07-31 16:26:16 +10:00
Christoph Oelckers 218a9c84fd - removed the last remaining Blood helpers from the file system, also deleted a few short files whose contents could be moved. 2020-07-27 19:38:41 +02:00
Christoph Oelckers f9d48e1f68 - removed all the intermediate variables for the status bar size.
hud_size now gets used directly by the status bar code.
2020-07-25 13:26:56 +02:00
Christoph Oelckers 6227f9f7fd - optimizations for better savegame performance. 2020-07-21 21:32:38 +02:00
Christoph Oelckers 29e107ad24 - use CCMDs for weapon and inventory selection, courtesy of ZDuke. 2020-07-17 20:56:10 +02:00
Christoph Oelckers a0cd407632 - cleanup on pausing code. 2020-07-15 18:10:31 +02:00
Christoph Oelckers 99161e2e4a - made ps an array of player_struct like it originally was. 2020-07-15 00:26:58 +02:00
Christoph Oelckers 1e9679aceb - removed faketimerhandler and the last static remains of EDuke's netcode. 2020-07-14 21:15:37 +02:00
Christoph Oelckers 1a0b388570 - removed a few tabledivide uses in the game modules 2020-07-14 14:08:59 +02:00
Christoph Oelckers aa01adb2f1 - removed osd.h as it was merely a minimal wrapper around c_dispatch, giving some alias names.
Nothing that's needed when cutting ties to upstream.
2020-07-14 14:00:27 +02:00
Christoph Oelckers 34874d1a21 - migrated displayrest and took the opportunity to un-fuck the palette management. 2020-07-07 04:54:12 +02:00
Christoph Oelckers 8a1206edbc Merge remote-tracking branch 'remotes/origin/master' into back_to_basics2 2020-07-05 11:55:41 +02:00
Mitchell Richters c70cc474a0 - change mouse input from int to float and adjust games accordingly.
* Calculate game-side mousex/mousey divisions into the calculations performed in `InputState::GetMouseDelta()`.
* Fix mouse speed when `in_mousesmoothing` is true (wasn't factoring in / 3.f division used in non-true vector.
* Standard mouse forward/side movement speeds in Exhumed & SW with that of other games.
* Remove `strafeyaw` code from Duke/Exhumed/RR as it's not necessary and was leading to situations where the player would continually keep moving sideways even without input.
* Change mouse forward/side velocities to -= current value as is done with controller input and the player's angle/aim velocities.
2020-07-04 18:28:00 +02:00
Christoph Oelckers 2e98b2f8da - quote cleanup. 2020-06-30 22:53:15 +02:00
Christoph Oelckers 67fa7f8275 - work on Duke intro sequence.
Now without any Build drawing code, it goes directly to DrawTexture now. :)
2020-06-28 00:32:28 +02:00
Christoph Oelckers e0ad1aa0cd - cleanup of animlib.
* operate on a parameter-specified data structure instead of a global one
* moved error checks into the library code.
2020-06-27 11:47:31 +02:00
Mitchell Richters 8c723f52d1 - make controller input identical across all games.
* Convert axes in ControlInfo struct from int32_t to float as what's received from the backend.
* Remove all the scale up/down math since we don't need that with floats and replace with float constants that match old behaviour.
* Store q16mlook scaling as a constant for use with mouse and upcoming controller code.
* Add required controller code to Blood as the only game not to have working controllers.
* Fix typos in (gInput.forward > input.forward) for `ctrlGetInput()` in Blood.
* Remove use of `scaleAdjustmentToInterval()` on Exhumed and Shadow Warrior as they only process forward/side velocities within the game's ticrate.
* Repair angvel/aimvel scaling mistakes from d79a5d256d.
* Scale dyaw and dpitch by 25% for Shadow Warrior as the game runs 25% faster than the other games, leading to faster input.
2020-06-24 20:08:56 +02:00
Mitchell Richters 91cc97ced0 Change Next/Previous Weapon button handling for Shadow Warrior.
- Makes consistent with Duke 3D, RR and Blood.
2020-06-22 07:47:58 +02:00
Christoph Oelckers 990cb2acb8 -'shoot' replaced.
# Conflicts:
#	source/build/src/palette.cpp
2020-06-21 23:24:49 +02:00
Christoph Oelckers 198ed45357 - clean up redundancy 2020-06-20 10:58:47 +02:00
Christoph Oelckers 2c2b871083 - fixed texture validation checks. 2020-06-17 12:26:02 +02:00
Christoph Oelckers 2a29dbf793 - use backend independent code to render the camera textures. 2020-06-14 21:57:21 +02:00
Christoph Oelckers 946da7d622 - moved the textures used for the animations into the texture manager.
This is to allow giving them a texture ID so that they can be used from ZScript which has no access to naked textures.
This also consolidates AnimTexture and VpxTexture.
2020-06-14 20:27:13 +02:00
Christoph Oelckers d4cdb31464 - backend update to make the ZScript compiler work. 2020-06-14 18:58:30 +02:00
Mitchell Richters d79a5d256d - fix joystick scaling for all games.
* Repairs https://forum.zdoom.org/viewtopic.php?f=340&t=67239 and https://forum.zdoom.org/viewtopic.php?f=340&t=67933
* Values that come from GZDoom backend are too low to be suitable for the Build games which were dividing by 'analogExtent'.
* Remove definition of analogExtent from all games and define in inputstate.h, then define joyaxesScale as 75% of analogExtent to provide a bit of headroom and not have a scale of 1.0 be full speed.
* Invert the returned results of GetAxes() as the returned floats are reversed for build games.
* Leverage scaleAdjustmentToInverval() on game-side code to consistently scale the input irrespective of frame rate, vsync etc.
2020-06-12 16:44:08 +02:00
Christoph Oelckers 22aad4999c - use the engine backend to render the scene 2020-06-11 22:26:46 +02:00
Christoph Oelckers f0d208bf56 - fixed compile error. 2020-06-07 10:46:35 +02:00
NY00123 1a1039a2d3 Fix a possible jitter upon changing the player's action
(e.g., beginning to jump, or landing on ground);
Reproduced with the input being tied to framerate
while SO interpolation is toggled on.

This involves the following modifications:
- PF2_INPUT_CAN_TURN and PF2_INPUT_CAN_AIM are now additionally set
from various DoPlayerBegin* functions, allowing the player to continue
turning/aiming as usual (right before the next call to domovethings),
even in specific instances of player action changes.
- If PF2_INPUT_CAN_TURN/PF2_INPUT_CAN_AIM was set before and
after calling pp->DoPlayerAction from domovethings altogether,
ensure that the player's oq16ang/oq16horiz is updated by
making an appropriate call to DoPlayerTurn/DoPlayerHorizon. This
is done in case a call to DoPlayerTurn/DoPlayerHorizon is missed.
This change is not applied for a dead player, though.
2020-06-07 10:19:49 +02:00
NY00123 039458d14d sw/src/draw.cpp:drawscreen: Removing the PF_DEAD test
in 1a3c9e3a15ba788607dfd96ebcc75a2198be6d69 was a mistake.
The interpolation should still apply, albeit not while
the viewing angle is changed via the player's own input.
We should also continue interpolating in coop view.
2020-06-07 10:19:48 +02:00
NY00123 ce2aee49df SW: This should hopefully be a better way of fixing the lack of
interpolation of player turning/aiming/movement, while being carried
by a sector object, without SO interpolation. This is a continuation of
73a0aa394e906a65633d61f3c749c9b9b7e66aaa and bf31bc2987a3eccd31d343622327bd4ee0f9c5a1,
aiming to fix a jitter in case the player is continuously
getting pushed by a wall (e.g., on the boat in level 5).

Basically, this moves the relevant assignments from track.cpp:MovePlayer
and MovePoints to player.cpp:DoPlayerMove. Unless a call to one of these
functions has been missed, pushwall and clipmove can be called from
player.cpp in the following instances, which should be covered:
- Via DoPlayerMove, which is the function getting the fix now.
- Via DoPlayerSlide, which is called in the beginning of DoPlayerMove.
- Via DoPlayerCurrent when called from DoPlayerCrawl/DoPlayerWade,
followed by DoPlayerMove.
- Via DoPlayerCurrent when called from DoPlayerDive,
followed by DoPlayerMove if the player doesn't stop diving.

# Conflicts:
#	source/sw/src/track.cpp
2020-06-07 10:19:48 +02:00
Christoph Oelckers cf6855904d - took projection and view matrix out of the render state.
This is a preparation to migrate to GZDoom's HWViewpointUniforms buffer.
2020-06-04 18:46:44 +02:00
Christoph Oelckers 68c97e3c25 Merge branch 'master' of https://github.com/coelckers/Raze
# Conflicts:
#	source/core/gamecontrol.h
#	source/duke3d/src/game.cpp
#	source/exhumed/src/exhumed.cpp
#	source/rr/src/game.cpp
2020-05-31 23:30:10 +02:00
Mitchell Richters 33b6b85d57 SW: Amend how game pauses.
- Pausing game with Pause key now works again.
2020-05-31 23:19:54 +02:00
Christoph Oelckers efa1cd3048 - moved video files to 'common'.
# Conflicts:
#	source/blood/src/screen.cpp
2020-05-31 09:19:16 +02:00
Christoph Oelckers 1e2a3da5fd - video base code unified.
# Conflicts:
#	source/core/rendering/v_video.cpp
2020-05-31 09:18:43 +02:00
Christoph Oelckers edb2cb31ee - backend update with GZDoom model code. 2020-05-31 08:55:00 +02:00
NY00123 8a812cc329 SW: Call OSD_DisplayQueued in DemoPlayback,
so OSD commands can have an effect from here
2020-05-30 23:28:24 +02:00
NY00123 9bf5ee046e SW: Remove TitleLevel (probably dating back to 1995 prototype builds)
# Conflicts:
#	source/sw/src/game.cpp
2020-05-30 23:28:24 +02:00
NY00123 6aeb366a93 SW: Remove DemoOverride, ScenePlayBack and SceneLevel
# Conflicts:
#	source/sw/src/demo.cpp
#	source/sw/src/game.cpp
2020-05-30 23:28:04 +02:00
NY00123 6920ef8fc3 SW - interpso.cpp: Imperfect hack for jittery coolies in level 1's train
(with SO interpolation turned on). It would be nicer to have something
better structured than the given hack, but this currently seems to work,
while not breaking the sprites on the boat in the beginning of level 5.
2020-05-30 23:27:18 +02:00
NY00123 217bf454f4 sw/src/interpso.cpp:so_dointerpolations:
Move ratio calculation out of inner loop.
2020-05-30 23:27:18 +02:00
Christoph Oelckers 193b940eef - palette code cleanup. 2020-05-27 22:19:02 +02:00
Christoph Oelckers 29db3febb8 - updated the platform code to be mostly identical with GZDoom 2020-05-26 00:08:26 +02:00
Christoph Oelckers 55a3c62b59 - use GZDoom's 2D drawer.
Console and menu font colors are not ok yet, aside from that it works.
2020-05-25 17:11:32 +02:00
Christoph Oelckers a70b7fa698 - use the texture manager to handle texture data. 2020-05-24 23:26:47 +02:00
Christoph Oelckers 266364fc2e - properly implement texture offsets 2020-05-24 13:26:45 +02:00
Christoph Oelckers cbeb481d59 - what is it with passing data to subfunctions through global variables? :( 2020-05-24 09:04:25 +02:00
Christoph Oelckers 00e7b2fa25 - simple stuff from the texture manager inclusion commit.
To get this out of the way first...
2020-05-24 00:27:24 +02:00
Christoph Oelckers ae6403a205 - added a level of abstraction to the lookup table code to ease later refactoring. 2020-05-23 22:43:05 +02:00
Christoph Oelckers f929419a0a - refactoring of the lookup tables. 2020-05-23 22:43:04 +02:00
Christoph Oelckers b971bc2717 - avoid using global palette settings when drawing 2D content with a custom palette.
Instead pass the palette info with the render call to avoid stale global state.
2020-05-23 22:43:01 +02:00
Christoph Oelckers 8d3199514d - removed some 'pragma' cruft. 2020-05-23 13:08:10 +02:00
Christoph Oelckers 8bd5f12b42 - matching sound backend code with GZDoom.
# Conflicts:
#	source/core/sound/s_soundinternal.h
2020-05-23 12:59:11 +02:00
Christoph Oelckers 6a8efb7520 - update of music code, in particular separating the engine-specific lookup from the backend.
# Conflicts:
#	source/core/music/music.cpp

# Conflicts:
#	source/build/src/palette.cpp
2020-05-23 12:37:47 +02:00
Christoph Oelckers d0406e27b6 - all base palette data has been transitioned to GPalette. 2020-05-23 12:31:05 +02:00
Christoph Oelckers 6f9ee4b60f - store palettes in the palette container. 2020-05-23 12:31:05 +02:00
NY00123 cf22b4da0a sw/src/demo.cpp:DemoPlayBack: Add a call to timerUpdateClock, which
is now required. Previously, it would be called from faketimerhandler,
which in turn is called from the engine.
2020-05-22 23:41:13 +02:00
NY00123 a69f738287 sw/src/copysect.cpp: Temporarily disable interpolation of sector object
if any of its sectors is impacted by CopySectorWalls. Fixes
a possible flicker with the drill at the end of level 2.
2020-05-22 23:41:11 +02:00
NY00123 ccf6722b70 SW: Don't interpolate a sector object if the corresponding lasttic value is 0 2020-05-22 23:41:10 +02:00
NY00123 37c3f1cc46 SW: Add the macro SO_EMPTY and use it instead of
separate checks of the form sop->xmid == INT32_MAX
2020-05-22 23:41:09 +02:00
NY00123 d510b9b95a sw/src/sync.cpp:SOSync: Remove commented out code 2020-05-22 23:41:08 +02:00
NY00123 d43bffd118 SW: Remove unused DoubleInitAWE32 variable 2020-05-22 23:41:07 +02:00
NY00123 f94b38b138 SW: Modify getinput to update oq16ang/oq16horiz with the same amount
of change that camq16ang/camq16horiz gets. Such an update is possible
after making sure that UpdateInputs (faketimerhandler) is
never called from domovethings.

# Conflicts:
#	source/sw/src/game.cpp
2020-05-22 23:41:05 +02:00
NY00123 6b5cf9525b sw/src/network.cpp: Remove from UpdateInputs the checks of totalclock
and ready2send and the call to timerUpdateClock, which are now done
before calling UpdateInputs itself from RunLevel.

# Conflicts:
#	source/sw/src/network.cpp
2020-05-22 23:40:00 +02:00
NY00123 ae2bcdd1a6 Rename faketimerhandler -> UpdateInputs and keep an empty
faketimerhandler stub in SW. This basically deprecates
the usage of faketimerhandler in the game.
2020-05-22 23:39:45 +02:00
NY00123 6daf42a959 sw/src/game.cpp:RunLevel: Call faketimerhandler in a loop, based on code
from EDuke32-OldMP. Main difference from EDuke32-OldMP is that this is
done even while staying in the menu; Behaviors will otherwise break.
We should also call timerUpdateClock() before the loop, especially
after removing the call to this function from faketimerhandler soon.
2020-05-22 23:39:43 +02:00
NY00123 25b5d69cab SW: Remove commented out code accessing non-existing variable
# Conflicts:
#	source/sw/src/network.cpp
2020-05-22 23:39:42 +02:00
NY00123 7e2484f603 SW: Remove FAKETIMERHANDLER and calls to faketimerhandler via this macro
# Conflicts:
#	source/sw/src/sprite.cpp
2020-05-22 23:39:28 +02:00
NY00123 916cd01550 SW: While not exactly a favorite of mine, this fixes the floorz updates
of the secret rotating pillar in level 1 with SO interpolation.
The drill in level 2 is also covered. So far, SetVatorActive seems
to be the only place where interpolation of ceiling/floorz
may be set, outside of the SO interpolation code.
2020-05-22 23:39:12 +02:00
Christoph Oelckers f53b348782 - stop the railgun's active sound if another weapon is selected. 2020-05-22 23:02:25 +02:00
Evan Ramos 71dc4ff5a4 SW: Fail gracefully from WarpToArea instead of aborting 2020-05-22 18:29:21 +02:00
Evan Ramos f318d2282a SW: Clear the background during cinematics
# Conflicts:
#	source/sw/src/anim.cpp
2020-05-22 18:29:20 +02:00
Mitchell Richters d98813f00f SW: Allow sector object interpolations to be disabled for debugging.
New code is causing some issues. Upstream allow it to be toggled, so let's do that also.
2020-05-22 16:43:34 +02:00
Mitchell Richters 45cc95401f SW: Make game compile after upstream backports. 2020-05-21 18:47:37 +02:00
Evan Ramos 0ab81904c2 SW: Allow Strafe Left and Right to turn vehicles 2020-05-21 18:47:37 +02:00
Evan Ramos 9d11c7dfb1 SW: Add FOV support. 2020-05-21 18:47:37 +02:00
Evan Ramos edccdccfb4 SW: Fall back gracefully if map mirror tags are not fully correct 2020-05-21 18:47:37 +02:00
Evan Ramos e6dd2741f3 SW: Instrument Saveables with debug_break 2020-05-21 18:47:37 +02:00