MCPcopy Create free account
hub / github.com/TombEngine/TombEngine / lara_as_sprint

Function lara_as_sprint

TombEngine/Game/Lara/lara_basic.cpp:1698–1777  ·  view source on GitHub ↗

State: LS_SPRINT (73) Collision: lara_col_sprint()

Source from the content-addressed store, hash-verified

1696// State: LS_SPRINT (73)
1697// Collision: lara_col_sprint()
1698void lara_as_sprint(ItemInfo* item, CollisionInfo* coll)
1699{
1700 auto& player = GetLaraInfo(*item);
1701
1702 bool isWading = (player.Control.WaterStatus == WaterStatus::Wade);
1703
1704 player.Status.Stamina = std::clamp(player.Status.Stamina - 1, 0, (int)LARA_STAMINA_MAX);
1705 player.Control.Count.Run = std::clamp<unsigned int>(player.Control.Count.Run + 1, 0, PLAYER_SPRINT_JUMP_TIME);
1706
1707 if (item->HitPoints <= 0)
1708 {
1709 item->Animation.TargetState = LS_DEATH;
1710 return;
1711 }
1712
1713 if (IsHeld(In::Left) || IsHeld(In::Right))
1714 {
1715 ModulateLaraTurnRateY(item, LARA_TURN_RATE_ACCEL, 0, LARA_SLOW_TURN_RATE_MAX);
1716 HandlePlayerLean(item, coll, LARA_LEAN_RATE, LARA_LEAN_MAX);
1717 }
1718
1719 if (IsHeld(In::Jump) || player.Control.IsRunJumpQueued)
1720 {
1721 // TODO: CanSprintJumpForward() should handle HasSprintJump() check.
1722 if (IsHeld(In::Walk) || !g_GameFlow->GetSettings()->Animations.SprintJump)
1723 {
1724 item->Animation.TargetState = LS_SPRINT_DIVE;
1725 return;
1726 }
1727 else if (IsHeld(In::Sprint) && CanSprintJumpForward(*item, *coll))
1728 {
1729 item->Animation.TargetState = LS_JUMP_FORWARD;
1730 return;
1731 }
1732
1733 player.Control.IsRunJumpQueued = CanQueueRunningJump(*item, *coll);
1734 }
1735
1736 if (IsHeld(In::Crouch) && CanCrouch(*item, *coll))
1737 {
1738 item->Animation.TargetState = LS_CROUCH_IDLE;
1739 return;
1740 }
1741
1742 if (IsHeld(In::Forward))
1743 {
1744 if (IsHeld(In::Action) && CanVaultFromSprint(*item, *coll))
1745 {
1746 auto vaultContext = TestLaraVault(item, coll);
1747 if (vaultContext.has_value())
1748 {
1749 item->Animation.TargetState = vaultContext->TargetState;
1750 SetLaraVault(item, coll, *vaultContext);
1751 return;
1752 }
1753 }
1754
1755 if (isWading)

Callers

nothing calls this directly

Calls 11

IsHeldFunction · 0.85
ModulateLaraTurnRateYFunction · 0.85
HandlePlayerLeanFunction · 0.85
CanSprintJumpForwardFunction · 0.85
CanQueueRunningJumpFunction · 0.85
CanCrouchFunction · 0.85
CanVaultFromSprintFunction · 0.85
TestLaraVaultFunction · 0.85
SetLaraVaultFunction · 0.85
GetSettingsMethod · 0.80
has_valueMethod · 0.45

Tested by

no test coverage detected