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.
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.
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.
- AI: there is printing error message in conosole added (instead of dassert)
- Updates for Player Control modern type
# Conflicts:
# source/blood/src/actor.cpp
# source/blood/src/actor.h
# source/blood/src/globals.cpp
# source/blood/src/globals.h
# source/blood/src/player.h
# source/blood/src/sound.cpp
# source/blood/src/triggers.cpp
# source/blood/src/triggers.h
# source/blood/src/view.cpp
# source/blood/src/weapon.cpp
# source/blood/src/weapon.h
Note: enet uses 'malloc' and 'free' as field names in a struct - this does not work with any compiler using some sort of heap instrumentation that #defines these names!
This had to be changed to allow MSVC debug builds to compile again.
- 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.
- Some ThrowError() calls was replaced my viewSetSystemMessage()
- New modern type playQAV (WIP)
# Conflicts:
# source/blood/src/actor.cpp
# source/blood/src/weapon.h
- Added names for sprite, wall and sector types
- Added gModernMap protection for using new features only on different version of map
# Conflicts:
# source/blood/src/actor.cpp
# source/blood/src/callback.cpp
# source/blood/src/callback.h
# source/blood/src/triggers.h
Sorry, but having a globally writable pointer to every texture is just insane and makes any functional management impossible.
This is merely a preparation for adding a real texture manager. That cannot be done if any code can write over the data at will. For that, it now has to make the texture writable first or create a writable empty texture.
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.
The only difference was that bloodhack came from NBlood and playing_blood was added for unhandled differences between the backends of EDuke32 and NBlood.
- Added names for system RX/TX channels
- Detect if map requires new features to work properly via special TX and command
- Effect Gen update
# Conflicts:
# source/blood/src/actor.cpp
# source/blood/src/eventq.h
# source/blood/src/triggers.cpp
# source/blood/src/triggers.h
Renamed all elements still referring to zdoom.
removed the frontend specific resource data.
fixed startup dialog to accept ANSI date despite building as Unicode. This needed a bit of hackery because the macros in windowsx.h are not character set sensitive.
The EDuke32 and RedNukem frontends are working, Blood isn't yet.
Notes:
many of the CMake variables and its output still refer to zdoom. Before changing that I wanted to make sure to be able to commit something that works.
support code for Windows XP has been entirely removed. On Windows this will only target Vista and up.
the crc32.h header had to be renamed to deconflict from zlib.
several Windows API calls were changed to call the A-versions directly. Weirdly enough there were places that defined their parameters as T types but in a non-working way.
removed some remaining editor files and support for the native software rendering only Windows backend.
in a few simple cases, replaced 'char' with 'uint8_t'. The code as-is depends on chars being unsigned which is non-portable. This needs to be carefully reviewed.
- replaced stricmp with strcasecmp and strncasecmp
https://linux.die.net/man/3/strcasecmp
- replaced all Microsoft specific types with standard ones
- replaced all instances of MAX_PATH with BMAX_PATH