Commit graph

320 commits

Author SHA1 Message Date
Christoph Oelckers
a087d566ee - more refactoring on SW's sound system:
* removed all cases of getting a sound handle and checking it later.
* In particular, refactor the cases where the handle is stored in a static local variable. These are fundamentally unsafe because nothing maintains these local variables.
* finished rewriting the PlaySound function. Let's hope this is what was intended, the entire coding here was not particularly good, mixing high and low level sound handling all on the same level.
* call the update routine each tic and not merely every 4th or 8th one, this kind of granularity was ok in 1997 but not with a modern sound engine.
2019-12-18 19:17:37 +01:00
Christoph Oelckers
75c76ccf66 - changed SW's PlaySound interface to take pointers to objects instead of pointers to coordinates.
With pointers to coordinates the sound engine cannot work, so this had to be changed globally.
2019-12-18 11:09:01 +01:00
Christoph Oelckers
a7075bc1b0 - SW sound WIP
* removed old sound loading code, which was the last bit to use cacheAllocateBlock which is also gone now.
* cleanup of player sound code. All game side tracking of the sound resources has been removed.

does not compile yet.
2019-12-17 23:25:07 +01:00
Christoph Oelckers
650b53454d - cleaned up SW sound code a bit and thinned out the original console code 2019-12-17 21:33:53 +01:00
Christoph Oelckers
fa7638c446 - removed the old sound system header from Duke and RR frontends and fixed every report this produced:
* reverb/echo is not yet implemented, so there's two stub functions for now.
* RTS needs to be done differently, because the sound engine cannot play raw buffers without any control data.
2019-12-16 19:18:03 +01:00
Christoph Oelckers
d24bd0fc14 - added refactored sound code to RR frontend.
- removed most code using the low level sound interface directly from Duke and RR frontends.
2019-12-16 16:18:47 +01:00
Christoph Oelckers
9b9c009de9 - copybyte is not the same as memcpy.
It should be inlined to use it, though, because homegrown loops for this stuff may have been ok in 1995, but not in 2019.
2019-12-15 21:06:41 +01:00
Christoph Oelckers
62660e76f3 - sound system rework. Not complete. 2019-12-15 10:00:25 +01:00
Christoph Oelckers
d23b4a7e33 - hooked up ZDoom' joystick code and removed the remaining parts of the old MACT input library. 2019-12-14 20:15:15 +01:00
Christoph Oelckers
cbfb79977a - adjustments to make it compile with the new menu code. 2019-12-13 21:01:14 +01:00
Christoph Oelckers
052ed5fff7 Merge branch 'master' into powerslave 2019-12-13 20:43:23 +01:00
Christoph Oelckers
4d28940d2f - commented stuff out to make it compile. 2019-12-13 00:19:16 +01:00
Christoph Oelckers
3f524d7026 - set currentLevel in SW 2019-12-11 02:30:34 +01:00
Christoph Oelckers
875678f20b - transitioned Shadow Warrior to the global mapinfo 2019-12-11 02:01:11 +01:00
Christoph Oelckers
0e19d4262e - savegame and mapinfo cleanup in DN3D and RR frontends.
Also added an "end game" flag to the mapinfo. For those who like to assemble single levels into custom episodes. More features for that to come. ;)
2019-12-10 22:22:59 +01:00
Christoph Oelckers
16818d2d71 - exported Shadow Warrior strings to stringtable.
The MP obituaries are not handled yet, they were only copied but there's no code using them.
2019-12-09 21:19:05 +01:00
Christoph Oelckers
6ef1f96b40 - added SWP's parser for theme music definitions.
Because, why not? The SWCustom I use already contains them.
However, since the original source does not play theme MIDIs - only CDA, there's a switch to disable them.
2019-12-09 20:12:54 +01:00
Christoph Oelckers
e62f6cbc20 - weapon and ammo names are now also localizable. 2019-12-09 19:49:36 +01:00
Christoph Oelckers
da1900dc8a - same for inventory pickup messages. 2019-12-09 19:00:30 +01:00
Christoph Oelckers
670c8b1408 - use the quote array to store the key, door and fortune cookie messages in Shadow Warrior.
This is infinitely better than leaking char pointers.
2019-12-09 18:40:07 +01:00
Christoph Oelckers
ba978ab0d9 - text update and missing includes. 2019-12-09 17:17:15 +01:00
Christoph Oelckers
0604c72586 - code cleanup
removed some unused definitions
replaced the copybuf* functions with memcpy. These days doing homegrown copy loops is not efficient anymore.
2019-12-09 01:39:40 +01:00
Christoph Oelckers
66218dd074 - connect SW with statistics code and added missing function for Blood
# Conflicts:
#	source/blood/src/blood.h
#	source/common/menu/messagebox.cpp
#	source/sw/src/game.cpp
#	source/sw/src/game.h
2019-12-09 01:03:18 +01:00
Christoph Oelckers
9f25c9c117 - some string rework
* removed temporary placeholder content from string init function. All this gets properly read from definition files now.
* preinitialize a few quotes that are used for status display purposes and are needed in all games
* only use the global episode name table in Blood to avoid redundancy
* let SW's swcustom parser write to the global tables instead of local ones.
2019-12-09 01:00:46 +01:00
Christoph Oelckers
f2d0665557 - connected the screen size CVAR and slider with Shadow Warrior's internal setting. 2019-12-07 21:39:17 +01:00
Christoph Oelckers
8f90cc8324 - more Shadow Warrior cleanup. 2019-12-07 20:48:16 +01:00
Christoph Oelckers
0157446ad1 - thorough cleanup of the Shadow Warrior music code.
This was one huge mess where nothing fit together.
Also added an enhancement that the CD Audio boss theme tracks are also played when CD music is generally off, because these have no equivalent in MIDI. This needs to be checked if it's stylistically ok, though.
2019-12-07 19:57:19 +01:00
Christoph Oelckers
2ed03214b1 - disable the save option in SW's main menu if no game is running. 2019-12-07 15:07:43 +01:00
Christoph Oelckers
9960b505e8 - added captions to SW's game menus.
- made Duke Nukem's quote strings localizable.
2019-12-07 12:42:25 +01:00
Christoph Oelckers
a45b1ca637 - fixed anim loading in Shadow Warrior. 2019-12-07 11:48:41 +01:00
Christoph Oelckers
30cbcb54b1 - renamed the remaining file system access wrappers in cache1d.h 2019-12-07 10:31:27 +01:00
Christoph Oelckers
749eda32c5 - moved kopenfilereader into the FileSystem class. 2019-12-07 10:14:51 +01:00
Christoph Oelckers
ef87d2d4f9 - always pause the game when the console is open. 2019-12-07 10:01:03 +01:00
Christoph Oelckers
66756bfa13 - final fixes for Blood's and Duke Nukem's menus. 2019-12-06 18:36:49 +01:00
Christoph Oelckers
7a9138cde0 - made the confirmation screen functional.
This works but still needs a bit of visual work.
2019-12-05 23:17:55 +01:00
Christoph Oelckers
db425a1228 - fixed keybinding and mouse cursor display.
- fixed some merge issues in Shadow Warrior.
2019-12-05 21:39:02 +01:00
Christoph Oelckers
223c6d628e Merge branch 'master' into menu_for_real 2019-12-05 21:08:46 +01:00
Christoph Oelckers
169d68f583 - fixed stuff and cleaned out most of the old menu code. 2019-12-05 19:00:40 +01:00
hendricks266
5624c9b5b0 SW: Avoid a one-pixel tall hall of mirrors above the full status bar
git-svn-id: https://svn.eduke32.com/eduke32@8355 1a8010ca-5511-0410-912e-c29ae57300e0
2019-12-05 17:23:06 +01:00
hendricks266
007d16712c SW: Draw the status bar under the menu instead of over it
git-svn-id: https://svn.eduke32.com/eduke32@8354 1a8010ca-5511-0410-912e-c29ae57300e0
2019-12-05 17:23:05 +01:00
hendricks266
22a778a22c SW: Don't show the status bar during the end of level screen
git-svn-id: https://svn.eduke32.com/eduke32@8353 1a8010ca-5511-0410-912e-c29ae57300e0
2019-12-05 17:23:04 +01:00
hendricks266
1507e9fd15 SW: Left-pin the mini HUD in widescreen
git-svn-id: https://svn.eduke32.com/eduke32@8352 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/sw/src/text.cpp
2019-12-05 17:23:03 +01:00
Christoph Oelckers
628bd9efc6 Filled in the rest of the menus
Sound is only partially functional, video mode completely nonfunctional, but it makes no sense adjusting them to the current backend code when it's due for replacement.
2019-12-05 00:47:05 +01:00
Christoph Oelckers
cb0538d0f2 - mouse aiming cleanup.
Reverted this to a sane setting, as it was in the original games and in all other games I have ever seen, i.e. there is a global setting to enable mouse view, and a button to manually trigger it. The toggle can be easily handled by flipping the CVAR directly.
The main problem here was that it triggered a few cases for mouse-less gameplay in the default case with a mouse present, because the mouseaim CVAR was no longer what the game expected.
This misguided change seems to have originated in JFDuke but by now had propagated to all the other games as well, the code was in all 4 frontends.
2019-12-05 01:08:35 +01:00
Christoph Oelckers
3ea526055f - added a generic message display, using ZDoom's code.
This is mainly meant for Nam and WW2GI which have an ugly-as-hell font for these texts.
2019-12-04 23:07:02 +01:00
Christoph Oelckers
6d04f0f159 - added option to print custom messages with Duke Nukem's quote system.
- hooked up all front ends with a generic message printing function so that common code can access the native message displays. This is needed for consolidation of some input actions which are mostly identical but print messages.
- preparations for a generic message system.
2019-12-04 21:35:35 +01:00
Christoph Oelckers
4cefc1db83 Merge branch 'master' into menu_for_real 2019-12-04 17:25:40 +01:00
Christoph Oelckers
c561255018 - moved the application of in_mousebias and in_mousedeadzone into the backend code.
This piece was repeated 6x for each call to CONTROL_GetInput, creating quite a bit of redundancy.
2019-12-03 20:58:43 +01:00
Christoph Oelckers
6f9494435a - adjustment for last commit. 2019-12-03 17:40:35 +01:00
hendricks266
c27616508e SW: Move HIT_PLAX_WALL out of the bit range used for limit raised struct IDs
git-svn-id: https://svn.eduke32.com/eduke32@8350 1a8010ca-5511-0410-912e-c29ae57300e0
2019-12-03 17:32:50 +01:00
hendricks266
863d35d7c2 SW: Activate ASSERT macro with RELEASE=0 builds
git-svn-id: https://svn.eduke32.com/eduke32@8349 1a8010ca-5511-0410-912e-c29ae57300e0
2019-12-03 17:32:49 +01:00
hendricks266
823e47f3e8 SW: Fix assertions and OOB so that the player can noclip OOB
git-svn-id: https://svn.eduke32.com/eduke32@8348 1a8010ca-5511-0410-912e-c29ae57300e0
2019-12-03 17:32:48 +01:00
hendricks266
f19848a1b3 SW: Address Sanitization commenceth
git-svn-id: https://svn.eduke32.com/eduke32@8347 1a8010ca-5511-0410-912e-c29ae57300e0
2019-12-03 17:32:46 +01:00
hendricks266
820bd2545c SW: Get widescreen aspect working
git-svn-id: https://svn.eduke32.com/eduke32@8346 1a8010ca-5511-0410-912e-c29ae57300e0
2019-12-03 17:32:45 +01:00
Christoph Oelckers
65ae00fb74 - completion of controls menu
- some message printing cleanup in SW frontend. This still has its native console that needs to be removed.
2019-12-03 00:57:03 +01:00
Christoph Oelckers
79ced02d36 - implemented the Shadow Warrior menu interface. 2019-12-03 00:01:04 +01:00
Christoph Oelckers
51083f6d51 Merge branch 'master' into powerslave 2019-12-02 21:14:08 +01:00
Christoph Oelckers
702f91b6b5 - disconnected Shadow Warrior's menu so it can be replaced.
Unlike the other games this was a lot more invasive
2019-12-02 21:05:19 +01:00
Christoph Oelckers
26daff79db - fixed compile errors and updated string table. 2019-12-02 18:11:10 +01:00
Christoph Oelckers
aed05840ae - removed the mouseInactiveConditional interface function.
This was only a crutch to let the input interface work with the original menus.

Now that the one in Blood is gone, all the conditions are no longer relevant. (Shadow Warrior never got far enough to implement this)
2019-12-01 10:31:44 +01:00
Christoph Oelckers
55ba1116ec - fixing the last commit. 2019-12-01 09:03:51 +01:00
Christoph Oelckers
8a98f9b3ca - removed quitevent.
This was some meticulously preserved relic of bad old DOS times used to block OS facilities to close an app.
Since this has been worked around at a lower level already the variable was essentially without function but some quite bad code depended on it.
2019-12-01 09:02:17 +01:00
Christoph Oelckers
2a9e4fca46 WIP safety commit 2019-11-30 19:23:54 +01:00
Christoph Oelckers
9cb6c65223 - fixed errors in SW merge. 2019-11-30 10:07:25 +01:00
Christoph Oelckers
3c4c8af20c Merge branch 'master' into menu_for_real 2019-11-30 09:33:35 +01:00
hendricks266
68668058c9 SW: Fix cheats only granting one Uzi instead of two
git-svn-id: https://svn.eduke32.com/eduke32@8343 1a8010ca-5511-0410-912e-c29ae57300e0
2019-11-30 09:28:11 +01:00
hendricks266
769b359928 SW: Add Alt Weapon Mode gamefunc and bind it to MOUSE3 by default
git-svn-id: https://svn.eduke32.com/eduke32@8342 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/sw/src/_functio.h
#	source/sw/src/function.h
2019-11-30 09:28:10 +01:00
hendricks266
361a964067 SW: Fix NUMGAMEFUNCTIONS and mouse button select menu
git-svn-id: https://svn.eduke32.com/eduke32@8340 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/sw/src/function.h
#	source/sw/src/menus.cpp
2019-11-30 09:26:50 +01:00
hendricks266
15b8bc959f SW: Add Equip Pickups weapon auto-switching toggle
git-svn-id: https://svn.eduke32.com/eduke32@8339 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/sw/src/swconfig.cpp
2019-11-30 09:26:02 +01:00
hendricks266
8d2159ab70 SW: Implement Darts option, including bloody frames
git-svn-id: https://svn.eduke32.com/eduke32@8338 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/sw/src/menus.cpp
#	source/sw/src/panel.cpp
#	source/sw/src/sprite.cpp
#	source/sw/src/swconfig.cpp
2019-11-30 09:24:32 +01:00
hendricks266
69c01587c7 SW: Make quick save and load actually quick
git-svn-id: https://svn.eduke32.com/eduke32@8337 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/sw/src/game.cpp
#	source/sw/src/game.h
#	source/sw/src/menus.cpp
2019-11-30 09:23:47 +01:00
hendricks266
8b78440f76 SW: Upgrade SoundAngle() from the original 5-bit precision to EDuke32's 7-bit
git-svn-id: https://svn.eduke32.com/eduke32@8336 1a8010ca-5511-0410-912e-c29ae57300e0
2019-11-30 09:21:40 +01:00
hendricks266
1cac2c76c6 SW: Add debug_break() to _Assert()
git-svn-id: https://svn.eduke32.com/eduke32@8335 1a8010ca-5511-0410-912e-c29ae57300e0
2019-11-30 09:21:39 +01:00
Christoph Oelckers
d474478800 Merge branch 'master' into powerslave
# Conflicts:
#	wadsrc/static/demolition/demolition.grpinfo
2019-11-30 01:12:20 +01:00
Christoph Oelckers
07ac12110f - removed some piece of obsolete code merged from upstream. 2019-11-30 01:07:46 +01:00
Christoph Oelckers
6d110da209 - removed some piece of obsolete code merged from upstream. 2019-11-29 20:14:45 +01:00
Christoph Oelckers
a7bbd7324e Merge branch 'master' into menu_for_real 2019-11-29 19:55:16 +01:00
hendricks266
f19c9eb840 SW: Clean up startup messages
git-svn-id: https://svn.eduke32.com/eduke32@8328 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/sw/src/game.cpp
#	source/sw/src/grpscan.cpp
2019-11-29 17:29:11 +01:00
Christoph Oelckers
5590abd471 Merge branch 'master' into menu_for_real 2019-11-29 00:49:33 +01:00
hendricks266
0dbf0a36a1 SW: Rename the poorly named "Cool Stuff" menu entry to "Credits" and clean it up
git-svn-id: https://svn.eduke32.com/eduke32@8326 1a8010ca-5511-0410-912e-c29ae57300e0
2019-11-29 00:48:17 +01:00
hendricks266
d4eb10d10d SW: Fix saves
Dynamically-allocated structs strike again.

git-svn-id: https://svn.eduke32.com/eduke32@8325 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/sw/src/saveable.h
2019-11-29 00:48:16 +01:00
Christoph Oelckers
115675417a Merge branch 'master' into powerslave 2019-11-28 17:07:11 +01:00
Christoph Oelckers
324056ad88 - more cleanup on music code
* removed some redundant functionality (e.g. Shift-F5 to change - use the console for that!)
* removed a few more leftover parts of the old music system
* savegames should not do more than resuming the music at the point of saving. (DN3D and RR only so far. Blood to be done.)
* handle music enabling/disabling in the backend, which simply knows better what to do. This was only working in the menu, so changing the CVAR had no effect.
2019-11-28 03:18:58 +01:00
Christoph Oelckers
8492e3c67a - migrated SW's savegame code to the same containers as the other front ends.
Fortunately everything here was wrapped in macros so that it was relatively simple to change.
2019-11-27 19:31:58 +01:00
Christoph Oelckers
3bb46a4d8d Merge branch 'master' into menu_for_real 2019-11-27 18:04:44 +01:00
hendricks266
0a70c5e55f SW: Sanitize all uses of wall.nextwall to prevent OOBs
git-svn-id: https://svn.eduke32.com/eduke32@8322 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/sw/src/jnstub.cpp
#	source/sw/src/sector.cpp
2019-11-27 18:04:01 +01:00
Christoph Oelckers
723b210c95 - major work on savegame code
Not tested yet!

* Added a JSON-based header to the savegames so that the unified menu can read from a common data source.
* moved loading and saving of frontend independent data to the wrapper so that support is automatic.
2019-11-27 00:41:26 +01:00
Christoph Oelckers
0f4d80b5d3 Merge branch 'master' into menu_for_real 2019-11-26 19:19:21 +01:00
Christoph Oelckers
abdd807e7f - fixed merge errors. 2019-11-26 19:10:24 +01:00
hendricks266
510e737360 SW: Fix "MV_GetVoice(): bad handle" log spam
git-svn-id: https://svn.eduke32.com/eduke32@8311 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/sw/src/draw.cpp
#	source/sw/src/menus.cpp
2019-11-26 18:08:43 +01:00
hendricks266
f411b72783 SW: Fix widescreen flickering in end of level screen
git-svn-id: https://svn.eduke32.com/eduke32@8310 1a8010ca-5511-0410-912e-c29ae57300e0
2019-11-26 18:06:41 +01:00
hendricks266
1a0b363ded SW: Allow the Run key to Walk when AutoRun is enabled
git-svn-id: https://svn.eduke32.com/eduke32@8309 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/sw/src/game.cpp
#	source/sw/src/player.cpp
2019-11-26 18:06:40 +01:00
hendricks266
7fb425aebb SW: Fix non-debug builds on Windows
git-svn-id: https://svn.eduke32.com/eduke32@8308 1a8010ca-5511-0410-912e-c29ae57300e0
2019-11-26 18:04:51 +01:00
hendricks266
83cfcb65a8 SW: Update the port credits
Still far from perfect.

git-svn-id: https://svn.eduke32.com/eduke32@8307 1a8010ca-5511-0410-912e-c29ae57300e0
2019-11-26 18:04:50 +01:00
hendricks266
9dde07ced9 SW: Copy the sln==1 GetUpperLowerSector case from the editor to the game
This avoids upper and lower remaining unmodified.

Sector 469 in Seppuku Station causes it!

git-svn-id: https://svn.eduke32.com/eduke32@8306 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/sw/src/brooms.cpp
2019-11-26 18:04:48 +01:00
hendricks266
a51e91d4e9 SW: Fix keyboard input
git-svn-id: https://svn.eduke32.com/eduke32@8303 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/duke3d/src/config.cpp
#	source/duke3d/src/menus.cpp
#	source/mact/include/control.h
#	source/mact/src/control.cpp
#	source/sw/src/config.cpp
#	source/sw/src/menus.cpp
2019-11-26 18:03:13 +01:00
hendricks266
383ecda2b2 SW: Avoid an OOB in GetUpperLowerSector
git-svn-id: https://svn.eduke32.com/eduke32@8302 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/sw/src/brooms.cpp
2019-11-26 17:59:30 +01:00
hendricks266
fd3ec56827 SW: Fix OOB access when viewing a mirror
git-svn-id: https://svn.eduke32.com/eduke32@8299 1a8010ca-5511-0410-912e-c29ae57300e0
2019-11-26 17:58:20 +01:00
hendricks266
2fc49b3489 SW: Fix mouse aiming
git-svn-id: https://svn.eduke32.com/eduke32@8298 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/sw/src/config.cpp
#	source/sw/src/game.cpp
2019-11-26 17:58:19 +01:00
hendricks266
92a699b7eb SW: Fix enough OOBs to get in-game
git-svn-id: https://svn.eduke32.com/eduke32@8295 1a8010ca-5511-0410-912e-c29ae57300e0

# Conflicts:
#	source/sw/src/_functio.h
#	source/sw/src/config.cpp
#	source/sw/src/sector.cpp
2019-11-26 17:50:55 +01:00