Commit graph

1049 commits

Author SHA1 Message Date
Christoph Oelckers
055b310d60 - rewrote all remaining places that used wm_msgbox to throw a fatal error instead so that the global error handler can deal with the messages.
This eliminates another piece of hideous code.
This commit also moves the memory error handler to the common code, so that all games can call it if triggered.
2019-12-24 19:59:14 +01:00
Christoph Oelckers
43033e830a - Blood now also starts the first level without leaks.
I had to refactor the LoadSave data to allow automatic takedown, the linked list was not the most convenient thing - an array is better.
2019-12-24 19:47:34 +01:00
Christoph Oelckers
2820dc85a8 - plugged more memory leaks.
I can now start the first Duke Nukem level, exit with Alt-F4 and no leaked memory blocks get reported.
2019-12-24 18:53:29 +01:00
Christoph Oelckers
1c46c6da9d - more leaks plugged, plus rerouting exception messages to the log window. 2019-12-24 16:30:33 +01:00
Christoph Oelckers
0d908960ed - started fixing memory leaks: Console and clip shapes done. 2019-12-24 16:09:43 +01:00
Christoph Oelckers
58d0585eaa - replaced EDuke's game selector with GZDoom's. 2019-12-24 15:28:00 +01:00
Christoph Oelckers
e8d7777f4a - mouse input works again after cleaning out the remaining cruft of the old input code. 2019-12-24 13:54:50 +01:00
Christoph Oelckers
1b9a2f5932 - disabled the message entering code.
This needs to be replaced with the game independent ZDoom version and hooked up properly, but it of low priority because it's a multiplayer only feature.
2019-12-24 13:21:36 +01:00
Christoph Oelckers
a870df840e - hooked up the input system and did a major cleanup.
Much of the old system is no longer needed with all buttons being handled as keys.
Mouse axis movement is not working yet.
2019-12-24 12:59:26 +01:00
Christoph Oelckers
141887263d - header cleanup 2019-12-23 21:19:42 +01:00
Christoph Oelckers
9ab8a8c737 - refactored the coordinate printout to a stat and removed printext256 and the associated font. 2019-12-23 20:55:12 +01:00
Christoph Oelckers
3b98635170 - removed all remaining references to SDL. The Windows version is now fully native. 2019-12-23 20:03:03 +01:00
Christoph Oelckers
62ecedf1f8 - got it to the point where it can render to the GL surface from the native backend. 2019-12-23 19:37:40 +01:00
Christoph Oelckers
a1f7f0cc30 - added the GL framebuffer class.
Everything compiles again but obviously no init code will run for now.
2019-12-23 15:40:17 +01:00
Christoph Oelckers
6e9631f2d8 - fixed all undefined symbols except OpenGLFrameBuffer. 2019-12-23 10:53:58 +01:00
Christoph Oelckers
10683e9123 - added GZDoom's Windows backend code.
Compiles but doesn't link yet.
2019-12-22 20:55:47 +01:00
Christoph Oelckers
3914eb5f85 - set up some basic reverb.
I'm not sure if this is working out as the original "reverb" was just too crappy and generic. It may be best to just disable it.
2019-12-22 17:43:39 +01:00
Christoph Oelckers
3cb68b2bf0 - replaced the semi-broken screenshot name generator.
Also took this file out of the 'build' folder, now that all code in here comes from elsewhere.
This also removes a few dead declarations.
2019-12-19 19:47:51 +01:00
Christoph Oelckers
aa8452a4b0 - backported IsSourcePlayingSomething fix from GZDoom. 2019-12-19 11:47:47 +01:00
Christoph Oelckers
c35ebeadff - fixed: Global sounds were started as 3D if anything but ATTN_NONE was used, regarding in them not playing. 2019-12-19 09:43:43 +01:00
Christoph Oelckers
92c8e4c110 - maintain ambient sounds in a separate structure. 2019-12-19 01:20:43 +01:00
Christoph Oelckers
3f9657b96a - removed all leftover dependencies on the old sound backend. 2019-12-18 22:24:50 +01:00
Christoph Oelckers
591ace496f - SW sound refactoring complete, not tested yet. 2019-12-18 22:13:19 +01:00
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
7916b16efc - fixed undefined behavior with iterating over null unique_ptrs.
I have no idea why this works most of the time - it should crash right away.
2019-12-17 20:08:59 +01:00
Christoph Oelckers
706157d623 - converted Blood's sound system to the OpenAL sound engine.
Now, this code was one big mess of strange design, let's hope it sounds better with a real 3D mixer now.
2019-12-17 19:37:05 +01:00
Christoph Oelckers
4d5755ca67 - update of the sound engine for unlimited channels per source.
Blood needs this.
2019-12-17 00:29:38 +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
fbfb1972b8 - fixed a few places where the wrong sound ID was checked. 2019-12-16 17:41:44 +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
b38d8a6dc2 - fixed 16 bit VOC loader. 2019-12-16 13:18:27 +01:00
Christoph Oelckers
fd9a3a9f16 - fixed lump filtering. 2019-12-16 13:03:22 +01:00
Christoph Oelckers
9adb4dd98d - pass correct sound ID to frontend for position calculation and minor improvements on debug printer. 2019-12-16 12:32:42 +01:00
Christoph Oelckers
ea9a84752f - switched the volume slider to the OpenAL backend. 2019-12-16 09:32:58 +01:00
Christoph Oelckers
938db6d35d - sounds in the menu are working now.
Since the in-game sound is paused in the menu these sounds need the CHAN_UI flag to play.
2019-12-16 08:19:57 +01:00
Christoph Oelckers
22ef66209d - sound is finally playing, but the volume needs balancing and positioning doesn't seem to be 100% correct. 2019-12-15 20:16:36 +01:00
Christoph Oelckers
4f9eda189a - a few sounds play, but it's still very buggy. 2019-12-15 19:00:41 +01:00
Christoph Oelckers
38dc39b8cd - got it to start, cannot hear anything... 2019-12-15 17:16:11 +01:00
Christoph Oelckers
d7ddd620e4 - added some final missing pieces to the sound code. 2019-12-15 16:32:39 +01:00
Christoph Oelckers
a28cd17454 - refactoring of DN3D sound code complete but not tested yet. 2019-12-15 13:34:00 +01:00
Christoph Oelckers
dba1a348d5 Merge branch 'master' into sound 2019-12-15 07:57:48 +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
957d997353 - made joystick configuration menu operational. 2019-12-14 19:21:49 +01:00
Christoph Oelckers
91f83d4c55 - input code cleanup and addition of ZDoom's joystick code, which is not fully connected yet. 2019-12-14 17:15:17 +01:00
Christoph Oelckers
28cbecea67 - fixed some menu issues.
The submenus still do not work. Something's off here.
2019-12-14 13:40:58 +01:00
Christoph Oelckers
cc81b95570 - main menu works in the common framework.
The rest is messed up, though. This menu is really on an entirely different level of crappiness, even for a 1995 game.
2019-12-14 12:39:18 +01:00
Christoph Oelckers
7e73073103 - Exhumed menu definition. 2019-12-13 21:44:51 +01:00
Christoph Oelckers
052ed5fff7 Merge branch 'master' into powerslave 2019-12-13 20:43:23 +01:00
Christoph Oelckers
b13ee90aa0 - first steps trying to get the game to work. 2019-12-13 00:19:34 +01:00
Christoph Oelckers
773c480940 - this sound system is too insane to be ported. 2019-12-12 21:42:58 +01:00
Christoph Oelckers
c5c2873223 - added GZDoom's sound engine.
This is not connected with the games yet.
2019-12-12 19:21:36 +01:00
Christoph Oelckers
86dc909559 - added detection logic for zipped versions of the Cryptic Passage add-on for Blood and the Route66 add-on for Redneck Rampage.
- added command line options to load the original file dump of both mods in the game directory.
- both also require loading additional non-standard-named .art files
2019-12-11 23:41:05 +01:00
Christoph Oelckers
7942bc9490 - completed work on Shadow Warrior main menu.
This one will definitely be a problem for localization because the font is extremely large.
2019-12-11 20:35:25 +01:00
Christoph Oelckers
ec96ae8992 - cleanup of -map setup. 2019-12-11 01:11:35 +01:00
Christoph Oelckers
cb051b44ea - removed unused compression records from savegame header 2019-12-11 01:10:59 +01:00
Christoph Oelckers
5c0cd5114d - transitioned Blood to the common mapinfo system. 2019-12-11 00:57:53 +01:00
Christoph Oelckers
cc33c6a0ed - deactivate statistics for user maps.
This really isn't controllable.
2019-12-10 23:11:02 +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
4cc22e155f - better handling for maps without names.
Use the file's base part as name if that happens.
2019-12-10 17:35:28 +01:00
Christoph Oelckers
4f04fe66de - transitioned RR to the new mapinfo 2019-12-10 00:31:55 +01:00
Christoph Oelckers
3b57f38e55 - started transitioning to a global mapinfo list.
This will make it a lot easier for cross-game parts of the engine to query game state.
So far the EDuke frontend has been ported over.
2019-12-10 00:01:45 +01:00
Christoph Oelckers
782dfcdc54 - changed licenses in a few files.
These originated from GZDoom and originally contained original Doom code, but for Demolition the offending parts are no longer present so the ZDoom-BSD license applies now.
2019-12-09 17:29:31 +01:00
Christoph Oelckers
5e9b874610 - exported most of Blood's text to the string table
MP messages with %s yet to do.
2019-12-09 02:01:30 +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
4ef9ec6708 - call STAT_StartNewGame globally from the menu 2019-12-09 01:00:46 +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
ff50a1681f - simplified the music playing interface a bit.
#
2019-12-07 18:28:30 +01:00
Christoph Oelckers
a05dab66f7 - color tweaking for the options menu. 2019-12-07 15:45:29 +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
0342b96335 - cleaned out the remaining wrappers from cache1d.h and use the file system directly instead. 2019-12-07 10:49:23 +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
ddfb2223db - added a directory list function to the file system.
- fixed lookup for resources by ID - it always picked the first candidate from the hash chain without checking the actual ID.
2019-12-07 09:44:43 +01:00
Christoph Oelckers
7d7507d453 - always add movie and music subdirectories. 2019-12-07 00:57:45 +01:00
Christoph Oelckers
7a8208eb2f - fixed out of bounds memory access. 2019-12-06 23:20:18 +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
a0fe7f4048 - more mouse fixes. Most of the menu is now mouse controllable again.
The exceptions are the text screens which do not react to the mouse and the confirmation screen which treats a mouse click as a cancel event.
2019-12-06 00:06:41 +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
1b9d1943c9 - initialize all dynamic music related menus. 2019-12-05 20:50:19 +01:00
Christoph Oelckers
54177cd27d - added the animated player display. 2019-12-05 19:52: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
Christoph Oelckers
6914408453 - fixed writeback of hud_size CVAR
G_ChangeHudLayout must ensure that the written value is ok, otherwise the auto validation in the CVAR can screw things up.
2019-12-05 00:54:55 +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
1b1fad6e13 - forgot to save this. 2019-12-05 01:17:28 +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
525cf28d29 - commented FBaseCVar::GetHumanString back in.
This had to be deactivated when adding the code, but was forgotten when everything was ready.
2019-12-04 23:09:09 +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
dca118881a - added graphics for the mouse back button and reactivated the code for it. 2019-12-04 17:55:43 +01:00
Christoph Oelckers
7d1eb74b5e - more menus implemented 2019-12-04 01:38:51 +01:00
Christoph Oelckers
6a6d6e3694 - fixed quote init. 2019-12-04 00:38:43 +01:00
Christoph Oelckers
72857db17b - refactor of the quote storage.
This was consolidated for both EDuke and RedNukem frontends, put into a class with strict access control and the length limit was lifted.
The new class will eventually allow better localization control.
2019-12-04 00:28:28 +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
fb5d944170 - made the mouse sensitivity CVARs floating point so that the menu can display them properly.
- disabled the mouse movement sensitivity CVARs pending a refactoring of the code to handle them in the input backend instead of the individual input handlers.
2019-12-03 20:49:56 +01:00
Christoph Oelckers
49e0e551d6 - fixed the sliders. 2019-12-03 20:32:35 +01:00
Christoph Oelckers
6245a0e2e2 - added mouse and controller menus
The controller menu obviously does not work yet, it needs quite a bit of backing code fron GZDoom first.
2019-12-03 01:21:27 +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
bc3a921a72 - fixed newly added menu content. 2019-12-02 19:21:45 +01:00
Christoph Oelckers
026cc7153c - externalized the controller bindings and removed all code responsible for maintaining them separately.
Bindings were changed a bit because what was there was a very poor default for my own controller.
2019-12-02 18:33:11 +01:00
Christoph Oelckers
26daff79db - fixed compile errors and updated string table. 2019-12-02 18:11:10 +01:00
Christoph Oelckers
00b2467eea - WIP keybinding cleanup 2019-12-02 02:07:32 +01:00
Christoph Oelckers
71c2a8f33a - made the main option menu work. 2019-12-02 00:16:48 +01:00
Christoph Oelckers
e743268c4b - Blood load/save works. 2019-12-01 22:54:52 +01:00
Christoph Oelckers
eb668180c8 - implemented help and credits menu for Blood. 2019-12-01 21:44:50 +01:00
Christoph Oelckers
e8c5939695 - more work on Blood menus. Game start works. 2019-12-01 20:17:30 +01:00
Christoph Oelckers
e2be025433 - fixed the Ion Fury credit screens.
The entire 'fix' here consisted of hacks to give the CON script exactly what it needs to show them as intended.
2019-12-01 17:48:56 +01:00
Christoph Oelckers
b372cb5f35 - the primary Blood menus are working.
Now this was magnitudes easier than the EDuke menu - NBlood's menu is actually clean and usable code but still nothing compared to a unified menu system.
2019-12-01 15:31:08 +01:00
Christoph Oelckers
5d0d37df25 - disconnected Blood's menu.
This is due for replacement next.
2019-12-01 10:18:38 +01:00
Christoph Oelckers
79fd4e830a - removed the code for Doom's help screens. 2019-12-01 08:23:35 +01:00
Christoph Oelckers
0fc439a969 - fixed Redneck Rampage ingame menu and added selection validation to the load menu. 2019-11-30 23:59:22 +01:00
Christoph Oelckers
06d5705ae6 - formatting fix and null check for aborted transition. 2019-11-30 23:45:43 +01:00
Christoph Oelckers
c36402eb5c - fixed savegame validation and recursive ticker calls. 2019-11-30 23:33:04 +01:00
Christoph Oelckers
41b116e2f2 - save menu in Duke Nukem is working. 2019-11-30 22:46:00 +01:00
Christoph Oelckers
2a9e4fca46 WIP safety commit 2019-11-30 19:23:54 +01:00
Christoph Oelckers
d5c3991c2e - fixed compile errors in menu code. 2019-11-30 10:03:20 +01:00
Christoph Oelckers
b3c335cd1d Merge branch 'menu_for_real' of https://github.com/coelckers/demolition into menu_for_real
# Conflicts:
#	source/common/menu/loadsavemenu.cpp
#	source/duke3d/src/d_menu.cpp
#	source/rr/src/d_menu.cpp
2019-11-30 01:06:37 +01:00
Christoph Oelckers
e266044391 - update of load/save menu to latest GZDoom code.
Input in save menu working.
2019-11-30 00:49:50 +01:00
Christoph Oelckers
ebcc25f36d - prototyping the Blood fullscreen menu entries
These are a bit more sophisticated than what the other games have. ;)
2019-11-29 02:12:38 +01:00
Christoph Oelckers
90c5ea6acc - updated option menu code to latest scripted version
This mainly means being able to use the generic font.
This also adds more generalization to the menu sound handling, plus an option to turn menu sound off. This is motivated by the pig sounds which RR uses in the menu.
2019-11-29 01:28:13 +01:00
Christoph Oelckers
0cedad6390 - started work on load/save menus. 2019-11-29 00:37:19 +01:00
Christoph Oelckers
943cb64eda - image scroller menus working. 2019-11-28 23:27:10 +01:00
Christoph Oelckers
1f1b927b6b - fixed a few issues. 2019-11-28 20:11:27 +01:00
Christoph Oelckers
59ebb10512 - fixed compilation and unhooked the Redneck Rampage menu so that it can be replaced. 2019-11-28 19:35:35 +01:00
Christoph Oelckers
cd4ff92266 - handle Blood. 2019-11-28 03:32:02 +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
a59917b35d - more cleanup of sound code
removed the remaining parts of the old music system in EDuke32 and RedNukem frontends.
2019-11-28 03:02:33 +01:00
Christoph Oelckers
6ad9c1c0e3 - set up d_menu.cpp for Redneck Rampage 2019-11-28 02:14:30 +01:00
Christoph Oelckers
4e5f59a373 - Menu WIP
* implemented single image screens
* implemented skeleton of the image scroller
* added RR-specific definitions to the menus (need to copy and adjust d_menu.cpp)
* added definitions for credits screens.
2019-11-28 01:02:45 +01:00
Christoph Oelckers
5f5fe271f7 - fixed handling of the custom game mode menus in Ion Fury.
Sadly the scripting which necessitates this all is such a hack that it's probably necessary to fix again if the next project comes along that uses the same kind of "creativity" instead of providing a robust implementation.
2019-11-27 23:35:12 +01:00
Christoph Oelckers
2c36e986b9 - fixed most issues with Ion Fury's game startup menus. 2019-11-27 22:41:15 +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
3b7aa74c27 - connecting the dots in the menu. Duke Nukem can now start a level. 2019-11-26 23:20:54 +01:00
Christoph Oelckers
46d1f8517a - animated transitions are working. 2019-11-26 22:05:52 +01:00
Christoph Oelckers
a5a0c38474 - removed DObject.
Just for the menu this can be done much simpler - the entire setup here doesn't work well with the game frontends being compiled as separate modules anyway.
2019-11-26 21:25:45 +01:00
Christoph Oelckers
1adceb82ef - consolidation of defbinds definitions.
Putting all the generic definitions in files used by all games greatly reduces the clutter and chance for errors.
2019-11-26 21:06:43 +01:00
Christoph Oelckers
0597b4cf12 - enabled the menu transitions. 2019-11-26 00:43:20 +01:00
Christoph Oelckers
2ed598bb6c - menu transition animation added. 2019-11-26 00:29:51 +01:00
Christoph Oelckers
dce633de8b - use a floating point origin in the menu's implementation
Using fixed point here makes no sense, let's keep that to the code that still lives in the 90's.
2019-11-26 00:20:21 +01:00
Christoph Oelckers
a74a670c99 -- more work on the menu - episode and skill menus are working in DN3D. 2019-11-25 23:21:51 +01:00
Christoph Oelckers
d73f915c66 - episode menu setup. 2019-11-25 18:41:39 +01:00
Christoph Oelckers
556c61b60b - fixed compile errors.
(Include dependencies suck, it's time for modules to become an option.)
2019-11-25 17:19:48 +01:00
Christoph Oelckers
a9ee5940fc - localization wrappers
Currently a no-op, but if it's in it won't be forgotten later.
2019-11-25 00:28:59 +01:00
Christoph Oelckers
1f1e39fac0 - consolidation of texts for episode and skill menus
So far without localization capability - the engine cannot handle it yet.
2019-11-25 00:02:00 +01:00
Christoph Oelckers
42b3d12630 - Ion Fury's main menu now looks correct. 2019-11-24 22:31:27 +01:00
Christoph Oelckers
57b542671c - Ion Fury main menu fixes. 2019-11-24 20:40:53 +01:00
Christoph Oelckers
8d11990494 - more work on making Exhumed compile.
Almost done, down to 20 compile errors.
2019-11-24 13:59:36 +01:00
Christoph Oelckers
40772d9f0c - making more things compile. 2019-11-24 10:03:19 +01:00
Christoph Oelckers
6280b0b516 - started fixing things. 2019-11-24 00:04:15 +01:00
Christoph Oelckers
52cfb7fb92 - completely disconnected the old menu from the rest of the game to allow rebuilding the new one.
Sadly this uncovered a few more places where script events are allowed too broad access to the game state.
2019-11-23 23:05:24 +01:00
Christoph Oelckers
326d0f5f76 - the new menu displays something. 2019-11-23 17:50:36 +01:00
Christoph Oelckers
9529adb3e1 - font tables moved. 2019-11-23 12:41:13 +01:00
Christoph Oelckers
f2fc3fc2cb - WIP commit. 2019-11-23 12:38:38 +01:00
Christoph Oelckers
0ad7f25a8a - added project and namespace wrappers to all Exhumed files. 2019-11-23 00:11:37 +01:00
Christoph Oelckers
ceb07280cf - more work on the menu.
Duke Nukem's menu title is getting rendered.
2019-11-22 22:52:11 +01:00
Christoph Oelckers
5f9b57519a - hooked up the menu code so that it can receive events.
Nothing pretty yet but a start is made.
2019-11-21 22:31:46 +01:00
Christoph Oelckers
2740913c60 - added a redirection hack for rotatesprite so that it can be transitionally used in the 2D drawer. 2019-11-21 19:30:27 +01:00
Christoph Oelckers
81ddf22d5d - added ZDoom's menu system as a base to build a new menu on.
# Conflicts:
#	source/CMakeLists.txt
#	source/build/src/engine.cpp
2019-11-21 18:03:09 +01:00
Christoph Oelckers
4be63d55d3 - added a stripped down version of ZDoom's DObject.
This only retains the objecct factory feature, but removes the garbage collector which I have no use for.

# Conflicts:
#	source/CMakeLists.txt
2019-11-21 18:02:22 +01:00
Christoph Oelckers
2da4294ba5 - hooked up the event processing for Shadow Warrior, so keyboard input is working now. Mouse movement is not being processed yet.
Also removed some leftover code from the old input system.
2019-11-20 22:01:44 +01:00
Christoph Oelckers
caa450dcb9 - debugprintf 2019-11-20 20:07:33 +01:00
Christoph Oelckers
fd31d4fa6a - replaced 32 bit SDL library - the preincluded one appeared to be broken.
- fixed main group autochoice.
- fixed uninitialized player links for Shadow Warrior.
2019-11-19 22:35:52 +01:00
Christoph Oelckers
f24de03501 - fixed auto-picking of game GRPS from the command line. 2019-11-19 21:35:35 +01:00
Christoph Oelckers
dc60c7f72e - fixed use of brightmaps.
Due to the blending they are essentially inactive on translucent content and Duke Nukem heavily abuses this.
2019-11-15 20:51:02 +01:00
Christoph Oelckers
ab9c532d89 - save custom data as JSON.
This makes it a lot easier to debug and test than binary blobs.
2019-11-15 18:57:26 +01:00
Christoph Oelckers
619a7541f1 - "fixed" keybinding not responding for all keys.
This looks like an ImGui bug - it doesn't like two identically labelled buttons on the same page, it seems. I now work around this by using strings with different numbers of spaces. Stupid but effective.
2019-11-14 22:48:23 +01:00
Christoph Oelckers
ba117554b0 - fixed savegame issues.
Since the code is extremely volatile I changed the setup so that the save is a zip file with the regular snapshot plus all added data as separate entries.
This allows compressing everything properly without savegame breaking interference.

Blood does not yet load its savegames, need to check.
2019-11-14 21:07:43 +01:00
Rachael Alexanderson
5002dd866c - fix compile on vs2017, change pow2char to static
- include nullptr check for mapname in music.cpp
2019-11-13 16:40:08 -05:00
Christoph Oelckers
8055d10362 - hooked up the secret hint system 2019-11-13 00:44:33 +01:00
Christoph Oelckers
35bc7f56fc - added secret hint code.
Not hooked up yet.
2019-11-12 23:23:22 +01:00
Christoph Oelckers
dee1cba849 - hooked up Blood with the statistics code. 2019-11-12 22:59:51 +01:00
Christoph Oelckers
6ccef7201e - hooked up the statistics code with EDuke and RedNukem frontends.
Not sure about the end of game conditions, I wasn't able to test that part yet.
2019-11-12 22:45:11 +01:00
Christoph Oelckers
74ed8fd1d9 - added GZDoom's statistics code
Not hooked up yet.
2019-11-12 22:00:33 +01:00
Christoph Oelckers
0bdec4ea2e - fixed: Events were processed as key events without checking their type. 2019-11-12 20:17:17 +01:00
Christoph Oelckers
22ccea8677 - reworked music interface a bit.
Conmsidering how hard it is in Duke Nukem based games to modify the level music, there is now a setting for this in mussetting.txt to make the job easier and even allow setting level music in Redneck Rampage without replacing game data.
2019-11-12 00:43:07 +01:00
Christoph Oelckers
3be9deb070 - removed the different shadeDiv for Ion Fury.
This isn't necessary and was apparently caused by a bug that got fixed in the mean time.
2019-11-11 23:24:31 +01:00
Christoph Oelckers
0f2c4f7760 - added stripped down SNDINFO parser so that the music related settings can be specified. 2019-11-11 22:52:07 +01:00
Christoph Oelckers
cee5891409 - so music is finally working but I don't know - adding a second sound backend because the existing one is such a piece of shit is certainly not the best solution.
I'll probably replace the SDL and DirectSound outputs with OpenAL later - let's hope that the mixer is at least flexible enough to handle that...
2019-11-11 21:50:20 +01:00
Christoph Oelckers
16a6cd909a - this should work but doesn't... 2019-11-11 20:37:57 +01:00
Christoph Oelckers
51a5fecc02 - something can be heard, but it's crap.
This sound code is really strange.
2019-11-11 19:53:06 +01:00
Christoph Oelckers
ec6ce8b1ec - hooked up ZMusic. 2019-11-11 19:10:46 +01:00
Christoph Oelckers
29d16868c9 - fixed compile errors. 2019-11-11 17:51:30 +01:00
Christoph Oelckers
f6a9bb770d - fixed most issues with newly added music files 2019-11-11 01:01:18 +01:00
Christoph Oelckers
ae06d19008 - added remaining music files to project 2019-11-11 00:31:36 +01:00
Christoph Oelckers
5e95ef5322 - added the rest of GZDoom's music interface.
This still needs to be integrated.
2019-11-11 00:23:52 +01:00
Christoph Oelckers
9f9748ede6 - initial ZMusic hookup. 2019-11-10 23:58:51 +01:00
Christoph Oelckers
5fc81d1bd4 - made brightmaps operational.
The logic is not yet optimal but at least it works.
2019-11-10 19:42:26 +01:00
Christoph Oelckers
21ac5e87b5 - added blend table translucency estimation instead of using a lame default.
- draw fullscreen blends below the console.
- moved all mouse event processing out of the SDL backend to D_PostEvent.
- removed all remaining code for dealing with mouse buttons directly.
2019-11-10 15:15:14 +01:00
Christoph Oelckers
55018aae7e - fixed mouse scaling 2019-11-10 11:59:22 +01:00
Christoph Oelckers
a1a9770b44 - reworked the FPS display to use ZDoom's fstat class to get rid of the microscopic font it used.
- changed time display for rendering to exclude VSync and playsim times to get more meaningful information.
2019-11-10 11:42:25 +01:00
Christoph Oelckers
cae710bd59 - fixed alpha threshold.
Not only is this a deprecated feature - it also does not work right when complex lighting is at play, it must be done in the shader to get proper results.
2019-11-10 10:01:31 +01:00
Christoph Oelckers
7e70c217fe - fixed console event processing and added a texture memory calculator. 2019-11-09 23:58:26 +01:00
Christoph Oelckers
39df3d0560 - added 'logfile' CCMD. 2019-11-09 22:27:33 +01:00
Christoph Oelckers
2997bb6292 - the keybinding menu is finally working.
Obviously the existing menu implementation from Duke Nukem needs to be tossed out at some point, but at least the functionality is there again.
2019-11-09 22:22:51 +01:00
Christoph Oelckers
299f596afc - Changed EDuke menu to receive all settings storage locations as CVARs.
With this out of the way the only part that needs a real replacement immediately is the keybinds menu.
2019-11-09 19:15:03 +01:00
Christoph Oelckers
d3e6807f61 - fixed infinite loop in compression code. 2019-11-08 17:50:32 +01:00
Christoph Oelckers
f52a58d9ac - fixed compilation. 2019-11-08 17:41:19 +01:00
Christoph Oelckers
9aa275f996 - got rid of some editor-only code and the entire buildvfs header
Nearly all file write access now uses the FileWriter class, which is UTF-8-safe on all platforms - unlike stdio.
2019-11-08 02:02:54 +01:00
Christoph Oelckers
4fc56203c2 - implemented savegame compression
Unfortunately necessary because Ion Fury savegames store 120 GB(!!) of data, mostly zeros.

Unlike the old method, this compresses the entire savegame as one block using a ZLib stream so it should be a lot more efficient now.
2019-11-08 01:36:32 +01:00
Christoph Oelckers
a40be954f1 - same change for RedNukem front end. 2019-11-08 01:04:27 +01:00
Christoph Oelckers
47227fc90f - replaced FILE * with FileReader in savegame code.
FILE* is too inflexible, with FileReader I can plug in a transparent compressor.
2019-11-08 00:26:14 +01:00
Christoph Oelckers
d2cbd71dbf - adjustments 2019-11-07 20:30:56 +01:00
Christoph Oelckers
b6a3a60251 - console output is functional. 2019-11-06 23:40:10 +01:00
Christoph Oelckers
81e9c867da - fixed key binding 2019-11-06 20:34:00 +01:00
Christoph Oelckers
5d31119a49 - fixed the Shadow Warrior menu, but it doesn't do much good. The game appears to be thoroughly broken. 2019-11-06 19:22:14 +01:00
Christoph Oelckers
88bf056176 - added a class for cleaner savegame writing 2019-11-06 12:29:08 +01:00
Christoph Oelckers
e87642e197 - cleaned out the remains of the savegame compression hacks
This broke the savegame reader which still assumed it was working on compressed data. Everything will now take the uncompressed path.

In-stream optional compression is not a good idea anyway, this can and should be done better.

Also: Why  is the savegame format architecture dependent???
2019-11-06 01:01:16 +01:00
Christoph Oelckers
f252eaffbc - fixed font translation setup. 2019-11-06 00:00:33 +01:00
Christoph Oelckers
de829128ea - hooked up the 2D drawer
compiles but not tested yet.
2019-11-05 23:35:38 +01:00
Christoph Oelckers
3a0b8364f7 - removed the OSD entirely. 2019-11-05 20:31:30 +01:00
Christoph Oelckers
8321bc6208 - removed most of the old OSD's hooks. 2019-11-05 20:25:57 +01:00
Christoph Oelckers
c46b22e52e - more cleanup of obsolete OSD code. 2019-11-05 20:16:53 +01:00
Christoph Oelckers
a4483f131d - Printf related cleanup. 2019-11-05 20:07:16 +01:00
Christoph Oelckers
d943fe036d - added the ZDoom console and made all needed changes to get it compiled. 2019-11-05 19:57:48 +01:00
Christoph Oelckers
ffa16b2a53 - removed all command related code from the OSD.
None of this was used anymore.
2019-11-05 00:48:27 +01:00
Christoph Oelckers
e37cb782ca - fixed dependency problems with OSD definitions being used in another header. 2019-11-05 00:39:00 +01:00
Christoph Oelckers
5b67d653ed - removed the bind command set from the osdcmd files to make sure that they don't get called anympre. All input should be routed through the new console code now.
# Conflicts:
#	source/blood/src/osdcmd.cpp
#	source/build/src/osd.cpp
#	source/common/console/c_cmdline.h
#	source/common/console/c_dispatch.cpp
#	source/common/console/c_dispatch.h
#	source/duke3d/src/osdcmds.cpp
#	source/rr/src/osdcmds.cpp
2019-11-05 00:22:42 +01:00
Christoph Oelckers
44f81ebd56 - let OSD_Dispatch forward everything to the ZDoom-based command dispatcher.
Essentially making the OSD a dumb terminal. :P
2019-11-05 00:12:20 +01:00
Christoph Oelckers
189ce21acf - reactivated the binding reladed CCMDs. 2019-11-04 23:52:08 +01:00
Christoph Oelckers
8d089a11fa - for initializing tab commands a separate static lookup function must be used to get the button names.
Because order of initialization for static objects is undefined.
2019-11-04 23:11:10 +01:00
Christoph Oelckers
570696fc09 - added ZDoom's CCMD code.
Not tested yet.
2019-11-04 23:01:50 +01:00
Christoph Oelckers
bbf0a73471 - input works again. 2019-11-04 20:29:07 +01:00
Christoph Oelckers
25341c7221 - hook up the buttons.
This is still just glue code, the Build implementation suffers from poor support for multiple keys bound to a single button so they are due for replacement as soon as input is working again.
2019-11-04 18:17:14 +01:00
Christoph Oelckers
1ee4efebb0 - fixed compilation. 2019-11-04 17:58:18 +01:00
Christoph Oelckers
29b7e1cf79 - moved all mouse button handling to the input state
Yet again an unbelievable piece of code working around how input works on modern systems to keep the old 90's code alive.
2019-11-04 01:01:54 +01:00
Christoph Oelckers
b4f91de7d3 - major refactoring on the input code.
* moved the ASCII conversion hackery in SDLayer to a subfunction because this made things just messy.
* integrated the keyboard callback's functionality directly into inputState for consolidation purposes. This was yet another independent layer in the keyboard management.
* hook up D_PostEvent as the central place to dispatch keyboard input. This is now the only function that is getting called from the backend and a major prerequiside for swapping out the backend for GZDoom's.

Todo: Route mouse input through that, too.
2019-11-04 00:55:49 +01:00
Christoph Oelckers
b747df60ee - moved all keyboard related code into the InputState class, so that looking for this stuff is easier.
Sadly there's 1ß00 lines of code using this...
2019-11-04 00:53:55 +01:00
Christoph Oelckers
1b958a7f9f - removed more backing data for the old keybinding code.
Unfortunately this means that the keybinding menus in all games except Blood are shot to shit right now because of how they passed the data on to its destination.
These menus are not fixable, this will have to wait until the replacement is up.
2019-11-03 20:58:10 +01:00
Christoph Oelckers
eb049abc3a - it compiles again (safety commit) 2019-11-03 20:24:50 +01:00
Christoph Oelckers
73e64ff0b2 - added ZDoom's keybinding class and some needed support code.
Not hooked up yet with the game.
2019-11-03 18:19:29 +01:00
Christoph Oelckers
12a02cb456 - fixed: lump filters without any dot in the name did not work. 2019-11-03 15:54:18 +01:00
Christoph Oelckers
3c7151810f - made the game interfaces classes instead of function pointer lists because that is far better at error catching.
- fixed: Blood's monster flag is a 'have_monsters', not 'nomonsters' flag. As a result none were spawned.
2019-11-03 12:32:58 +01:00
Christoph Oelckers
d7e7c516a0 - fixed: In case no game data can be found, the config needs to be written, to ensure there is one for editing. 2019-11-03 10:51:47 +01:00
Christoph Oelckers
94aa556953 - some work on a generic cache manager.
For main resource data this is probably unnecessary - most resources are never cached with the exception of sounds and textures, which are loaded permanently anyway.
But for hardware textures this is different. Due to the poor precaching it is impossible to selectively evict hardware textures that are not needed any longer, so for this an MRU cache is really needed so that they do not accumulate and congest the video RAM in the process.
2019-11-03 10:00:19 +01:00
Christoph Oelckers
e24b1e8903 - replaced all uses of xxhash with SuperFastHash.
That's one more third party dependency down.
Not only are two hashing algorithms redundant, there was also a large size discrepancy: SuperFastHash is 3 kb of source code while xxhash is 120kb and generally extremely awful code.
It was easy to make a choice here. None of the use cases require this kind of performance tweaking, the longest hashed block of data is a 768 byte palette.
2019-11-02 22:52:13 +01:00
Christoph Oelckers
3530c52264 - no need to have 2 CRC32 implementations.
Just let Bcrc32 point to zlib instead of having its own implementation.
2019-11-02 22:10:53 +01:00
Christoph Oelckers
cfbcf33c8c - fixed CVAR saving.
- do not use snd_enabled for temporarily hacking the sound state. userConfig.noSound is better suited for such antics.
2019-11-02 21:21:48 +01:00
Christoph Oelckers
e35a5bac79 - fixed: 0 is a valid resource ID for Blood.
Unfortunately this means that looking up ID 0 can be a bit more costly than the rest because all ID-less entries in RFF files also use 0.
For other file types -1 is used.
2019-11-02 20:37:15 +01:00
Christoph Oelckers
dc9d75685e - fixed keybind setup. 2019-11-02 20:13:00 +01:00
Christoph Oelckers
4cf62fca77 - do not load subdirectories of the game directory. They cannot contain anything useful because the original assets never used subdirectories.
- fixed RRRA game flags.
2019-11-02 19:12:01 +01:00
Christoph Oelckers
c5838df0c8 - fixed addition of main directory. 2019-11-02 18:46:11 +01:00
Christoph Oelckers
395ba5541c - fixed startup and sound issues with Redneck Rampage. 2019-11-02 18:28:50 +01:00
Christoph Oelckers
63d4fc1e1b - fixed flag parsing for grpinfo. 2019-11-02 18:03:41 +01:00
Christoph Oelckers
536c7d61a0 - Duke Nukem starts again.
Now for the other frontends.
2019-11-02 17:41:38 +01:00
Christoph Oelckers
d246ff1212 - fixed file system hasher. 2019-11-02 16:52:22 +01:00
Christoph Oelckers
e4ecc5d8df - some reshuffling on OSD code.
* moved the binding commands to osd.cpp. They were in the global namespace already and this way everything to be tossed out is in the same place when the time comes.
* removed support for the OSDs native CVARs. The only ones left were some internal ones I won't need until this code can be replaced.
* same for the custpmization code the games added. Duke Nukem was the only one anyway to have a decent font for it.
2019-11-02 14:25:35 +01:00
Christoph Oelckers
906e56a2b1 - fixed some startup errors. 2019-11-02 13:27:40 +01:00
Christoph Oelckers
8fb54b51c3 - rewrote the screenshot code to use m_png as its backend.
Mainly to finally get rid of kplib. There's really no use to keep such code around if alternatives are already present.
2019-11-02 12:59:59 +01:00
Christoph Oelckers
edcfad6e11 - updated m_png.cpp from GZDoom. 2019-11-02 12:07:15 +01:00
Christoph Oelckers
f44d309558 - made some adjustments to the RFS parser for the file system.
It's still not active but now should produce correct results when working inside the file system.
What it is missing is a file scanner that picks the data it needs to process.
2019-11-02 10:20:32 +01:00
Christoph Oelckers
c54ae1be83 - removed the remaining parts of cache1d. The only thing left is the dummy cacheAllocateBlock function that needs to stick around until a working cache is present.
- disabled the user maps menu because it is hopelessly dependent on functionality that cannot be fixed. Better wait until the menu refactor to do it right - it'd be a waste of time fixing the current menus.
2019-11-02 01:30:21 +01:00
Christoph Oelckers
1149b4f4aa - various fixes and improvements related to file location management:
* saving of demos and savegames no longer mindlessly writes to the mod directory. All such access is now being rerouted through the special paths interface so that the game data can reside in write protected locations.
* refactored all occurences of klistpath except fnlist_getnames.
* do not allow CON scripts to write to arbitrary files. This is a massive exploit and can be used to cause real damage if someone knows how to play this thing - it's far easier than people may think! It will now write any such data to a special section in the main config which is safe and cannot be manipulated to write to random locations on the hard drive.
2019-11-02 00:38:30 +01:00
Christoph Oelckers
cfca8060ba - gutted cache1d. The old file system is gone, excepr for klistpath, which still gets used in a few places.
- consolidated the 3 identical S_OpenAudio implementations. The replacement code is disabled for the time being because it needs a rewrite. The replacement logic is uses is a bit too volatile.
- removed the old GRP scan code.
2019-11-01 22:17:15 +01:00
Christoph Oelckers
2d7c0e26d2 - cleanup of the old file system initialization.
The real fun part is yet to come, i.e. removing the remaining dependencies on the old file system code.
2019-11-01 19:25:42 +01:00
Christoph Oelckers
8d5e665caa - various initialization related changes
* reroute several error conditions to I_Error.
* removed some soon-to-be obsolete GRP loading code.
* explicitly trigger the SetDefaults script events which depended on side effects from the config implementation.
* removed the nonsensical file system switch. All this does is create instabilities because it is non-obvious from where data is loaded. If a resource is mounted, it should be checked for content no matter what. While this may affect the stray weird mod out there it is a necessity if we want to allow transparent project repackaging.
2019-11-01 09:30:28 +01:00
Christoph Oelckers
67acad3984 - startup cleanup. 2019-11-01 00:32:56 +01:00
Christoph Oelckers
57f879fa8b - moved the startup dialog out of the game front ends, now that there is a global cross-game list of playable configurations. 2019-10-31 23:25:21 +01:00
Christoph Oelckers
ba00fe4e66 - hooked up the file system with Blood's resource access. 2019-10-31 20:17:49 +01:00
Christoph Oelckers
d7e183d46d - fixed compilation of file system code. 2019-10-31 18:06:05 +01:00
Christoph Oelckers
8ef40c5083 - merged most of Blood's resource manager into the file system 2019-10-31 17:13:48 +01:00
Christoph Oelckers
261af9e401 - rework of the file system code.
Made more efficient by basing the lookup on names, not strings and some additions for acting as a stand-in for Blood's resource manager.
2019-10-31 01:48:10 +01:00
Christoph Oelckers
693095bffb - added access wrappers to the two fields of DICTNODE that are accessed from the outside.
The idea here is to completely merge the resource management into the file system so that Blood's DICTNODE is merely an alias to the internal FResourceLump.

A two-tiered resource system is not something I consider worthwile, it made sense to get around Builds crappy cache but in the long term this is not a good solution for a multi-game port to have a resource management system in the backend and another one put over it in the front end, both with their own caching logic that might interfere with each other. Better merge it into one that can handle everything.
2019-10-31 00:50:45 +01:00
Christoph Oelckers
c6753a3fec - tested and fixed game list loader. 2019-10-31 00:41:56 +01:00
Christoph Oelckers
2a7beeff69 - cleaned out some chunks of unused or useless code, most importantly the Build cache which was only used by the sound code for permanently loading the data into memory. 2019-10-30 21:51:04 +01:00
Christoph Oelckers
5b1036093c - fixed startup. 2019-10-30 19:55:03 +01:00
Christoph Oelckers
266dc9e04e - added SW search paths to new code and cleaned up the init code. 2019-10-30 19:26:55 +01:00
Christoph Oelckers
ea10e01cc3 - adjustments for last commit. 2019-10-30 18:27:52 +01:00
Christoph Oelckers
418ec0d829 - adjustment to cherry-picked commit. 2019-10-30 18:21:59 +01:00
Christoph Oelckers
3e5d5a9a3d - it's "loadgrp". 2019-10-30 18:09:38 +01:00
Christoph Oelckers
7f250fc3e8 - WIP on game data search. 2019-10-30 18:09:00 +01:00
Christoph Oelckers
5e76fd659a - search path WIP. 2019-10-29 23:57:28 +01:00
Christoph Oelckers
b56dae0e9a - changed path scanner to return only absolute paths and fixed the directory iterator to construct the proper path.
Also avoid collecting duplicate paths.
2019-10-29 21:06:14 +01:00
Christoph Oelckers
ac87665972 - use std::filesystem for directory traversal.
So far implemented for scanning search paths
2019-10-29 19:53:46 +01:00
Christoph Oelckers
35342526a5 - WIP search path code
The Steam/GOG path getters were taken out of the frontends.
This also switches the Windows directory reader touse the wide string version to get Unicode file names.
Some paths were added to the config file instead of hard coding them.
2019-10-29 01:00:44 +01:00
Christoph Oelckers
cfd9edbe71 - added the main FileSystem class. 2019-10-29 00:15:36 +01:00
Christoph Oelckers
82c844e405 - added GZDoom's resource management classes. 2019-10-28 23:46:15 +01:00
Christoph Oelckers
762f174743 - moved the command line parser out of the game frontends.
Some part are not done yet, and the file system data is currently ignored - there's no way to properly set this up with the file system code Build came with.
2019-10-28 22:19:50 +01:00
Christoph Oelckers
a72863112b - fix compilation 2019-10-28 17:50:08 +01:00
Christoph Oelckers
21f6178ade - avoid writing directly to a backend status variable 2019-10-28 07:10:56 +01:00
Christoph Oelckers
901b86577e - more cleanup
Moving init code and key binding getter to backend
2019-10-28 07:05:32 +01:00
Christoph Oelckers
4f4fc1a8d4 - Cleanup 2019-10-28 07:02:42 +01:00
Christoph Oelckers
c589a6ab82 - replaced KEY_PRESSED globally
This was just a redundant name getting in the way.
2019-10-28 07:01:01 +01:00
Christoph Oelckers
065721c62b - simplified the button state maintenance
This removes all unused parts of the implementation and moves the rest to the InputState class for easier replacement later. All MACT is doing now here is to call the UpdateStatus function, the internal workings are no longer relevant.
2019-10-28 07:00:31 +01:00
Christoph Oelckers
f8203ac766 - fixed the compile errors and consolidated the key binding CCMDs. 2019-10-28 06:47:49 +01:00
Christoph Oelckers
e7f75cbf4d WIP 2019-10-28 01:12:31 +01:00
Christoph Oelckers
113b5d9037 - added an input state class which will contain all game-facing input data state.
Having this grouped in a single object will make refactoring a lot easier.
Access functions have been provided to avoid changing client code for the reorganization.
2019-10-28 00:24:09 +01:00
CommonLoon102
43da4b68a2 feature: show player names (#234)
# Conflicts:
#	source/blood/src/config.cpp
#	source/blood/src/config.h
#	source/blood/src/menu.cpp
#	source/blood/src/osdcmd.cpp
2019-10-27 22:24:30 +01:00
Christoph Oelckers
bfea07570a - mapped the remaining Shadow Warrior options to the CVARs. 2019-10-27 16:53:00 +01:00
Christoph Oelckers
2e7ba30068 - a bit more config cleanup. 2019-10-27 14:09:56 +01:00
Christoph Oelckers
5386366ec4 - fix for last commit. 2019-10-27 13:48:03 +01:00
Christoph Oelckers
c0d5ca8ab8 - Config work almost done.
The only thing still referencing the old config file is Shadow Warrior's config read function.
2019-10-27 13:40:24 +01:00
Christoph Oelckers
038c1ba4ba - more CVARs. 2019-10-27 09:53:09 +01:00
Christoph Oelckers
cdc5044f07 - converted noautoload and forcesetup flags to CVARs. 2019-10-27 09:38:55 +01:00
Christoph Oelckers
4b5ec2aabb - transitioned the combat macros to the new config and made them independent for all games, so that everything can use the original text. (But considering that they are a multiplayer feature I'm not sure how much that is worth.)
- sort the config output alphabetically.
- do not use [=] as key names for the bindings.
2019-10-27 08:14:58 +01:00
Christoph Oelckers
249f6e9d62 - consolidated the joystick and mouse setup code. 2019-10-26 23:45:55 +02:00
Christoph Oelckers
b2d7179dbe - consolidated the 4 sets of mouse and joystick configuration variables. 2019-10-26 21:50:49 +02:00
Christoph Oelckers
70a7d1bd82 - save all bound keys, not only the one with commands that have both slots assigned. 2019-10-26 21:16:23 +02:00
Christoph Oelckers
db1a9a9363 - the config finally get saved.
Still with a few errors, though.
2019-10-26 20:47:37 +02:00
Christoph Oelckers
f53c9f6947 - save stuff to the new config. 2019-10-26 19:24:46 +02:00
Christoph Oelckers
1e0d49f947 - game starts again. 2019-10-26 13:16:32 +02:00
Christoph Oelckers
0d878a8604 - some needed cleanup on the control code before testing can start. 2019-10-26 10:16:39 +02:00
Christoph Oelckers
5abc034540 - added a set of left handed key bindings because neither of the offerings is really good for that. 2019-10-26 09:22:49 +02:00
Christoph Oelckers
cfaafcede7 - everything compiles again (not tested yet.) 2019-10-26 00:32:49 +02:00
Christoph Oelckers
c3dc4f35be - cleanup and license added. 2019-10-25 19:07:14 +02:00
Christoph Oelckers
918d121d99 - fixed missing include paths 2019-10-25 02:07:46 +02:00
Christoph Oelckers
e8cf6c3d32 - fixed mus_device CVar and reenabled WinMM device. 2019-10-24 21:02:07 +02:00
Christoph Oelckers
9648c026a9 - small adjustments 2019-10-24 20:36:18 +02:00
Christoph Oelckers
8730ce552b - make things compile again.
Let's hope it still works...
2019-10-24 20:28:46 +02:00
Christoph Oelckers
3ed87f449e - and the last 2 hud CVARS for Blood… 2019-10-24 01:41:55 +02:00
Christoph Oelckers
3efb54e167 - ported most of the remaining HUD CVars 2019-10-24 01:30:33 +02:00
Christoph Oelckers
966751b7e8 - added GZDoom's font code and some dependencies. 2019-10-24 01:20:58 +02:00
Christoph Oelckers
2fa5e339fc - added GZDoom's 2D drawer to the project.
So that for anything new I don't have to bother with the awful 2D interface Build provides.
2019-10-23 22:51:11 +02:00
Christoph Oelckers
20df360778 - converted the Polymost CVARs. 2019-10-23 21:11:37 +02:00
Christoph Oelckers
ee5f0a7cf6 - cleaned out the remains of the frontends' CVAR definitions. 2019-10-23 18:58:34 +02:00
Christoph Oelckers
21d90fd08b - fixed compilation. 2019-10-23 18:36:48 +02:00
Christoph Oelckers
02fff2df06 - refactored wchoice and sensitivity CVARS
This is all that's needed for now, the remaining ones can wait.
2019-10-23 17:21:14 +02:00
Christoph Oelckers
18430c6c9f - refactored r_fpslimit
Also removed the entire cruft related to this - the pointless offsetting value and the precalculation of the timer value (as if we could not afford a single division for something that WAITS!

Unfortunately this required removal of the menu option for the time being.
2019-10-23 17:07:29 +02:00
Christoph Oelckers
43413e4dff - r_useprecache 2019-10-23 14:39:33 +02:00
Christoph Oelckers
63f020996e - a few more CVARs 2019-10-23 01:30:43 +02:00
Christoph Oelckers
5dec4736ce - r_drawweapon, r_showfps, r_showfpsperiod 2019-10-23 01:04:07 +02:00
Christoph Oelckers
e5d38b2d30 - in_mouseflip and in_mousesmoothing
in_mousemode removed from persistent state because of how it is used.
Saving it makes no sense.
2019-10-23 00:59:01 +02:00
Christoph Oelckers
b73cf76f05 - in_mousebias and in_mousedeadzone
Actually, two totally useless options being preserved for historical significance.

Urgh.
2019-10-23 00:55:48 +02:00
Christoph Oelckers
c0c62fe367 - in_mouseaiming 2019-10-23 00:51:49 +02:00
Christoph Oelckers
7501120dc8 - in_mouse and in_joystick 2019-10-23 00:41:28 +02:00
Christoph Oelckers
8f06f0748d - minor CVAR cleanup and refactoring of one more 2019-10-23 00:30:51 +02:00
Christoph Oelckers
713250cc64 - refactored a few more CVARs. 2019-10-23 00:20:27 +02:00
Christoph Oelckers
d476037f45 - hooked up hud_custom. 2019-10-22 23:43:16 +02:00
Christoph Oelckers
e5aa6c5df0 - refactored the HUD scaling into something manageable.
Blood was fine, albeit with an inverted scale, but the EDuke implementation was something very special - and not in a good way, using 4 CVARs to store the scaling state instead of one.
2019-10-22 23:31:46 +02:00
Christoph Oelckers
a829f1cb52 - fixed all compile errors. 2019-10-22 17:47:24 +02:00
Christoph Oelckers
edce0d33e3 - refactored crosshairscale CVAR 2019-10-22 17:00:22 +02:00
Christoph Oelckers
bdf2d24b21 - refactored cl_weaponswitch 2019-10-22 02:31:14 +02:00
Christoph Oelckers
3f48ecd479 - 5 more Blood exclusive CVARs. 2019-10-22 02:15:24 +02:00
Christoph Oelckers
8431266d27 - refactoring of music CVARs
This is a lot of changes in a lot of code because nothing here was abstracted into the sound system. :(

Hopefully most of the affected code here can be tossed out soon, it's not pretty.
2019-10-22 02:01:05 +02:00
Christoph Oelckers
d2be5a4db9 - removed the OSD CVARs
They'll be removed anyway when the current OSD is tossed.
No need to bother.
2019-10-22 01:16:02 +02:00
Christoph Oelckers
38187a1870 - simple to convert demo CVARs 2019-10-22 01:06:02 +02:00
Christoph Oelckers
c5cb86bf2b - sevral simple CVARs ported 2019-10-22 01:00:22 +02:00
Christoph Oelckers
279c0caea4 - autosave variables 2019-10-22 00:58:51 +02:00
Christoph Oelckers
dbe3cadd0f - refactored autorunning CVARs 2019-10-22 00:52:07 +02:00
Christoph Oelckers
87653b50d4 - these were missing. 2019-10-22 00:18:58 +02:00
Christoph Oelckers
79d02a405e - started transitioning the CVARs.
This is going to be a lot of work consolidating the 3 frontends' settings but a necessary evil for eventually getting Shadow Warrior to work as it is quite lacking here.
2019-10-21 23:29:48 +02:00
Christoph Oelckers
f7b9fb92c1 - added back ZDoom's CVAR code and hooked into the OSD.
This has the distinct advantage, aside from much cleaner coding, that it can interoperate with the gameconfigfile class.
2019-10-21 22:39:26 +02:00
Christoph Oelckers
bc8578e153 - brought in GZDoom's gameconfigfile so that the settings can be transitioned to a more robust implementation. 2019-10-21 21:36:05 +02:00
Christoph Oelckers
1269a1715f Fixed stupid typo in class name
It should read BuildTiles, not BuildFiles.
It's a tile manager, not a file manager!
2019-10-21 09:22:55 +02:00
Christoph Oelckers
64959be33e - Don't use the global cache for caching tiles
Sincce the cache is scheduled for removal anyway this makes no sense, this should be handled by a more generic texture eviction logic that's needed anyway to deal with accumulating texture data.
2019-10-21 01:01:38 +02:00
Christoph Oelckers
5022c58a63 - refactored the file access in the rest of the DN3D frontend and in some duplicated code in the Blood frontend. 2019-10-20 23:37:07 +02:00
Christoph Oelckers
d3c2d8e96f - refactored file access in the movie player. 2019-10-20 22:48:21 +02:00
Christoph Oelckers
1b96861615 - consolidated RTS code, because there were 3 copies.
Also completely rewritten to get rid of the cache dependency.
2019-10-20 19:13:44 +02:00
Christoph Oelckers
c3d742dda0 - really delete the textures. 2019-10-20 10:52:56 +02:00
Christoph Oelckers
6f4ca480b5 - sky clamping may only be done in Blood for now.
This needs a better solution.
2019-10-19 20:25:58 +02:00
Christoph Oelckers
bc986b8054 - make the engine consistently use BGRA data - the internal palettes were still RGBA, which caused problems down the line.
- increased cache size to 200 MB (Note: The cache really needs to be replaced with something better that can adapt better to a system's RAM size.)
2019-10-19 10:22:02 +02:00
Christoph Oelckers
4142d3792b - delete BUILDART header if found.
This will otherwise cause problems down the line because these 8 bytes are ignored in the offsets.
2019-10-19 00:26:43 +02:00
Christoph Oelckers
9f357248e5 - fixed crash on shutdown. 2019-10-18 19:11:18 +02:00
Christoph Oelckers
dab7c43f7c - fixed all compiler errors.
It mostly works again, but still has a few glitches.
2019-10-18 19:06:57 +02:00
Christoph Oelckers
530a9944f7 - texture loader redone but not tested yet
Models are currently non-functional and need to reroute their texture handling to the global texture manager instead of handling everything themselves.

Voxels also need a bit of work to make their texture management more automated.
2019-10-18 11:37:07 +02:00
Christoph Oelckers
c6514949e3 - texture creation WIP. 2019-10-18 00:20:27 +02:00
Christoph Oelckers
3da49ad20a - safety commit: all relevant code for the texturing system has been moved to texcache.cpp. 2019-10-17 21:44:34 +02:00
Christoph Oelckers
bef8c9ae76 - hictinting cleanup.
This needs to be moved into the backend, and partially into the shader. So far this only removes the code from the main rendering logic, the final implementation is not done yet.
It had to go because it required the main rendering code to look deep into the texture data which would be a major blocker for refactoring.
2019-10-17 20:29:58 +02:00
Christoph Oelckers
1426ebec20 Moved hightile replacement data into the textures
Not tested yet!
2019-10-17 12:45:25 +02:00
Christoph Oelckers
4f8e0dd936 - cleaned up a few copyright notices and unified licenses 2019-10-17 09:42:11 +02:00
Christoph Oelckers
c988165131 - added a temporary workaround for image-based tile replacements.
The texture management is not ready yet to seamlessly handle these textures so for now they always need to be installed as hightile replacements.
2019-10-16 22:02:27 +02:00
Christoph Oelckers
066a76c892 - missed this part. 2019-10-16 21:18:26 +02:00
Christoph Oelckers
4cd2c024fc - fixed crash in texture deinit code and ensure that everything gets deleted. 2019-10-16 21:16:40 +02:00
Christoph Oelckers
64e116a4b1 - use special classes with [] operators to redirect the frequently used global arrays to the newly implemented texture manager.
This allows to use the contained storage without changing all the code.
2019-10-16 20:39:59 +02:00
Christoph Oelckers
4dc69620b7 - cleanup 2019-10-15 23:56:29 +02:00
Christoph Oelckers
57c221644a - transitioned all texture options of the def file 2019-10-15 23:38:01 +02:00
Christoph Oelckers
bb78db71bc - tileDelete / tileSetDummy 2019-10-15 23:29:47 +02:00
Christoph Oelckers
9a52e8039c - rerouted tileCreate and tileSetExternal calls. 2019-10-15 23:18:52 +02:00
Christoph Oelckers
c3bc690e98 - more updating and bug in UpdatePicSize fixed. 2019-10-15 20:02:37 +02:00
Christoph Oelckers
0e165e40a3 - first batch of adjustments to the new tile management.
- consolidated Polymost precaching and removed precaching for static tiles because they now are always loaded.
- removed cache configurability. On modern systems this is relatively pointless - allocating 50 or 100 MB is a non-issue - and the cache is due for replacement anyway.
2019-10-15 00:54:14 +02:00
Christoph Oelckers
4b6f28e7c8 - hooked up the writable texture types. 2019-10-15 00:19:31 +02:00
Christoph Oelckers
039d948991 - update of new texture classes. 2019-10-14 23:11:01 +02:00
Christoph Oelckers
a6ba81939a - reworked texture management, not yet active. 2019-10-12 22:49:46 +02:00
Christoph Oelckers
bb67a1ba38 - some reworking of the texture code to make integration of Build tiles easier. 2019-10-12 08:54:06 +02:00
Christoph Oelckers
3621aae3f0 - rerouted all write accesses to tilesiz and picsiz through a function interface.
These will have to do some texture management bookkeeping so directly changing the values is problematic.
This required changing the parameter interface in polymost.cpp because a few places hacked around with the global state to pass parameters to subfunctions.
2019-10-11 21:04:31 +02:00
Christoph Oelckers
fdbb27a796 - added back the paletted texture readers.
... after finding out what an inefficient and poorly working method the Build backend uses for downconverting true color textures.
2019-10-11 19:21:36 +02:00
Christoph Oelckers
70004665fd - added Shadow Warrior files to CMake project - not compiled yet. 2019-10-09 18:09:05 +02:00
Christoph Oelckers
e94ed3abf2 - fixed uninitialized bitmap object for texture generation. 2019-10-06 19:19:26 +02:00
Christoph Oelckers
4a866b0320 - use stb_image to read the image formats supported by kplib but not by GZDoom.
(No, sorry, kplib must go - a utility library like that being utterly dependent on a multitude of global variables is a no-go.)
2019-10-06 08:48:07 +02:00
Christoph Oelckers
d1a7c4225d - added a texture class for ART-format hightiles.
This allows to treat them like all other image formats.
2019-10-05 23:44:28 +02:00
Christoph Oelckers
93ad83b380 - use GZDoom's texture backend to read hightile textures. (Hightile tinting code moved to the shader but isn't active yet.
- remove all code for faking gamma correction through palette manipulated images.
2019-10-05 21:59:03 +02:00
Christoph Oelckers
cd0dabf2ae - this was missing 2019-10-05 19:39:41 +02:00
Christoph Oelckers
1a5e64329f - added stripped down versions of GZDoom's texture classes
We need something more manageable to deal with the textures - and the hightile code in particular needs a better backend to read the images.
2019-10-05 19:38:25 +02:00
Christoph Oelckers
bedfc262c4 - added a FileReader wrapper for kopen4load.
Needed when transitioning the hightile loader to GZDoom's texture loader.
2019-10-05 17:30:23 +02:00
Christoph Oelckers
0ee80628a2 - moved documentation out of the Source folder and added surface shader sources. 2019-10-05 13:17:26 +02:00
Christoph Oelckers
1ff8ea6a19 - added matrix class for moving the GL matrix manipulation out of the engine code. 2019-10-04 01:41:57 +02:00
Christoph Oelckers
c5c92c1410 - removed the ZDoom CVAR code because it won't be needed and added its Zip file reader to maintain an engine file with needed assets.
The Build code for this is far too messy for this task, so an external solution is needed.
2019-10-04 00:52:19 +02:00
Christoph Oelckers
5687b4c02e - added ZDoom's CVAR class.
No CVar transition has been done yet.
2019-09-26 00:20:16 +02:00
Christoph Oelckers
568f01792f - added ZDoom's configfile class. 2019-09-23 21:06:52 +02:00
Christoph Oelckers
86534c8a43 - more utilities, most importantly ZString without which it would be hard to use any ZDoom-based code at all. 2019-09-23 20:56:05 +02:00
Christoph Oelckers
034ce097c5 - added more utilities from GZDoom - TArray/TMap and FileReader. 2019-09-23 19:52:25 +02:00
Christoph Oelckers
330c80246e - added ZDoom's FArgs class for easier command line checking. 2019-09-23 19:29:25 +02:00