Commit graph

971 commits

Author SHA1 Message Date
Christoph Oelckers
f4c79161ad - fixed crash when opening the first gate in RRRA's E1L1.
There was some poor coding at play here that fell victim to changed execution order.
Changed everything so that problem cases always get dealt with properly.
2020-10-18 12:10:46 +02:00
Christoph Oelckers
4d3135f4b8 - cleanup and consolidation of moveweapons_r. 2020-10-18 10:42:26 +02:00
Christoph Oelckers
08e29396e5 - split moveweapons_d further up into more smaller parts. 2020-10-18 09:45:41 +02:00
Christoph Oelckers
2b79b29fef - further splitting of moveweapons_d.
Progress with this but still not enough yet to break it down into manageable parts.
2020-10-18 08:38:29 +02:00
Christoph Oelckers
94e8213caf - split fireball handling out of moveweapons_d to reduce the function's size. 2020-10-17 19:53:04 +02:00
Mitchell Richters
3582717c43 - Duke: Fix issues in recordoldspritepos() following changes in 7043092fd0.
* Fixes #129.
2020-10-16 14:17:19 +11:00
Mitchell Richters
b1536d8a0b - Duke (RRRA): Fix potential issue originating from 1bc51a7367 where horizon might have needed adjustment to 0 but wouldn't have done so.
* Previously used to determine whether to apply a horizon adjustment on whether local variable `horiz` was 0 or not (since baseline horizon was 100).
* For no particular reason, initalise `horiz` as FRACUNIT and process if it is not equal to one.
2020-10-15 20:33:28 +11:00
Mitchell Richters
db419fd618 - Duke (RRRA): Fix vehicle avel while cl_syncinput 1.
* Fully fixes #128.
2020-10-15 20:12:48 +11:00
Mitchell Richters
fb91fc49a3 - processMovement(): Add commentary around avel constants used within function and how they came to be. Also clean up some left-over code. 2020-10-15 20:12:34 +11:00
Christoph Oelckers
76e4661eea - more simple pointer replacements - lots of them... 2020-10-15 01:34:28 +02:00
Christoph Oelckers
0b80ad8fb1 - handled the last remaining stat iterators in Duke. 2020-10-15 01:34:28 +02:00
Christoph Oelckers
53414afbe5 - all stat iterators in sectors.cpp handled. 2020-10-15 01:34:28 +02:00
Christoph Oelckers
3d36381752 - converted all stat iterators outside sector*.cpp. 2020-10-15 01:34:28 +02:00
Christoph Oelckers
760a557f73 - converted the remaining sector iterators in Duke. 2020-10-15 01:34:27 +02:00
Christoph Oelckers
758fab1804 - replaced several sector iterators in Duke code. 2020-10-15 01:34:27 +02:00
Christoph Oelckers
5c9b261823 - all sector iterators in actors_d.cpp, actors_r.cpp and actors_lava.cpp. 2020-10-15 01:34:27 +02:00
Christoph Oelckers
060b66b96b - replaced all stat iterators in actors_r.cpp. 2020-10-15 01:34:27 +02:00
Christoph Oelckers
db8b454df1 - fixed ond bad statnum 2020-10-15 01:34:27 +02:00
Christoph Oelckers
053a1d46d5 - replaced all stat iterators in actors_d.cpp. 2020-10-15 01:34:26 +02:00
Christoph Oelckers
595ec11609 - replaced all sector iterators in actors.cpp. 2020-10-15 01:34:26 +02:00
Christoph Oelckers
7043092fd0 - all stat iterators in Duke:actors.cpp replaced. 2020-10-15 01:34:26 +02:00
Christoph Oelckers
13093aef56 - a few quick ones, mostly simple search & replace. 2020-10-15 01:34:26 +02:00
Christoph Oelckers
a3601e59ef - rr_specialstats, rrra_specialstats and respawn_rrra.
(These look a lot better now. :) )
2020-10-15 01:34:26 +02:00
Christoph Oelckers
69e6bee64a - Interators for SE00 and a few others. 2020-10-15 01:34:25 +02:00
Christoph Oelckers
5d734eafa0 - Iterators and pointers for movefx, moveflammable and detonate 2020-10-15 01:34:25 +02:00
Christoph Oelckers
2358f14cd1 use iterators for moveplayers, movedummyplayers and movefallers_d. 2020-10-15 01:34:25 +02:00
Christoph Oelckers
d3a31a3ab7 - hitradius_d uses the iterator now. 2020-10-15 01:34:25 +02:00
Christoph Oelckers
922122c0bc - same for movefta_d and ifhitbyweapon_d 2020-10-15 01:34:25 +02:00
Christoph Oelckers
5bcaaf45e7 - use a pointer to access sprites in movesprite. 2020-10-15 01:34:24 +02:00
Christoph Oelckers
8ece66e55c - use the new iterators in the movetransports functions.
Also prefer pointers over array access.
2020-10-15 01:34:24 +02:00
Christoph Oelckers
91fdf160b6 - fixed clearing of actorinfo.
It overwrote memory beyond its end.
2020-10-15 01:34:24 +02:00
Mitchell Richters
e4af4f28ce - Duke (RR): Avoid integer truncation when dividing p->VBumpNow. 2020-10-15 10:27:08 +11:00
Mitchell Richters
1bc51a7367 - Duke (RR): Repair issues with horizon following changes in 09a05f354c and partially address vehicle turning speed in processVehicleInput().
* Issues with vehicle input handling with `cl_syncinput 1` still remain. Will address after work.
* Partially addresses #128.
2020-10-15 10:20:52 +11:00
Christoph Oelckers
d368d734d3 - prototyping some refactoring helpers. 2020-10-14 00:58:21 +02:00
Christoph Oelckers
bfed4e179b - little bit of array access removal.
(It's going to be a long way to refactor the sprite system to not rely on indices...)
2020-10-14 00:30:14 +02:00
Christoph Oelckers
f0ef7a1322 - tabified animatesprites_d.cpp and animatesprites_r.cpp. 2020-10-13 21:44:05 +02:00
Christoph Oelckers
20248d8e08 - fixed a few CCMDs which were blocked in the console. 2020-10-12 19:48:47 +02:00
Christoph Oelckers
86ad576675 - fixed lockup on Shareware screen when quitting Duke
Two errors: the menu wasn’t closed and the shareware check was inverted.
2020-10-12 08:07:51 +02:00
Mitchell Richters
c08851e4c0 - Blood/Duke/RR/SW: Drop resetinputhelpers(). 2020-10-12 14:42:43 +11:00
Christoph Oelckers
cb8d2eb94c - added serializers for PlayerAngle and PlayerHorizon. 2020-10-11 16:55:12 +02:00
Christoph Oelckers
1757ef2aa6 - split the game input code off gamecontrol.cpp into its own file. 2020-10-11 16:33:43 +02:00
Christoph Oelckers
8e1c71b867 Merge branch 'InputContinuation' 2020-10-11 15:24:51 +02:00
Christoph Oelckers
7deb3ed4bd - Duke: got rid of the last 3 remaining #defines not used for list generation, as well. 2020-10-11 14:30:43 +02:00
Christoph Oelckers
fc82b3bc8a - Duke: replaced the game type macros with inline functions. 2020-10-11 14:30:42 +02:00
Christoph Oelckers
9cc1268839 - Duke: added missing include guard to conlabel.h. 2020-10-11 14:30:42 +02:00
Christoph Oelckers
adaf25377c - moved the player sprite away from the edge of the frame. 2020-10-11 07:50:41 +02:00
Christoph Oelckers
fe2e96d3a6 Merge branch 'master' into InputContinuation
# Conflicts:
#	source/games/duke/src/duke3d.h
2020-10-10 21:39:27 +02:00
Christoph Oelckers
78d5b2aa95 - Duke: fixed: The Recon's roaming sound was poorly checked resulting in garbled output.
It checked for two instances globally, which made the same actor repeat its sound all over again, but if more recons were present some were silent.
Now each one is allowed to play its effect separately.
2020-10-10 19:17:23 +02:00
Christoph Oelckers
b06a847d9a Merge branch 'menu2'
# Conflicts:
#	source/exhumed/src/sound.cpp
2020-10-10 19:03:29 +02:00
Christoph Oelckers
b142f33edd - fixed problems with stopping sector effect sounds.
The old check only accounted for the case of trying to play a valid follow-up sound, but not for merely stopping the old one.
Restored the original check that was here.
2020-10-10 18:11:26 +02:00
Christoph Oelckers
f9ab77f700 - create named texture copies for 'tilefromtexture' replacements.
We want to be able later to find them in the texture manager again.
2020-10-10 16:52:04 +02:00
Mitchell Richters
271eb1c3fa - binaryangle.h/cpp: Hook up FSerializer and use within Duke for saving objects. 2020-10-11 00:10:53 +11:00
Christoph Oelckers
294a806793 - fixed some issues with prematurely terminated sounds. 2020-10-10 12:57:43 +02:00
Christoph Oelckers
16fd505f9a - make sure that sfxinfo_t is always fully initialized by adding initializer values to all fields.
Let's hope this finally fixes those sound hiccups.
2020-10-10 09:47:00 +02:00
Mitchell Richters
8f68e8b4a1 - Amend 2865fef7ed as accidentally returned horizon as Build and not Q16.16. 2020-10-10 17:52:43 +11:00
Mitchell Richters
2865fef7ed - Duke: Restore return_to_center in gameexec.cpp dropped in 0ab3b33a6c and redo based on new code. 2020-10-10 16:59:00 +11:00
Mitchell Richters
6ecbb2587e - Duke: Fix z position when on certain cameras following changes in 09a05f354c. 2020-10-10 16:17:02 +11:00
Christoph Oelckers
4024ebd12d - re-added Duke 1.3's credit screens. 2020-10-09 00:11:49 +02:00
Christoph Oelckers
02507d937d - got the text screens working. Also reformatted RR's credits a bit for a better presentation. 2020-10-08 23:40:17 +02:00
Christoph Oelckers
6ba06f5ed0 - ImageScroller WIP commit. 2020-10-08 22:20:41 +02:00
Christoph Oelckers
15eaf86f5a - preparations for the image scroller menu. 2020-10-08 18:02:25 +02:00
Mitchell Richters
9bcdeae6cd - InputPacket: Change q16avel to avel, changing type from fixed_t to float. 2020-10-08 14:47:30 +11:00
Christoph Oelckers
56eae0b42d - got the basics working for Exhumed's main menu. 2020-10-08 00:21:07 +02:00
Christoph Oelckers
789eb6d51d - Most of Duke's menus work again. 2020-10-07 20:32:43 +02: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
e2691d4184 - Duke: Clean up a few missed things during f39939d114. 2020-10-07 18:34:52 +11:00
Mitchell Richters
6a30d6880e - InputPacket: Change q16horz to horz, changing type from fixed_t to float. 2020-10-07 18:22:07 +11:00
Mitchell Richters
d16b4651bb - gamecontrol: Remove old horizon code left behind while cutting over each game. 2020-10-07 18:12:09 +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
082336e5f8 - buildhoriz: Implementation of pitch and BAM conversion code.
* Determined maximum horizon able to be handed by engine in Q16.16 format is 280039127.
* Re-did pitch math to work on this known maximum and standardised pitch around -90/90 degrees as it should be.
* Because pitch is now -90/90 and not ~-188/188, m_sensitivity_y probably requires re-scaling.
2020-10-07 13:29:04 +11:00
Mitchell Richters
8be8bcc87a - Duke/SW: Fix InitTracerTurret() to use player's q16horiz with full precision and replace some manually expressed mulscales with mulscale16() inline from pragmas.h. 2020-10-07 13:28:58 +11:00
Mitchell Richters
09a05f354c - Re-standardise horizon around 0 and not 100.
* Blood had this right. It makes sense that the horizon be based around as it's easier to work with.
* Removed all associated game math to deduct default horizon of 100 when doing weapon zvel etc, meaning actual horizon can just be used.
* Re-did return to center function to work on the already converted pitch. Return speed should be 1:1 with previous code.
2020-10-07 13:28:45 +11:00
Christoph Oelckers
bec1f67178 - implemented the menu caption for Duke et.al. 2020-10-06 20:49:55 +02:00
Christoph Oelckers
55e7e34707 - added texture aliases so that tiles can given real names in the texture manager.
Use this to turn Duke's and RR's tile enums into real names, leaving out RRTILExx - the few that are needed were renamed.
2020-10-06 19:26:22 +02:00
Mitchell Richters
bbc60e8424 - Duke: Ensure tripbomb's ammo_count decrements with use.
* Note: Unsure whether `isWW2GI()` was meant to be inversed but do not believe so. Have removed check for now.
* Fixes #104.
2020-10-06 16:31:28 +11:00
Christoph Oelckers
3dbb8cbb11 - safety commit 2020-10-05 21:47:53 +02:00
Christoph Oelckers
82612a1330 - it compiles again (with lots of code commented out.) 2020-10-04 20:11:02 +02:00
Christoph Oelckers
ddc968f607 - disable palette emulation when map global fog is active.
This doesn't work well together and is pointless anyway as everything needs to be rendered at full brightness.
Fixes #99
2020-10-03 18:04:07 +02:00
Christoph Oelckers
89d5d18b9e - these parts were missed somehow. 2020-10-02 22:42:54 +02:00
Christoph Oelckers
57945d2baf - eliminated a few overlooked 'long's. 2020-10-02 22:18:08 +02:00
Mitchell Richters
43e447d40b - Duke: Fix auto-aiming issues for shotgun and chaingun.
Fixes #98.
2020-10-02 17:05:50 +10:00
Christoph Oelckers
4c2ff2950a - for Duke/RR, when not using English force use of the regular text font for drawing the map label on the automap.
This essentially removes the tiny font which is simply too small to ever be able to receive a proper international extension from the equation for localization because the level name display was the only remaining relevant content using this font.
The only other screen where this font is still being used to draw text requiring translated content is the multiplayer summary which will have to be redesigned anyway if multiplayer becomes functional again.
2020-09-29 21:47:32 +02:00
Christoph Oelckers
6488f52055 - fixed: Restarting after dying unset the currently selected skill level. 2020-09-29 18:30:00 +02:00
Christoph Oelckers
b57e13ff62 - mouse code update.
May still need some tweaking of the factors.
2020-09-28 22:36:43 +02:00
Christoph Oelckers
dcae0c4103 - fixed incomplete merging of WW2GI/Duke code for the pistol animation 2020-09-28 08:55:59 +02:00
Christoph Oelckers
9ab29f5975 - reset ud.eog after playing the end of game cutscene.
If this persists, all following levels will also immediately end the game as well.
2020-09-27 20:34:48 +02:00
Christoph Oelckers
3a50f82498 - Duke: In the ending cutscene of the first episode, stop the music only when entering the summary screen. 2020-09-27 20:34:48 +02:00
Christoph Oelckers
5d35d02c87 - fixed overflow in first episode's end cutscene. 2020-09-27 20:34:48 +02:00
Christoph Oelckers
a5984ddc7c - fixed sprite changing logic for developer commentaries and attenuate the music while commentaries are playing. 2020-09-27 12:52:26 +02:00
Mitchell Richters
392c9ec0d6 - Duke: Tune menu light amounts. 2020-09-27 17:52:20 +10:00
Christoph Oelckers
af8b7679b6 - bumped version numbers for 0.7. 2020-09-26 17:50:19 +02:00
Christoph Oelckers
b93a9b478a - implemented World Tour's developer commentaries. 2020-09-26 17:43:34 +02:00
Christoph Oelckers
3a459ac603 - added a parser for WT's developer commentary definitions. 2020-09-26 16:18:44 +02:00
Christoph Oelckers
e549aa0527 - fixed: concmd_actor wrote beyond the end of the ScriptCode array.
This was causing spurious crashes.
2020-09-26 12:46:56 +02:00
Mitchell Richters
40a89fb26f - Duke/RR: Fix alt HUD health flashing when > 100. 2020-09-27 02:27:03 +10:00
Mitchell Richters
837b7c0a30 - SW: Changed some downscaled and upscaled Q16.16 variables missed when doing 46810ec490. 2020-09-27 02:07:07 +10:00
Mitchell Richters
362fda4378 - Duke: Change fix in 6e9576b871 to be outside of donewgame() in case player is loading a map from the command line. 2020-09-26 09:17:50 +10:00
Mitchell Richters
6e9576b871 - Duke: Fix skill level coming in from main loop. 2020-09-26 08:55:10 +10:00
Christoph Oelckers
73c57af9ca - added credit screen handling for Duke Nukem 1.3. 2020-09-25 20:22:30 +02:00
Christoph Oelckers
1fc919f5a1 - fixed episode startup on Duke so that the intro for ep. 4 plays. 2020-09-25 19:46:04 +02:00
Christoph Oelckers
89bc194035 - added shareware checks to the "start game" menus. 2020-09-25 19:36:50 +02:00
Christoph Oelckers
e7f16f6ff7 - Duke: do not play 1.5 intro sounds in 1.3
- Duke: In 1.3, the Duke team image should stay until dismissed manually.
2020-09-25 18:40:45 +02:00
Mitchell Richters
9b12675f4e - processMovement(): Re-arrange parameter variables somewhat so game-specific parameters are at the end and to allow some common defaults so they don't need specifying. 2020-09-25 22:26:50 +10:00
Mitchell Richters
4ff3810711 - Blood/Duke/RR/SW: Improvements to 3rd person viewing by modifying the rendered player's posz so the camera is looking further above the camera sprite as EDuke32 does. Blood just enables the crosshair when using 3rd person view. 2020-09-25 17:52:00 +10:00
Mitchell Richters
e7de0da36c - Duke: Changed some downscaled and upscaled Q16.16 variables missed when doing 46810ec490. 2020-09-25 17:08:44 +10:00
Mitchell Richters
0746b98886 - RR: Don't draw weapon on screen when in 3rd person view. 2020-09-25 16:17:55 +10:00
Mitchell Richters
9c0667a7ce - Duke: Don't display cracking knuckles while in 3rd person view. 2020-09-25 16:17:34 +10:00
Mitchell Richters
ad1f0ce6c3 - Duke: Tune sizing in FullscreenHUD1 for Duke 3D 1.3D and Nam/WW2GI. 2020-09-25 09:26:55 +10:00
Mitchell Richters
5e947cd78f - Duke: Fix occasional flicker in corner of 'Completed' text. Need to do the text after all backdrop changes. 2020-09-25 09:08:22 +10:00
Mitchell Richters
439633e6db - Duke: Don't play 3rd pipebomb explosion if not Plutonium/Atomic. 2020-09-25 08:40:58 +10:00
Mitchell Richters
9e0bd569f7 Merge branch 'back_to_basics2' into Input_UnifyProcessMovement
# Conflicts:
#	source/exhumed/src/input.cpp
2020-09-25 00:17:16 +10:00
Mitchell Richters
16cee1148b - Duke: Change a few ps[] to use the p alias available following changes in f4fff5ee30. 2020-09-25 00:09:31 +10:00
Mitchell Richters
04af1d9ce8 - All Games: Unify processMovement(). 2020-09-24 22:32:37 +10:00
Mitchell Richters
081dfb187c - Duke: Make changes in ce7af5fe0e easier to read by way of aliases. 2020-09-24 09:05:42 +10:00
Christoph Oelckers
44fc452747 - World Tour: Fixed missing smoke on burning monsters
Yay, another one-liner...
2020-09-23 19:24:40 +02:00
Christoph Oelckers
daabb31bff - more stat constants 2020-09-23 19:24:01 +02:00
Christoph Oelckers
67985b7819 - changespritestat literal number replacement 2020-09-23 18:51:43 +02:00
Christoph Oelckers
71213bf8bd - added a missing code fragment for WT's lavapool.
This made them float in the air instead of being on the ground.
2020-09-23 18:18:23 +02:00
Christoph Oelckers
a6c45a8e52 - Duke: must serialize SB_CENTERVIEW (but no other bits.) 2020-09-23 18:18:23 +02:00
Christoph Oelckers
f4fff5ee30 - moved sync structure into the playerstruct for easier maintenance. 2020-09-23 18:18:23 +02:00
Mitchell Richters
8690c633d8 - Blood: Add extra call to inputState.ClearAllInput() in StartLevel(). 2020-09-24 00:20:40 +10: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
ce7af5fe0e - Duke: Fix security cameras skewing over time.
* Fixes regression from e1ee9bc83c. +='ing the angle by 16 gave a noticeable hiccup, but was keeping the poor math before in-check so the angle didn't drift.
* Using more temp data fields in hittype, properly define a min/max using the initial camera angle and the hitag which is conveniently the camera's viewing arc.
2020-09-23 18:31:12 +10:00
Christoph Oelckers
5784ff6ef7 - fixed damage type of incinerator's fireball.
A one-liner, what else... :D
2020-09-23 07:37:08 +02:00
Mitchell Richters
470f481619 - Duke: Simplify entire camera angle setup. 2020-09-23 15:34:03 +10:00
Mitchell Richters
ed9c8af82f - Duke: Move changes performed in 53038e1b29 from FinalizeInput() to processInputBits(). 2020-09-23 15:03:34 +10:00
Mitchell Richters
53038e1b29 - Duke: Don't allow looking left/right when on a security camera screen. 2020-09-23 15:00:33 +10:00
Mitchell Richters
88608e0682 - Duke: Interpolate camera sprite angle in animatecamsprite(). Fixes a "fixme". 2020-09-23 14:42:33 +10:00
Christoph Oelckers
5e6317b8b9 Merge remote-tracking branch 'remotes/Github_private/Blood_InputReworking' 2020-09-22 23:32:28 +02:00
Christoph Oelckers
2a2209b085 - cleanup and minor fixes. 2020-09-22 23:07:11 +02:00
Christoph Oelckers
880b811e0d - rewrote map loader to work independently of data structure sizes.
This is needed to extend a few fields that are too narrow - e.g. the texture offset fields have no room for interpolating scrolling textures.
Blood not done yet, will also need to be changed to get rid of the limits.
2020-09-22 22:40:53 +02:00
Mitchell Richters
ac635ebd0f - Blood/RR: Replace a few playerSet*() calls with playerAdd*(). Because the setters continually set until target is reached, can cause some perceivable smoothness issues if ticker re-targets's player's angle/horizon before input code has reached target. 2020-09-22 22:50:27 +10:00
Mitchell Richters
d40a2d3e95 Merge branch 'back_to_basics2' into Blood_InputReworking
# Conflicts:
#	source/blood/src/hudsprites.cpp
#	source/exhumed/src/status.cpp
#	source/games/duke/src/game_misc.cpp
#	source/sw/src/draw.cpp
2020-09-22 07:34:39 +10:00
Mitchell Richters
9859571ded - DrawCrosshair(): Factor in Blood's adjustable horizon which defaults to 90.
* Fixes https://forum.zdoom.org/viewtopic.php?f=340&t=69920.
2020-09-22 07:29:52 +10:00
Mitchell Richters
59e4fae064 - Game input: Fix miscellaneous issues.
* Duke/RR: Fix `SB_CENTERVIEW` not clearing while `cl_syncinput 1`.
* Duke/RR: Remove superfluous call to `apply_seasick()`.
* RR: Change two calls from `playerSetAngle()` to `playerAddAngle()` Updated version of `playerSetAngle()` doesn't stop setting angle until target is reached, a bit too strict for this and compromised vehicle turning.
* `applylook()`: Remove dead flag. Was only used with Duke, no other game called the function when dead anyway. Since the input helpers are processed outside of `applylook()` now this is not needed.
* `applylook()`: Extend function with a bit of commentary.
2020-09-21 17:12:53 +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
af298411df - added widescreen titlepic for Duke Nukem 3D:
Also made some tweaks to the intro sequence drawer so that it recognizes image formats not depending on the game palette.
2020-09-17 23:20:50 +02:00
Christoph Oelckers
f5d14f826a - added the SHOOT event and fixed some issues with poor code generation for the game data accessors.
They created different code depending on the passed index, this was changed to always emit the optional parameter, even when not needed, so that the interpreter does not need to second-guess.
2020-09-17 23:06:54 +02: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
Mitchell Richters
e1ee9bc83c - Duke: Fix camera advancing angle by 16 instead of 8 under circumstances. 2020-09-17 18:31:09 +10:00
Christoph Oelckers
6776508239 - widescreen asset setup and consolidation of .def file loading. 2020-09-16 19:13:06 +02:00
Christoph Oelckers
2095e9e3c6 - code changes for last commit - they were not picked up automatically.
# Conflicts:
#	source/build/src/defs.cpp
2020-09-16 19:13:05 +02:00
Mitchell Richters
ce82eaf899 - Duke/RR: Address weapon drawer interpolation concerns raised in #403. 2020-09-16 21:01:09 +10:00
Christoph Oelckers
867b8f006f Reverted key input changes from yesterday.
At least the SW version did not work right so let's take no chances here.
2020-09-15 21:54:10 +02:00
Christoph Oelckers
1f4594b450 - Duke: Only read keyboard input for movement when called for the actual tic.
Since the added values are not scaled, doing this per frame has the potential risk of achieving too high total velocity when combined with other means of input.
The change here was kept as simple as possible.
2020-09-14 21:10:34 +02:00
Christoph Oelckers
0e58203d92 - fixed rintersect and removed some unused bits from engine.cpp. 2020-09-13 20:15:46 +02:00
Christoph Oelckers
a4754d7f34 - rewrote the map hack parser using sc_man.
This unexpectedly turned out a complete rewrite so now it is under my own license.
Also moved the remaining parts of map hack loading into the engine.

Overall I have to say that the feature is not what I expected, it's merely used to fudge the positioning of model sprites and for adding Polymer lights.
2020-09-13 13:01:44 +02:00