Christoph Oelckers
9a8ee00aec
- set currentLevel before calling engineLoadBoard.
...
This is needed if the compatibility patcher needs to alter mapinfo data.
2021-07-27 22:12:29 +02:00
Christoph Oelckers
1fde9f2173
- workaround to allow playing SW's Last Warrior mod in one go.
...
This disables the boss's death in L4 ending the game and just advances to the next level.
This seems to be the intent with this mod as the second episode starting at L5 is not defined and the first episode's subtitle advertises the full game.
2021-07-26 00:58:00 +02:00
Mitchell Richters
d9a7465c08
- SW: Remove gi->FreeGameData()
from game as its inside code wasn't freeing game data but level data already freed in gi->FreeLevelData()
.
...
* This was causing `GameMain()` to try to call `TerminateLevel()` after tile data had been freed, causing a hard stop.
* Fixes #464 .
2021-07-20 20:11:29 +10:00
Mitchell Richters
675356be1a
- Ensure g_nextskill
is used everywhere so that setting skill for next level works properly.
2021-07-20 18:51:34 +10:00
Mitchell Richters
33845c4a23
- Add skill
CCMD to return player's current skill, while also being able to set skill for next game.
...
* Fixes #332 .
2021-07-20 18:50:58 +10:00
Mitchell Richters
77630dcbc7
- Rename DeferedStartGame()
to DeferredStartGame()
.
2021-07-20 18:43:17 +10:00
Mitchell Richters
5441272bec
- SW: Create inline function pspPresentRetractScale()
to scale the rate at which weapons present and retract based on the current tile's height vs. the original asset's height.
...
* Reported to me by @Phredreeke, who had it reported to him from someone else.
* The sword in the widescreen assets pack we load by default has a height of 216px vs 136px of the default tile.
* Because the game presents and retracts weapons at a set rate, the time it took to swap between the sword and other weapons took ~1.58x longer than the original assets.
* This speeds up the present/retract rate based on the loaded asset's height to ensure the weapon switches in the same elapsed time.
* This may be extended to other weapons if required but the sword is the only one I'm aware of that has more height.
* Confirmed no matter what motion the sword was performing, `psp->picndx` was always 2080 so we shouldn't need a hashtable or anything like this.
2021-07-11 19:22:59 +10:00
Christoph Oelckers
1b45c83d59
- SW: fixed countermeasure for empty lower skills
2021-07-11 08:24:10 +02:00
Mitchell Richters
172b77b9e7
- SW: Ensure PANEL_SPRITEstruct
's ox
/oy
values are in the save data.
2021-07-11 12:05:53 +10:00
Mitchell Richters
9d64779da0
- SW: Replace all uses of NULL
with nullptr
.
2021-07-10 22:25:18 +10:00
Mitchell Richters
e3f2d76378
- SW: Declare and initialise variables in pWeaponBob()
vs declaring and initialising later on to reduce warnings about variables being uninitialised.
2021-07-10 22:16:51 +10:00
Mitchell Richters
5d7938c24e
- SW: Rename cl_smoothsway
to cl_swsmoothsway
and enable by default
2021-07-10 22:07:05 +10:00
Mitchell Richters
55cef642b6
- SW: Factor out bob coordinate backups.
2021-07-10 22:01:42 +10:00
Mitchell Richters
9575f8a3d3
- SW: Factor out panel interpolation backups;
2021-07-10 22:01:40 +10:00
Mitchell Richters
4d4946fb6b
- SW: Factor out repeated panel coordinate math into inline functions.
2021-07-10 22:01:37 +10:00
Mitchell Richters
27f1e487a2
- SW: Remove fixed-point math from panel x/y coordinate updating.
2021-07-10 22:01:35 +10:00
Christoph Oelckers
64fc0b66b2
- SW: added countermeasure to re-enable lower skills on mods not implementing them.
...
Aside from spawning the enemies from the lowest supported skill it will also reduce the threat level by reducing health of some enemies or by replacing the harder Ninja variants with the base type.
2021-07-06 10:26:43 +02:00
Mitchell Richters
0724b3326c
- SW: Promote PANEL_SPRITEstruct
's xorig
/yorig
values from int to double to match x
/ox
and y
/oy
respectively.
...
* Makes bobbing a touch smoother.
* Removes 47 explicit casts.
2021-06-27 22:40:33 +10:00
Christoph Oelckers
5e96e955f3
- add hitscan only autoaim for SW.
...
# Conflicts:
# source/games/sw/src/weapon.cpp
2021-06-26 12:22:10 +02:00
Christoph Oelckers
2af2d29084
- add hitscan only autoaim for SW.
2021-06-26 12:18:27 +02:00
Christoph Oelckers
454816299e
- reorganized loading of textures.
...
Due to dependencies on initializing some data in app_init it was not possible to cleanly set up the fonts.
This adds a game-side function for loading the entire palettes before starting with the texture data and another one for loading game-side texture data.
This now allows fully setting up the palettes before starting with the textures and to fully set up the textures before reading the .def files.
All this is needed because to properly initialize, the fonts need to be able to access the fully initialized texture state, including replacements and hires substitutions from the .def files.
2021-06-01 11:05:26 +02:00
Christoph Oelckers
8b507ed606
- enabled the ENDOOM-like text screens when quitting Duke and SW.
...
Turned out that all they needed was the font.
2021-05-31 23:16:52 +02:00
Christoph Oelckers
9c60ab791b
- implemented all needed font overrides for localization.
2021-05-31 21:20:31 +02:00
Christoph Oelckers
af781e0422
- moved all font setup out of the C++ code.
...
All internal fonts now get defined through FONTDEFS.
Also fixing a few offsets.
2021-05-31 21:20:31 +02:00
Christoph Oelckers
42b70a7d93
- added internationalized fonts.
...
This still needs a bit of fixing and tweaking but most is working.
2021-05-31 21:20:30 +02:00
Christoph Oelckers
a7921e4c01
- use the same formula as Duke to offset SW's shadows in Polymost.
2021-05-29 14:04:57 +02:00
Christoph Oelckers
1ea09cd3d2
- removed bogus assert in SW's track setup.
...
One of the stock maps (WT $airport map.) triggers this assert so it cannot remain.
2021-05-29 13:22:14 +02:00
Christoph Oelckers
8fae793341
- defined a new constant, CR_NATIVEPAL, to use the font functions with a predefined palette.
...
This is mainly for code clarification, the value is the same as CR_UNDEFINED.
2021-05-29 11:47:05 +02:00
Christoph Oelckers
d44500863b
- removed the multiplayer scoreboard screens.
...
Since there is no plan to keep them in case MP gets implemented there's no need to maintain them.
These should later be replaced by a generic screen using a better font and a layout that takes higher resolutions into account.
2021-05-27 13:33:54 +02:00
Christoph Oelckers
e10bcf6294
- split the screen job code into a generic and a Raze specific part.
...
Preparations for porting this to GZDoom.
2021-05-22 01:35:50 +02:00
Christoph Oelckers
e5236d3423
- SW: fixed sector transfers involving a portal for real this time.
...
It is not enough to just copy the properties - if this happens the entire portal needs to be reinitialized. The only way to do this is to run CollectPortals again to reset all portals in the map.
2021-05-20 18:52:27 +02:00
Rachael Alexanderson
a75ed91796
- this crash was handled by nothing more than an assert...
2021-05-20 11:02:11 -04:00
Christoph Oelckers
1d7f4c1f2b
- SW: fix sector property transfers involving a portal.
2021-05-18 00:26:57 +02:00
Christoph Oelckers
ee559b7ba9
- removed all leftover parts of the native status bars.
2021-05-16 10:35:33 +02:00
Christoph Oelckers
83f151529b
- fixed SW status bar.
2021-05-16 10:25:56 +02:00
Christoph Oelckers
8d8b3cda46
- scriptified SW's status bar.
...
Not tested yet. This just compiles without errors.
2021-05-16 09:34:08 +02:00
Christoph Oelckers
d311792e06
- engine side preparations for Duke Statusbar scriptification.
...
Mainly, gotweapon had to be reverted to a flat bool array to avoid implementing FixedBitArray for the VM.
Also adding a few new tile names and PushV for string arrays.
2021-05-15 10:44:35 +02:00
Christoph Oelckers
645ea1e1ae
- SW: better handling for bogus ladders.
...
If there is no back sector, use the front sector of the wall as the ladder sector.
This at least fixes the badly defined ladder in Wanton Destruction's first map.
2021-05-13 23:28:29 +02:00
Christoph Oelckers
fb21e39de5
- fixed remaining SW warnings.
2021-05-12 21:50:00 +02:00
Christoph Oelckers
1085b0b7a2
- first batch of SW warning fixes.
2021-05-12 21:49:34 +02:00
Christoph Oelckers
d097c8e635
- removed the non-functional and long abandoned level music alias feature.
...
With RMAPINFO such a hack is no longer needed for anything.
2021-05-12 21:48:40 +02:00
Christoph Oelckers
03289f5097
- silenced some warnings.
2021-05-12 21:47:32 +02:00
Christoph Oelckers
4c161ae403
- SW: fixed signed-ness issues with SOP-related angle checks.
2021-05-12 00:10:02 +02:00
Christoph Oelckers
633d205d80
- SW: fixed ammo pickup amount.
2021-05-12 00:01:19 +02:00
Christoph Oelckers
bde644f77f
- SW: replaced some asserts with proper value checks.
...
These asserts can actually be triggered by some maps with incorrect setups.
2021-05-11 00:59:23 +02:00
Christoph Oelckers
ae94fb921c
- SW: Abort GetInput immediately if no valid sprite is attached to the given player.
2021-05-11 00:52:39 +02:00
Christoph Oelckers
3194efc646
- SW: processWeapon must check for valid player sprites.
...
On map start it can happen that this gets called with an incompletely set up map.
2021-05-11 00:21:50 +02:00
Christoph Oelckers
e40ed2262e
- cleanup of 'gotpic' handling.
2021-05-10 20:13:28 +02:00
Cacodemon345
ce4b748ff0
Fix compilation with Clang on FreeBSD
2021-05-09 19:52:52 +02:00
Christoph Oelckers
3dfc3e73d2
- only process actually existing mirrors when updating their state.
2021-05-08 15:23:45 +02:00
Kevin Caccamo
6e1554d7ae
Fix mirror updates in Shadow Warrior
2021-05-08 14:58:20 +02:00
Christoph Oelckers
df6a9823e3
- fixed incorrect license in sw/d_menu.cpp.
...
Should be GPL 2+, not GPL 2.
2021-05-08 00:13:50 +02:00
Christoph Oelckers
db1cf63e7a
- SW: fixed bad type for ceiling portals.
2021-05-07 00:23:56 +02:00
Christoph Oelckers
c679f83f75
- make all games return to the main menu when the game is ended with F10.
...
Duke still went to the intro movies which was a bit problematic.
2021-05-04 11:32:09 +02:00
Christoph Oelckers
0659bda6b6
- SW: clear old user content before allocating a new one.
...
If old data gets in here it may break the game.
https://github.com/coelckers/Raze/issues/349
2021-05-04 11:11:38 +02:00
Christoph Oelckers
7d77b2315f
- merged the few remaining contents of mmulti.h into d_net.h
2021-05-03 19:01:00 +02:00
Christoph Oelckers
56fcf904b5
- Backend update from GZDoom.
2021-05-03 14:48:55 +02:00
Christoph Oelckers
8003ab6fa3
Merge branch 'scriptable_cutscenes' into newrenderer
2021-05-02 22:37:46 +02:00
Christoph Oelckers
dfd47ea33a
- migrated SW to RMAPINFO as well.
...
Also removed the 'definecutscene' code from the .def parser as this was never meant to be more than a temporary solution.
2021-05-02 17:35:25 +02:00
Christoph Oelckers
1798380f23
- adapted map transition in Duke/RR.
...
There's still some issues which will be taken care of by adding map flags.
2021-05-02 10:35:43 +02:00
Christoph Oelckers
93bfc35ad6
- use the volumes to find the starting maps for the menu and the clusters for the cutscenes.
2021-05-02 01:01:30 +02:00
Christoph Oelckers
825963661b
- migrated volumes to the new storage.
2021-05-02 00:35:56 +02:00
Christoph Oelckers
727244d52d
- changed 3 places to call the proper map progression function.
...
These ignored the explicit settings in the map definition.
2021-05-01 23:10:04 +02:00
Christoph Oelckers
5959543380
- hooked up SW's intermission handling.
2021-04-30 20:08:36 +02:00
Christoph Oelckers
aa148d602c
- scriptified SW's 2D screens.
...
Compiles but not tested yet.
2021-04-30 20:08:35 +02:00
Christoph Oelckers
0dc6980e5c
- made episode intro cutscenes a game independent feature.
...
So far only defined for Duke E4 but all the logic is outside the game code now and can be universally handled.
2021-04-30 20:08:33 +02:00
Christoph Oelckers
1166b00af2
- switched intro movie playing over to the new system
...
Not tested yet.
2021-04-30 20:08:32 +02:00
Christoph Oelckers
e05f900315
- added the data structures to hold the cutscene data.
2021-04-30 20:08:31 +02:00
Christoph Oelckers
4ff2010bd1
- moved the entire screen job management to the script side.
...
This isn't hooked up yet and lots of code is commented out, the games won't start with this commit.
2021-04-30 20:08:30 +02:00
Christoph Oelckers
4a7430c8e4
- got rid of JobDesc.
2021-04-30 20:08:23 +02:00
Christoph Oelckers
71e5f9b70f
- changed screen job list to work without per-job completion callbacks.
...
They made things more complex than necessary and do not translate well to scripting.
2021-04-30 20:08:22 +02:00
Christoph Oelckers
fb5e2fe0c0
- use flags instead of bools.
2021-04-30 20:08:22 +02:00
Christoph Oelckers
ad28630df6
- offloaded map patches to data files.
...
This is a lot easier to manage than having them in the code.
For now it piggybacks on the map hack feature, later this should use the same scripted approach as GZDoom.
2021-04-24 23:07:35 +02:00
Christoph Oelckers
14971f9569
Merge branch 'master' into newrenderer
2021-04-22 00:10:37 +02:00
Christoph Oelckers
729928c576
- SW: fixed bad serialization of sector object pointers
2021-04-22 00:03:18 +02:00
Christoph Oelckers
a4f5a32680
- fixed issue with restoring SO sprite array.
...
This array has -1 for empty entries so it cannot be saved partially.
2021-04-22 00:03:17 +02:00
Christoph Oelckers
c3e5cf322e
- SW: cleaned up the depth variable handling in SECT_USER which was endian dependent, including the savegame handler
2021-04-22 00:03:17 +02:00
Christoph Oelckers
c17ec5fa45
- cleanup of savegame framework
2021-04-22 00:03:17 +02:00
Christoph Oelckers
b85da221d7
- SW: save tracks as JSON.
2021-04-22 00:03:17 +02:00
Christoph Oelckers
bb8309831c
- SW: eliminated the int pointer in ANIM.
...
# Conflicts:
# source/games/sw/src/save.cpp
2021-04-22 00:03:16 +02:00
Christoph Oelckers
c49c5fcf1d
- SW: serialize SO interpolations as JSON.
2021-04-22 00:03:16 +02:00
Christoph Oelckers
2d571586bd
- save sector objects as JSON
2021-04-22 00:03:16 +02:00
Christoph Oelckers
e9b1342ffd
- SW: save globals as JSON.
2021-04-22 00:03:16 +02:00
Christoph Oelckers
66e5b9ada7
- SW: save SectUser as JSON, also store in a managed array.
2021-04-22 00:03:16 +02:00
Christoph Oelckers
06b03f7301
- SW: save the player and related data as JSON.
2021-04-22 00:03:15 +02:00
Christoph Oelckers
9bae2295cc
- better USER clearing.
2021-04-22 00:03:15 +02:00
Christoph Oelckers
8fee2b3ed7
- save SW's User array as JSON.
2021-04-22 00:03:15 +02:00
Christoph Oelckers
32955621f8
- removed all parental lock garbage from SW.
...
Better get rid of it as it's a major complication as implemented.
2021-04-22 00:03:15 +02:00
Christoph Oelckers
bbb53bc717
- refactored the main User array into something that's automatically managed.
2021-04-22 00:03:14 +02:00
Christoph Oelckers
cd45a1f035
- made more parts of USER serialization friendly.
2021-04-22 00:03:14 +02:00
Christoph Oelckers
dcb393bc44
- started reorganizing SW's memory management.
...
Need to get rid of all those unmanaged allocations and present game data in an easily serializable form.
This adds a managed TPointer class that replicates the useful parts of std::unique_pointer but steers clear of its properties that often render it useless.
2021-04-22 00:03:14 +02:00
Mitchell Richters
93edeac791
- Clean-up of input functions.
...
* Remove unused `getincanglef()`.
* Remove unused `getincangleq16()`.
* In `PlayerHorizon` struct, clamp value when setting target in `__settarget()`, not each public `settarget()` overload.
* Rename `PlayerAngle` method `applylook()` to `applyinput()`.
* Rename `PlayerHorizon` method `sethorizon()` to `applyinput()`.
* In `PlayerHorizon::applylook()`, slightly clean return to centre code so it doesn't do math if already at 0.
* In `PlayerAngle::applylook()`, slightly clean rotscrnang/look_ang code so it doesn't do math if already at 0 and reposition where mouse input is applied so that if input is applied, the player never enters a spin.
* In `Duke3d::player_struct::apply_seasick()`, use `buildfang()` method instead of scaling float to BAM within function.
2021-04-21 20:41:04 +10:00
Christoph Oelckers
f51872db25
Merge branch 'master' into newrenderer
2021-04-20 20:46:06 +02:00
Christoph Oelckers
9e40e49c2c
- generalized the special key handling for skipping cutscenes.
2021-04-20 15:01:26 +02:00
Mitchell Richters
0c5729b0f6
- SW: Ensure all sprite angles are backed up in the ticker.
...
* Fixes #326 .
2021-04-20 21:33:42 +10:00
Mitchell Richters
d34070b8ae
- gameinput.h: Remove precise bool from horizsumfrac()
, look_anghalf()
and looking_arc()
added in a4895cb270
.
...
* It looks terrible to have low precision math versions of look_anghalf and looking_arc since we always interpolate `look_ang` now, so lets just not.
2021-04-20 21:12:17 +10:00
Mitchell Richters
de06030ea0
- gameinput.cpp: Make sethorizon()
, applylook()
and calcviewpitch()
class functions of PlayerHorizon
and PlayerAngle
where appropriate.
2021-04-19 20:50:10 +10:00
Christoph Oelckers
82194bbf6b
Merge branch 'master' into newrenderer
...
# Conflicts:
# source/games/exhumed/src/2d.cpp
2021-04-17 13:22:30 +02:00
Christoph Oelckers
2b9a527aba
- added a 'Start' method to DScreenJob.
...
Since the menu pauses the ticker this is needed to perform initial setup before the first frame.
2021-04-16 23:29:53 +02:00
Christoph Oelckers
4950b556c9
- handled SW's screens.
2021-04-16 18:43:59 +02:00