From ec2c4e63dfe24a135a924e0086ca35506a450581 Mon Sep 17 00:00:00 2001 From: Sezz Date: Thu, 3 Feb 2022 12:21:28 +1100 Subject: [PATCH] Cleanup --- TR5Main/Game/Lara/lara.cpp | 8 ++--- TR5Main/Game/Lara/lara.h | 25 +++++++------- TR5Main/Game/Lara/lara_basic.cpp | 2 -- TR5Main/Game/Lara/lara_helpers.cpp | 2 +- TR5Main/Game/Lara/lara_jump.cpp | 52 +++++++++++++++--------------- TR5Main/Game/Lara/lara_slide.cpp | 4 +-- TR5Main/Game/Lara/lara_struct.h | 6 ++-- TR5Main/Game/Lara/lara_tests.cpp | 12 +++---- TR5Main/Sound/sound.cpp | 7 ++-- TR5Main/Sound/sound.h | 2 +- 10 files changed, 59 insertions(+), 61 deletions(-) diff --git a/TR5Main/Game/Lara/lara.cpp b/TR5Main/Game/Lara/lara.cpp index 8d626e63f..28c3540f6 100644 --- a/TR5Main/Game/Lara/lara.cpp +++ b/TR5Main/Game/Lara/lara.cpp @@ -487,7 +487,7 @@ void LaraControl(ITEM_INFO* item, COLL_INFO* coll) UpdateItemRoom(item, 0); StopSoundEffect(SFX_TR4_LARA_FALL); - if (item->activeState == LS_SWAN_DIVE_START) + if (item->activeState == LS_SWAN_DIVE) { info->gunStatus = LG_HANDS_FREE; item->pos.xRot = -ANGLE(45.0f); @@ -495,7 +495,7 @@ void LaraControl(ITEM_INFO* item, COLL_INFO* coll) AnimateLara(item); item->fallspeed *= 2; } - else if (item->activeState == LS_SWAN_DIVE_END) + else if (item->activeState == LS_FREEFALL_DIVE) { info->gunStatus = LG_HANDS_FREE; item->pos.xRot = -ANGLE(85.0f); @@ -532,8 +532,8 @@ void LaraControl(ITEM_INFO* item, COLL_INFO* coll) item->targetState = LS_IDLE; else if (isSwamp) { - if (item->activeState == LS_SWAN_DIVE_START || - item->activeState == LS_SWAN_DIVE_END) + if (item->activeState == LS_SWAN_DIVE || + item->activeState == LS_FREEFALL_DIVE) { item->pos.yPos = waterHeight + (WALL_SIZE - 24); } diff --git a/TR5Main/Game/Lara/lara.h b/TR5Main/Game/Lara/lara.h index 72448f143..35e727ff6 100644 --- a/TR5Main/Game/Lara/lara.h +++ b/TR5Main/Game/Lara/lara.h @@ -5,7 +5,7 @@ struct ITEM_INFO; struct COLL_INFO; #define LARA_GRAB_THRESHOLD ANGLE(35.0f) -#define FRONT_ARC ANGLE(90.0f) // TODO: Check use. +#define FRONT_ARC ANGLE(90.0f) // TODO: Check use. // Lean rates #define LARA_LEAN_RATE ANGLE(1.5f) @@ -35,16 +35,16 @@ struct COLL_INFO; // Flex rates #define LARA_CRAWL_FLEX_RATE ANGLE(2.25f) -#define LARA_CRAWL_FLEX_MAX ANGLE(45.0f) / 2 // 2 = hardcoded number of bones to flex (head and torso). +#define LARA_CRAWL_FLEX_MAX ANGLE(45.0f) / 2 // 2 = hardcoded number of bones to flex (head and torso). -constexpr auto LARA_HEIGHT = CLICK(3) - 1; // Lara height in standard states. -constexpr auto LARA_HEIGHT_CRAWL = 350; // Lara height in crawl states. -constexpr auto LARA_HEIGHT_MONKEY = 850; // Lara height in monkey swing states. -constexpr auto LARA_HEIGHT_SURFSWIM = 700; // Lara height in water treading states. -constexpr auto LARA_HEIGHT_STRETCH = 870; // Lara height in jump-up and ledge hanging states. -constexpr auto LARA_HEIGHT_REACH = 820; // Lara height in reach state. -constexpr auto LARA_HEIGHT_SURFACE = 800; // Lara height when surfacing water. -constexpr auto LARA_HEADROOM = 160; // Amount of reasonable space above Lara's head. +constexpr auto LARA_HEIGHT = CLICK(3) - 1; // Lara height in standard states. +constexpr auto LARA_HEIGHT_CRAWL = 350; // Lara height in crawl states. +constexpr auto LARA_HEIGHT_MONKEY = 850; // Lara height in monkey swing states. +constexpr auto LARA_HEIGHT_SURFSWIM = 700; // Lara height in water treading states. +constexpr auto LARA_HEIGHT_STRETCH = 870; // Lara height in jump-up and ledge hanging states. +constexpr auto LARA_HEIGHT_REACH = 820; // Lara height in reach state. +constexpr auto LARA_HEIGHT_SURFACE = 800; // Lara height when surfacing water. +constexpr auto LARA_HEADROOM = 160; // Amount of reasonable space above Lara's head. constexpr auto LARA_RAD = 100; constexpr auto LARA_RAD_CRAWL = 200; constexpr auto LARA_RAD_UNDERWATER = 300; @@ -54,10 +54,9 @@ constexpr auto LARA_VELOCITY = 12; constexpr auto LARA_FREEFALL_SPEED = 131; constexpr auto LARA_FREEFALL_SCREAM_SPEED = 154; constexpr auto LARA_FREEFALL_DIVE_DEATH_SPEED = 154; -constexpr auto LARA_TERMINAL_VELOCITY = 0; // TODO -constexpr auto LARA_RUN_JUMP_TIME = 22; // Frames to count before running jump is possible. -constexpr auto LARA_POSE_TIME = 30 * 30; // 30 frames * 30 = 30 seconds to AFK pose. +constexpr auto LARA_RUN_JUMP_TIME = 22; // Frames to count before a running jump is possible. +constexpr auto LARA_POSE_TIME = 30 * 30; // 30 frames * 30 = 30 seconds to AFK pose. constexpr auto LARA_HEALTH_MAX = 1000.0f; constexpr auto LARA_AIR_MAX = 1800.0f; diff --git a/TR5Main/Game/Lara/lara_basic.cpp b/TR5Main/Game/Lara/lara_basic.cpp index f2525de64..dce93990c 100644 --- a/TR5Main/Game/Lara/lara_basic.cpp +++ b/TR5Main/Game/Lara/lara_basic.cpp @@ -634,8 +634,6 @@ void lara_col_idle(ITEM_INFO* item, COLL_INFO* coll) ShiftItem(item, coll); - // TODO: Vaulting from this state. - if (TestLaraStep(item, coll)) { DoLaraStep(item, coll); diff --git a/TR5Main/Game/Lara/lara_helpers.cpp b/TR5Main/Game/Lara/lara_helpers.cpp index 5c92d8134..ed99b0c96 100644 --- a/TR5Main/Game/Lara/lara_helpers.cpp +++ b/TR5Main/Game/Lara/lara_helpers.cpp @@ -58,7 +58,7 @@ void DoLaraStep(ITEM_INFO* item, COLL_INFO* coll) } // Height difference is below threshold for step dispatch OR step animation doesn't exist; translate Lara to new floor height. - // TODO: This approach might cause underirable artefacts where an object pushes Lara rapidly up/down a slope or a platform rapidly ascends/descends. + // TODO: This approach may cause undesirable artefacts where an object pushes Lara rapidly up/down a slope or a platform rapidly ascends/descends. constexpr int rate = 50; int threshold = std::max(abs(item->speed) / 3 * 2, STEP_SIZE / 16); int sign = std::copysign(1, coll->Middle.Floor); diff --git a/TR5Main/Game/Lara/lara_jump.cpp b/TR5Main/Game/Lara/lara_jump.cpp index 4531a1762..f58a76284 100644 --- a/TR5Main/Game/Lara/lara_jump.cpp +++ b/TR5Main/Game/Lara/lara_jump.cpp @@ -21,11 +21,11 @@ // Control & Collision Functions // ----------------------------- -// TODO: Unused? Naming is also completely mismatched; enum calls it LS_GRAB_TO_FALL. +// TODO: Unused? Naming is also completely mismatched. +// State: LS_GRAB_TO_FALL +// Collision: lara_void_func() void lara_col_land(ITEM_INFO* item, COLL_INFO* coll) { - /*state 14*/ - /*state code: lara_void_func*/ lara_col_idle(item, coll); } @@ -98,7 +98,7 @@ void lara_as_jump_forward(ITEM_INFO* item, COLL_INFO* coll) if (TrInput & IN_WALK && info->gunStatus == LG_HANDS_FREE) { - item->targetState = LS_SWAN_DIVE_START; + item->targetState = LS_SWAN_DIVE; return; } @@ -296,19 +296,20 @@ void lara_as_jump_prepare(ITEM_INFO* item, COLL_INFO* coll) return; } - if (TrInput & IN_LEFT && - TrInput & (IN_FORWARD | IN_BACK)) + if (TrInput & (IN_FORWARD | IN_BACK)) { - info->turnRate -= LARA_TURN_RATE; - if (info->turnRate < -LARA_SLOW_TURN_MAX) - info->turnRate = -LARA_SLOW_TURN_MAX; - } - else if (TrInput & IN_RIGHT && - TrInput & (IN_FORWARD | IN_BACK)) - { - info->turnRate += LARA_TURN_RATE; - if (info->turnRate > LARA_SLOW_TURN_MAX) - info->turnRate = LARA_SLOW_TURN_MAX; + if (TrInput & IN_LEFT) + { + info->turnRate -= LARA_TURN_RATE; + if (info->turnRate < -LARA_SLOW_TURN_MAX) + info->turnRate = -LARA_SLOW_TURN_MAX; + } + else if (TrInput & IN_RIGHT) + { + info->turnRate += LARA_TURN_RATE; + if (info->turnRate > LARA_SLOW_TURN_MAX) + info->turnRate = LARA_SLOW_TURN_MAX; + } } // JUMP key repressed without directional key; cancel directional jump lock. @@ -754,10 +755,10 @@ void lara_as_fall_back(ITEM_INFO* item, COLL_INFO* coll) // Collision: lara_col_fall_back() void lara_col_fall_back(ITEM_INFO* item, COLL_INFO* coll) { - LaraJumpCollision(item, coll, item->pos.yRot + ANGLE(180.0f)); + lara_col_jump_back(item, coll); } -// State: LS_SWAN_DIVE_START (52) +// State: LS_SWAN_DIVE (52) // Collision: lara_col_swan_dive() void lara_as_swan_dive(ITEM_INFO* item, COLL_INFO* coll) { @@ -785,17 +786,16 @@ void lara_as_swan_dive(ITEM_INFO* item, COLL_INFO* coll) DoLaraLean(item, coll, LARA_LEAN_MAX, LARA_LEAN_RATE / 2); } - if (item->fallspeed >= LARA_FREEFALL_SPEED && - item->targetState != LS_FREEFALL_DIVE) // Hack? + if (item->fallspeed >= LARA_FREEFALL_SPEED) { - item->targetState = LS_SWAN_DIVE_END; + item->targetState = LS_FREEFALL_DIVE; return; } - item->targetState = LS_SWAN_DIVE_START; + item->targetState = LS_SWAN_DIVE; } -// State: LS_SWAN_DIVE_START (52) +// State: LS_SWAN_DIVE (52) // Control: lara_as_swan_dive() void lara_col_swan_dive(ITEM_INFO* item, COLL_INFO* coll) { @@ -850,9 +850,9 @@ void lara_as_freefall_dive(ITEM_INFO* item, COLL_INFO* coll) if (TestLaraLand(item, coll)) { - // TODO: Apply fall damage? + DoLaraFallDamage(item); // Should never occur before fall speed reaches death speed, but here for extendability. - if (item->fallspeed >= LARA_FREEFALL_DIVE_DEATH_SPEED) + if (item->hitPoints <= 0 || item->fallspeed >= LARA_FREEFALL_DIVE_DEATH_SPEED) item->targetState = LS_DEATH; else item->targetState = LS_IDLE; @@ -874,5 +874,5 @@ void lara_as_freefall_dive(ITEM_INFO* item, COLL_INFO* coll) // Control: lara_as_freefall_dive() void lara_col_freefall_dive(ITEM_INFO* item, COLL_INFO* coll) { - LaraJumpCollision(item, coll, item->pos.yRot); + lara_col_jump_forward(item, coll); } diff --git a/TR5Main/Game/Lara/lara_slide.cpp b/TR5Main/Game/Lara/lara_slide.cpp index 5a75f8828..fb9da68cb 100644 --- a/TR5Main/Game/Lara/lara_slide.cpp +++ b/TR5Main/Game/Lara/lara_slide.cpp @@ -27,7 +27,7 @@ void lara_as_slide_forward(ITEM_INFO* item, COLL_INFO* coll) if (item->hitPoints <= 0) { - item->targetState = LS_DEATH; // + item->targetState = LS_DEATH; // TODO return; } @@ -124,7 +124,7 @@ void lara_as_slide_back(ITEM_INFO* item, COLL_INFO* coll) if (item->hitPoints <= 0) { - item->targetState = LS_DEATH; // + item->targetState = LS_DEATH; // TODO return; } diff --git a/TR5Main/Game/Lara/lara_struct.h b/TR5Main/Game/Lara/lara_struct.h index d75898f76..8d4c1fb0a 100644 --- a/TR5Main/Game/Lara/lara_struct.h +++ b/TR5Main/Game/Lara/lara_struct.h @@ -59,7 +59,7 @@ enum LARA_STATE LS_SLIDE_BACK = 32, LS_ONWATER_STOP = 33, LS_ONWATER_FORWARD = 34, - LS_FREEFALL_DIVE = 35, + LS_ONWATER_DIVE = 35, LS_PUSHABLE_PUSH = 36, LS_PUSHABLE_PULL = 37, LS_PUSHABLE_GRAB = 38, @@ -76,8 +76,8 @@ enum LARA_STATE LS_ONWATER_RIGHT = 49, LS_USE_MIDAS = 50, LS_MIDAS_DEATH = 51, - LS_SWAN_DIVE_START = 52, - LS_SWAN_DIVE_END = 53, + LS_SWAN_DIVE = 52, + LS_FREEFALL_DIVE = 53, LS_HANDSTAND = 54, LS_ONWATER_EXIT = 55, diff --git a/TR5Main/Game/Lara/lara_tests.cpp b/TR5Main/Game/Lara/lara_tests.cpp index 5a301a3a2..80e21ce31 100644 --- a/TR5Main/Game/Lara/lara_tests.cpp +++ b/TR5Main/Game/Lara/lara_tests.cpp @@ -1096,10 +1096,10 @@ bool TestLaraMonkeyFall(ITEM_INFO* item, COLL_INFO* coll) bool TestLaraLand(ITEM_INFO* item, COLL_INFO* coll) { - int heightToFloor = GetCollisionResult(item).Position.Floor - item->pos.yPos; + int heightFromFloor = GetCollisionResult(item).Position.Floor - item->pos.yPos; if (item->airborne && item->fallspeed >= 0 && - (heightToFloor <= std::min(item->fallspeed, STEPUP_HEIGHT) || + (heightFromFloor <= std::min(item->fallspeed, STEPUP_HEIGHT) || TestEnvironment(ENV_FLAG_SWAMP, item))) { return true; @@ -1357,11 +1357,11 @@ bool IsJumpState(LARA_STATE state) state == LS_JUMP_LEFT || state == LS_JUMP_RIGHT || state == LS_JUMP_UP || - state == LS_REACH || - state == LS_FREEFALL || state == LS_FALL_BACK || - state == LS_SWAN_DIVE_START || - state == LS_FREEFALL_DIVE) + state == LS_REACH || + state == LS_SWAN_DIVE || + state == LS_FREEFALL_DIVE || + state == LS_FREEFALL) { return true; } diff --git a/TR5Main/Sound/sound.cpp b/TR5Main/Sound/sound.cpp index fb935a272..ff9e686f1 100644 --- a/TR5Main/Sound/sound.cpp +++ b/TR5Main/Sound/sound.cpp @@ -3,6 +3,7 @@ #include #include "Game/camera.h" +#include "Game/collision/collide_room.h" #include "Game/Lara/lara.h" #include "Game/room.h" #include "Specific/setup.h" @@ -133,7 +134,7 @@ bool LoadSample(char *pointer, int compSize, int uncompSize, int index) return true; } -long SoundEffect(int effectID, PHD_3DPOS* position, int env_flags, float pitchMultiplier, float gainMultiplier) +long SoundEffect(int effectID, PHD_3DPOS* position, int envFlags, float pitchMultiplier, float gainMultiplier) { if (effectID >= g_Level.SoundMap.size()) return 0; @@ -141,10 +142,10 @@ long SoundEffect(int effectID, PHD_3DPOS* position, int env_flags, float pitchMu if (BASS_GetDevice() == -1) return 0; - if (!(env_flags & SFX_ALWAYS)) + if (!(envFlags & SFX_ALWAYS)) { // Don't play effect if effect's environment isn't the same as camera position's environment - if ((env_flags & ENV_FLAG_WATER) != (g_Level.Rooms[Camera.pos.roomNumber].flags & ENV_FLAG_WATER)) + if (envFlags & ENV_FLAG_WATER != TestEnvironment(ENV_FLAG_WATER, Camera.pos.roomNumber)) return 0; } diff --git a/TR5Main/Sound/sound.h b/TR5Main/Sound/sound.h index 0eb4bae31..8a744ba9d 100644 --- a/TR5Main/Sound/sound.h +++ b/TR5Main/Sound/sound.h @@ -109,7 +109,7 @@ struct SoundTrackInfo extern std::map SoundTrackMap; extern std::vector SoundTracks; -long SoundEffect(int effectID, PHD_3DPOS* position, int env_flags, float pitchMultiplier = 1.0f, float gainMultiplier = 1.0f); +long SoundEffect(int effectID, PHD_3DPOS* position, int envFlags, float pitchMultiplier = 1.0f, float gainMultiplier = 1.0f); void StopSoundEffect(short effectID); bool LoadSample(char *buffer, int compSize, int uncompSize, int currentIndex); void FreeSamples();