Christoph Oelckers
b9477f147e
- migrated Duke's interpolations to the common system and added handling for texture scrollers.
2020-11-26 18:32:36 +01:00
Christoph Oelckers
d8e331ef0f
- changed Duke/RR palette handling to only retrieve the currently active palette right before rendering.
...
Storing this in the player_struct is pointless and a relic from having to use real hardware palette switches.
With this now just being a translation index being passed to the backend it can be cheaply retrieved right when used and nowhere else.
Also making some changes to how RRRA's psychedelic cactus handles the projection. This fixes issues with occasionally passing a bad matrix.
2020-11-05 07:31:48 +01:00
Christoph Oelckers
0eb10f0313
- newowner and related code.
2020-11-04 20:40:25 +01:00
Christoph Oelckers
24cfd841f2
- lotsofglass - final function in spawn.cpp
2020-11-04 20:40:07 +01:00
Christoph Oelckers
90511a97e7
- initcrane and spawneffector.
2020-11-04 20:40:06 +01:00
Christoph Oelckers
e2e24fc508
- spawn.cpp part 2.
...
(Beware of the crane! That one's hacky!)
2020-11-04 20:40:06 +01:00
Christoph Oelckers
edb991e47d
- first part of spawn.cpp.
2020-11-04 20:40:06 +01:00
Christoph Oelckers
cc0a668da3
- player.i, part 2
...
# Conflicts:
# source/games/duke/src/sectors_r.cpp
2020-11-04 20:39:43 +01:00
Christoph Oelckers
d5a74e4290
- handled several GetIndex calls.
2020-11-04 20:39:39 +01:00
Christoph Oelckers
618c739318
- spawninitdefault.
2020-11-04 19:55:17 +01:00
Christoph Oelckers
2b0f56a94c
- changed setsectinterpolate to receive a sector number, not a sprite number.
2020-11-04 19:55:16 +01:00
Christoph Oelckers
12ef8c4543
This completes player_r.cpp
2020-11-04 19:55:15 +01:00
Christoph Oelckers
87e8801531
- handle the clipmove result in processinput.
2020-11-04 19:55:14 +01:00
Christoph Oelckers
f598c16e03
- use the script interface where needed.
...
Later the scripts should only see some token representing an actor, not an index.
2020-11-04 08:24:17 +01:00
Christoph Oelckers
7e29be7569
- switched checkhitwall interface to actors.
2020-11-03 21:49:57 +01:00
Christoph Oelckers
768487584e
- aim and all calling instances.
...
This also takes care of RR's chicken arrow storing an actor reference in lotag.
2020-11-03 20:42:03 +01:00
Christoph Oelckers
3fdeedcae7
- player.cpp is free of array references, except one that's unavoidable for now.
2020-11-03 19:25:07 +01:00
Christoph Oelckers
79f850d126
- PlayerColorChanged, hits, hitasprite.
2020-11-03 19:21:44 +01:00
Christoph Oelckers
de92287d0b
- fixed the messed up parameter order of OnEvent.
...
This should serve as a textbook example why passing around indices is a very, very bad idea!
2020-11-03 19:21:42 +01:00
Christoph Oelckers
2c573a720b
- starting at the bottom of player_r.cpp.
2020-11-03 19:21:42 +01:00
Christoph Oelckers
ac58dd8017
- execute.
2020-11-03 07:06:30 +01:00
Christoph Oelckers
8f815f9391
- LoadActor.
2020-11-03 07:06:29 +01:00
Christoph Oelckers
ad84c8149e
- the rest of sectors.cpp
2020-11-03 07:06:27 +01:00
Christoph Oelckers
4236f800f6
- operateactivators and operatemasterswitches.
2020-11-03 07:06:26 +01:00
Christoph Oelckers
4dd9be7b6d
..
...
- activatewarpelevators
2020-11-03 06:52:26 +01:00
Christoph Oelckers
6adc2f8e55
- findplayer
2020-11-01 17:07:47 +01:00
Christoph Oelckers
b2a2232260
- callsound
2020-11-01 17:07:46 +01:00
Christoph Oelckers
7e8be10b04
- movefta and ifhitsectors.
2020-11-01 11:58:41 +01:00
Christoph Oelckers
4c9655b110
- check_fta_sounds.
2020-11-01 10:53:45 +01:00
Christoph Oelckers
7967391728
- actors_lava.cpp handled.
2020-11-01 10:50:10 +01:00
Christoph Oelckers
f0b1ab504d
- fall_common and its fallspecial subfunction.
2020-11-01 10:48:26 +01:00
Christoph Oelckers
85ea1df76a
- alterang
2020-11-01 10:44:16 +01:00
Christoph Oelckers
31e5023004
- dodge, furthestcanseepoint, furthestangle.
2020-11-01 10:41:25 +01:00
Christoph Oelckers
4e675ea322
- makeitfall
2020-11-01 10:41:24 +01:00
Christoph Oelckers
291edcdab8
- getglobalz
2020-11-01 10:41:16 +01:00
Christoph Oelckers
8f75a58343
- shared SE31 code.
2020-11-01 10:31:41 +01:00
Christoph Oelckers
21fb3fb7bb
- shared SE25 code.
2020-11-01 10:27:54 +01:00
Christoph Oelckers
00f5a08390
- shared SE24 code.
2020-11-01 10:27:41 +01:00
Christoph Oelckers
02813802d4
- the 5 remaining shared SE handlers.
2020-11-01 10:12:27 +01:00
Christoph Oelckers
769bc3bd22
- handle_se20-26.
2020-11-01 10:02:58 +01:00
Christoph Oelckers
5d837176de
- handle_se18+19
2020-11-01 09:58:39 +01:00
Christoph Oelckers
5b096ea35e
- handle_se15-17.
2020-11-01 09:53:50 +01:00
Christoph Oelckers
b585192721
- handle_se11-13.
2020-11-01 09:37:41 +01:00
Christoph Oelckers
45905b9137
- handle_se05, 08, 10.
2020-11-01 08:51:13 +01:00
Christoph Oelckers
2edc7168ca
- handle SE02-SE04.
2020-11-01 08:43:24 +01:00
Christoph Oelckers
80aab4b5f7
- handle_se30.
2020-11-01 08:22:47 +01:00
Christoph Oelckers
2dd2ba1469
- handle_SE14 function signature and recordoldspritepos
2020-11-01 08:13:29 +01:00
Christoph Oelckers
92f95ea195
- SE14 part 2
2020-11-01 07:56:49 +01:00
Christoph Oelckers
1ce2600a43
- SE 0 and 1 handlers.
2020-11-01 07:36:49 +01:00
Christoph Oelckers
e9d6fb2bb5
- jibs, bloodpool, shell, glasspieces and scrap.
2020-11-01 07:27:15 +01:00
Christoph Oelckers
6cbe74e115
- forcesphere, watersplash2, frameeffect and money.
2020-11-01 07:24:00 +01:00
Christoph Oelckers
6e1d3a025a
- ooz, reactor and camera.
2020-11-01 07:23:27 +01:00
Christoph Oelckers
876b6d5081
- forcesphere and recon.
2020-11-01 07:20:17 +01:00
Christoph Oelckers
3d16d9f44a
- respawnmarker, rat and queball.
2020-11-01 07:15:57 +01:00
Christoph Oelckers
6257ebc30c
- bounce, movetongue and rpgexplode.
2020-11-01 07:11:49 +01:00
Christoph Oelckers
e001b3117f
- movetouchplate, moveooz, movecanwithsomething.
...
# Conflicts:
# source/games/duke/src/funct.h
2020-11-01 07:07:59 +01:00
Christoph Oelckers
b7f26c064d
- 3 smaller functions.
2020-11-01 06:54:14 +01:00
Christoph Oelckers
81717b54ee
- detonate and movemasterswitch.
...
# Conflicts:
# source/games/duke/src/actors.cpp
2020-10-31 13:24:30 +01:00
Christoph Oelckers
38e0ac1e3f
- movefountain and moveflammable.
...
# Conflicts:
# source/games/duke/src/actors.cpp
2020-10-31 13:24:30 +01:00
Christoph Oelckers
7de6528a1f
- the status bars work as objects.
...
# Conflicts:
# source/common/menu/menudef.cpp
2020-10-31 13:20:54 +01:00
Christoph Oelckers
28d0bc7477
- movecrane interface cleanup.
2020-10-31 13:19:26 +01:00
Christoph Oelckers
d95131cb4d
- actor iterators for movefx and its RRRA subfunction.
2020-10-31 13:19:25 +01:00
Christoph Oelckers
b03a637e10
- ms function.
2020-10-31 13:19:24 +01:00
Christoph Oelckers
acda4b7799
- fixed Duke's RPG explosion
...
Fixes #146
2020-10-24 19:44:10 +02:00
Christoph Oelckers
8fd0fe5955
- changed the spriteq to use pointers instead of indices.
2020-10-24 09:40:10 +02:00
Christoph Oelckers
34e39dd221
- pass spawner as an actor pointer to 'lotsofstuff'.
...
Allows doing this without using sprite indices.
2020-10-24 09:36:35 +02:00
Christoph Oelckers
46d90f5d49
- clearcamera and ssp.
2020-10-23 22:37:38 +02:00
Christoph Oelckers
9cdaaff42b
- migrated EGS and deletesprite to new actor interface.
...
Inline wrappers for old code exist.
The backupplayer inline was moved into player.cpp because that's the only place it gets used.
2020-10-21 19:14:41 +02:00
Christoph Oelckers
99e3eeb19e
- split up shoot_r as well and consolidated both blood splat functions.
2020-10-21 01:03:38 +02:00
Christoph Oelckers
4d3135f4b8
- cleanup and consolidation of moveweapons_r.
2020-10-18 10:42:26 +02:00
Mitchell Richters
c08851e4c0
- Blood/Duke/RR/SW: Drop resetinputhelpers()
.
2020-10-12 14:42:43 +11:00
Mitchell Richters
9bcdeae6cd
- InputPacket: Change q16avel
to avel
, changing type from fixed_t to float.
2020-10-08 14:47:30 +11:00
Mitchell Richters
fca846272e
- gamecontrol: Initial setup of PlayerAngle
struct and deployment within Duke.
...
* Struct made up of binangle class units.
* Create signed clone of binangle for use with look_ang and rotscrnang.
* Append currently outgoing function names with `2` at the end to avoid conflict.
2020-10-07 23:13:29 +11:00
Mitchell Richters
f39939d114
- gamecontrol: Initial setup of PlayerHorizon
struct and deployment within Duke.
...
* Started with the most complicated game first.
* Struct made up of fixedhoriz class units.
* Append currently outgoing function names with `2` at the end to avoid conflict.
2020-10-07 17:12:48 +11:00
Mitchell Richters
64113f8f9c
- Blood/Duke/SW: Smooth out player's zpos adjustment while in 3rd person view.
2020-09-23 23:12:59 +10:00
Mitchell Richters
f806cdcec6
- Blood/Duke/RR/SW: Unify the player's angle/horizon helper functions.
2020-09-21 17:12:51 +10:00
Mitchell Richters
7bf1cacc7f
- Blood/Duke/RR/SW: Unify the player's angle function.
...
* For Blood/SW, exposes `SB_LOOK_LEFT`/`SB_LOOK_RIGHT` to games, hooking up `q16look_ang` and `q16rotscrnang` within.
* For SW, use Duke & Blood's return to center function and remove `PF_TURN_180` bit.
* For RR, replace a few misused bits with some bools inside of `player_struct`.
* Since bulk of functionality is sourced from Duke (30Hz), apply proper scaling so SW speed matches (40Hz).
2020-09-21 17:12:26 +10:00
Mitchell Richters
0ab3b33a6c
- Blood/Duke/RR/SW: Unify the player's horizon function.
...
* For Duke/SW, we continually apply `SB_CENTERVIEW` only if it was previously a toggled action, similar to Blood.
* For SW, we remove two SW-specific bits (`PF_LOCK_HORIZ` and `PF_LOOKING`) that are no longer needed.
* For Duke, we remove `return_to_center` and just use the `SB_CENTERVIEW` action bit as required.
* For `sethorizon()`, feature set and adjustment speeds are an averaged out accumulation across Duke/SW:
** GameTicRate is factored in for adjustment decisions to provide consistency for SW being the faster game.
** Adjustment amounts are half way between Duke/SW.
2020-09-20 20:01:36 +10:00
Mitchell Richters
1900cf1fcc
- Move Duke's getincangle()
function to the backend, create Q16.16 variant (getincangleq16()
) and replace Shadow Warrior's discrete implementations shared versions.
...
* Need SW's input helpers available for Blood but therefore also need an angle delta function that does not seem to exist in Blood.
* Realise that gamecontrol.h/cpp might not be the most appropriate place, but it's a shared location and these will go into binaryangle.h when its utilisation can be more realised.
* Because SW's logic was reversed, in that param #1 was the new angle and param #2 was the current, all calls have been reversed.
* By happenstance, also fixes an issue with multiple 180° turns in quick succession.
2020-09-20 16:21:13 +10:00
Christoph Oelckers
8fa5d3d9d2
- added the remaining CON features from EDuke 2.x
...
Not everything will do something, though. This was some incredibly careless code operating without a safety net allowing uncontrolled write access to the map structure.
Most of the critical fields have been made read-only, which has been the only mode of access in the mods I checked.
Note that this does not enable scripting of the weapon sprite drawer, only the gameplay related features were done.
2020-09-17 23:06:54 +02:00
Christoph Oelckers
1f7bc6d69e
- interpolation fix from EDuke: "Patch from Striker to improve sprite interpolation"
...
Fixes #109
2020-09-11 22:54:52 +02:00
Christoph Oelckers
b52a2b0d9a
- set up the loadscreen code.
...
This isn't active, though, because load times are so short these days that all this results in is an irritating screen flash before the level starts.
It may be activated later when hires assets are in use.
Fixes #10 (or not...? ;) )
2020-09-09 22:42:01 +02:00
Christoph Oelckers
a6c92aec64
- removed all automap code from SW and the flat drawer from the backend.
...
This should have been the last parts of automap code.
Now on to rebuild this thing in a cleaner fashion...
2020-09-06 12:14:08 +02:00
Christoph Oelckers
adbedd30c4
- consolidated the 4 functions for handling the automap zoom.
2020-09-05 00:58:25 +02:00
Christoph Oelckers
e5e8c02f1d
- WIP level transition refactored to a game independent event system.
2020-09-04 19:43:35 +02:00
Christoph Oelckers
e19923ce4b
- removed setGameClockStart.
...
This won't be needed anymore.
2020-09-02 20:57:03 +02:00
Christoph Oelckers
e5d963c515
- refactored third person view to only access the clock in its worker function
...
Timer values in interface code are undefined, these should not access anything that changes at real time.
Also use smoothratio to do the calculation in frame time, not tic time.
2020-08-31 19:27:22 +02:00
Christoph Oelckers
71c3441b1e
- transitioned cloudclock.
...
This timer runs at 60 Hz in the render code, so it needs to take smoothratio into account.
2020-08-31 19:22:21 +02:00
Christoph Oelckers
d59284c96b
- transitioned Duke to the new main loop.
...
Everything compiles, but hasn't been tested. Doing a safety commit first.
2020-08-30 12:02:32 +02:00
Christoph Oelckers
cc04d41903
- Duke: moved the clock reset to a separate function and deleted the unused lockclock variable.
2020-08-30 07:53:20 +02:00
Christoph Oelckers
fab561d757
- cleaned up Duke's main GameTicker function.
...
* moved the part that alters the input before queuing it to GetInput
* moved moveloop into the main function
* reshuffled a few things for better grouping by task.
2020-08-29 21:20:10 +02:00
Christoph Oelckers
20426a5a4f
Revert "- pass loc as a parameter to Duke's GetInput function to uncouple it from the global variable."
...
This reverts commit a03b6cf57c
.
Turns out this wasn't really useful.
2020-08-29 21:09:04 +02:00
Christoph Oelckers
a03b6cf57c
- pass loc as a parameter to Duke's GetInput function to uncouple it from the global variable.
2020-08-29 18:07:49 +02:00
Christoph Oelckers
694444b62a
- converted the remaining input bits.
...
Looks like it is working in all games except Blood (not that it surprises me that it's Blood again which has issues...)
2020-08-29 13:32:55 +02:00
Christoph Oelckers
fe7f3a2f9e
- handle the run key.
2020-08-29 00:57:07 +02:00
Christoph Oelckers
36d676ca20
- renamed ESyncBits so that the replacement can take that name later.
2020-08-26 22:39:15 +02:00
Christoph Oelckers
abf715eace
- unified the packet structures of all games.
...
Currently the bit fields are still separate and they have to be merged, but for now the added memory does not matter.
Having this structure in the common parts will allow work on consolidating the input code, though.
2020-08-26 17:12:48 +02:00
Mitchell Richters
c5f523fb3c
- Duke: Make a bit more use of the calculated smooth ratio.
2020-08-25 19:48:52 +02:00
Christoph Oelckers
c777fea1af
- added back the player sprites in Duke/RR's player setup menu.
...
Fixes #46
2020-08-23 20:44:17 +02:00
Christoph Oelckers
ef78e8602a
- major cleanup and consolidation of the screen/hud resizing code.
...
This is now being handled by the backend, except for the processing of the key bindings which cannot be done yet.
2020-08-16 02:55:50 +02:00