Commit graph

100 commits

Author SHA1 Message Date
Christoph Oelckers
7e78bc1c14 - refactored the SEQ callback to receive an actor pointer instead of an xsprite index. 2020-12-04 18:03:01 +01:00
Christoph Oelckers
44805e29b3 - changed parameter of aiNewState to DBloodActor 2020-12-04 18:03:01 +01:00
Christoph Oelckers
502d911a95 - refactored Blood's AI callback interface to only use a single DBloodActor parameter. 2020-12-04 18:03:01 +01:00
Christoph Oelckers
9a4073508d - Blood: Savegame fully transitioned to JSON
not tested yet.
2020-11-23 09:53:58 +01:00
Christoph Oelckers
bbf1352db1 - replaced approx 1/3 of all accesses to the tilesiz wrapper class. 2020-11-23 00:18:30 +01:00
Christoph Oelckers
751c295b62 - minor savegame optimizations.
Do not write out empty elements of arrays where these are by far the most common ones.
2020-11-22 12:48:43 +01:00
Christoph Oelckers
2cb3d44384 - AI JSON serialization. 2020-11-22 12:48:43 +01:00
Christoph Oelckers
dced173cda - JSON serializer for actor.
Also cleaned up use of gAffectedSectors and gAffectedXWalls. These are merely needed as local worker variables, not as global persistent status.
2020-11-22 12:48:42 +01:00
Christoph Oelckers
f73ca55c79 - renamed more disasm stuff. 2020-11-21 20:10:45 +01:00
Christoph Oelckers
678dedf224 - more renaming. 2020-11-21 19:30:00 +01:00
Christoph Oelckers
8bfc6d98d4 - Blood: cleanup and simplification of SEQ code.
* removed all the large instance arrays. None of this is really necessary, all we need is a single dynamic array with only the active sequences that can expand as needed.
* added JSON serialization. With the above change this part now becomes trivial.
* renamed all 'atxx' variables in this code.
2020-11-21 18:12:51 +01:00
Christoph Oelckers
4aa06ff702 - use a static table for SEQ callbacks.
This ensures that callback indices are consistent. Runtime registration as performed by NBlood has undefined order and will make savegames non-transferrable.
2020-11-21 16:34:32 +01:00
Christoph Oelckers
eb78b88598 - all Blood stat iterators ported. 2020-10-15 20:22:39 +02:00
Christoph Oelckers
33164694b9 - use iterator class for all stat loops in Blood's actor.cpp. 2020-10-15 20:22:38 +02:00
Christoph Oelckers
be3292d29b - removed the mostly unused macros for sprite iteration. 2020-10-15 20:22:38 +02:00
Christoph Oelckers
6acc9db540 - cleanup of the remaining homegrown Blood wrappers.
consoleSysMsg and dassert are gone now, all places now call the system implementation directly.
2020-10-11 14:30:44 +02:00
Christoph Oelckers
1579bec714 - Blood: got rid of ThrowError.
Use I_Error directly.
2020-10-11 14:30:44 +02:00
Christoph Oelckers
3b59bf759c - Blood: there's no need to store the loadsave handlers in local variables that never get used. 2020-10-11 14:30:40 +02:00
Christoph Oelckers
3210dd5782 - fixed the noisiest value truncation warnings after shortly re-enabling them in the compiler, plus a few places where the warning pointed to incorrect code. 2020-09-26 11:59:24 +02:00
Mitchell Richters
4d47fe7e85 - Blood: Remove bVanilla. 2020-09-20 16:20:06 +10:00
Christoph Oelckers
ec1c42b04a - got rid of common.h
All still relevant content was moved to places closer to its use.
2020-09-08 18:39:47 +02:00
Christoph Oelckers
809f8b5d4b - hooked up the new automap framework. 2020-09-06 12:44:58 +02:00
Christoph Oelckers
7747fc7fb0 - rewrote the EndMgr in Blood to work as a screen job.
This removes the special handling for it in the main loop.
Some functions and variables in the kill and secret managers were also given more meaningful names.

Fixes #313
2020-09-01 21:27:32 +02: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
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
84e54e4fdb - deleted several unused local variables
None of the initializers here is modifying gamestate, this looks like overcautious preservation for demo compatibility.
2020-08-30 20:24:23 +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
3fc79940f2 - merged the bit fields in Blood's packet structure.
Whatever this was for it made that thing extremely unwieldy.
With these merged the resulting structure doesn't look much different from Duke's anymore.
2020-08-26 16:59:41 +02:00
Mitchell Richters
5bfd4069ef - Blood: Cleanup some timing variables following timing uplift.
* Remove cast of int on `gFrameClock` since gFrameClock is now just an int.
* Remove unused `gFrameTicks`.
* Remove unused `gFrameRate`.
* Rename `gFrame` to `gFrameCount` so it's easier to search and distinguish from `gFrameClock` without relying on regex.
2020-08-26 20:55:46 +10:00
Christoph Oelckers
c7fca86cf5 - removed incomplete Polymer code from Blood.
Looks like this was abandoned - this was still mostly Duke3D code
2020-07-27 19:38:58 +02: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
4e3ad09d70 - merged 5 more headers into misc.h.
These small header files are really counterproductive, file count has already gone down from 143 to 106.
2020-07-27 19:37:17 +02:00
Christoph Oelckers
b804589f81 - implemented a proper cache for Blood's SEQs.
Messing around in the file system cache should be a no-go, so now it's no longer done.
This also allows reenabling the byte swapping needed for Big Endian.
2020-07-27 19:28:54 +02:00
Christoph Oelckers
ab9854a215 - merged the 3 sound related headers in Blood. 2020-07-27 19:17:13 +02:00
Christoph Oelckers
374a850565 - merged all of Blood's ai state headers together to reduce number of files and include clutter. 2020-07-25 17:56:39 +02:00
Christoph Oelckers
05abc262ba - removed libdivide for good and the unused C++ wrapper for fix16 along with it. 2020-07-14 20:57:42 +02:00
Christoph Oelckers
f9a3ca8b6f - fixed compilation. 2020-05-22 18:35:25 +02:00
Christoph Oelckers
6a0785bbd4 - manual update of some missed content. 2020-05-22 18:28:03 +02:00
NoOneBlood
9428c88e29 - Don't change statnum of thing converted to debris back to thing on impact trigger when firing with vector weapon.
- Change damage scale and min firedist for Custom Dude.
- Remove unnecessary checks in callback of tracking condition.
- Fix picWidth() function.
- Better initialization of modern stuff.
- kModernSeqSpawner: disable all other spawners with same TX ID when enabling current.
- Fix: sceneQav was not playing if resurrected with COUSTEAU cheat.
- kModernPictureChanger: remove kModernFlag01 feature (deprecated).
- kModernSectorFXChanger: add flags to control where exactly light effect should appear.
- kModernCondition:
 - add delay before sending command if condition is true.
 - take in account state, so kCmdState and kCmdNotState is useful.
 - fix wrong comparison result in some conditions.
 - add new various conditions.
- kModernPlayerControl:
 - fix start / stop playing qav scene when triggered with event command converted to sprite command.
 - add a way to resurrect / heal player.
 - add event commands to toggle inventory item status via trigger.
 - fix that Remote and Proximity detonators cannot be given.
 - add clear all screen effects option.
 - proper percents for changing movement / jumping.
- kModernRandomTX, kModernSequentialTX: change event redirection mode activation from kModernTypeFlag02 to kCmdLink.
- kModernSpriteDamager: treat damage value as percents by default, take in account god mode.
- kModernEffectGen: fix wrong cstat for effects.
- kModernPropertiesChanger: proper underwater status for sectors and players or enemies in it.
- Players: assign or update current player's sprite index for all conditions.

# Conflicts:
#	source/blood/src/nnexts.cpp
2020-05-22 17:36:37 +02:00
NoOneBlood
e3e805b24c - More compact code for event redirection
- Fix demo desync
- Fix MINGW compile warnings
- Move custom start health from data4 to sysData2 in gModern maps
- Proper respawn for custom dude

# Conflicts:
#	source/blood/src/dude.cpp
#	source/blood/src/dude.h
2020-05-22 17:34:33 +02:00
NoOneBlood
64de30209b - Player control: more strict rules for copying properties of xsprite
- Fix for custom health when respawning enemy
- Fix for custom dude when respawning it
- Conditions: added way to refresh sprite index in tracking conditions

# Conflicts:
#	source/blood/src/actor.cpp
#	source/blood/src/aiunicult.cpp
#	source/blood/src/aiunicult.h
#	source/blood/src/dude.cpp
#	source/blood/src/dude.h
2020-05-22 17:33:05 +02:00
Christoph Oelckers
66ecb05eb8 - use Printf as the only command to print to the console.
All uses of OSD_Printf, initprintf etc. have been renamed.
2020-04-12 08:30:38 +02:00
CommonLoon102
26344d1193 Blood: fix ILLUSION.MAP crash 2020-03-30 09:55:15 +02:00
NoOneBlood
bdca9420f5 - Event redirection support for modern types
- New modern type "Condition" (WIP)
- Fix damage scale for custom dude
- Extend Impact and Vector flags so they can be used with dudes
- Impact condition can be triggered with missiles and explosions
- Updates for Teleport Target type (gModernMap)
- Updates for Effect Gen type
- Updates for Wind Gen type

# Conflicts:
#	source/blood/src/actor.cpp
#	source/blood/src/aiunicult.h
2020-03-02 23:53:33 +01:00
Christoph Oelckers
82939f2037 - do not reinitialize all actors in Blood when loading a savegame.
The call to actInit has been replaced with only performing the one necessary thing that needs to be done here - setting the enemy default difficulty.
2020-02-12 18:44:04 +01:00
Christoph Oelckers
29e51a677f First round of Blood Savegame fix.
- const-ify most tables in actor.cpp for documentation purposes.
- gVectorData cannot be made const because one single field in there gets modified by code. :?
- save the global data in nnexts.cpp.
2020-02-11 23:15:25 +01:00
NoOneBlood
5d6ac932d3 Removed IsItemSprite, IsWeaponSprite, IsAmmoSprite function duplicates 2020-02-08 12:01:24 +01:00
NoOneBlood
e79a693313 Refactor of NOONE_EXTESNIONS:
All functions and definitions was moved to nnexts.h and nnexts.cpp files
to minimize ifdefs and generally make code more clear

# Conflicts:
#	GNUmakefile
#	platform/Windows/nblood.vcxproj
#	platform/Windows/nblood.vcxproj.filters
#	platform/Windows/props/build_common.props
#	source/blood/src/actor.cpp
#	source/blood/src/ai.h
#	source/blood/src/aiunicult.cpp
#	source/blood/src/blood.cpp
#	source/blood/src/db.cpp
#	source/blood/src/eventq.cpp
#	source/blood/src/gameutil.cpp
#	source/blood/src/gameutil.h
#	source/blood/src/loadsave.cpp
#	source/blood/src/player.cpp
#	source/blood/src/player.h
#	source/blood/src/triggers.h
#	source/blood/src/view.cpp
2020-02-07 22:23:33 +01:00
nukeykt
438fa1b267 Blood: prevent player struct OOB issues
# Conflicts:
#	source/blood/src/view.cpp
2020-02-06 18:48:23 +01:00