From 6f58b34f87d22b80eda06f6f84ef0dba169bd296 Mon Sep 17 00:00:00 2001 From: smallmodel <15067410+smallmodel@users.noreply.github.com> Date: Sun, 22 Oct 2023 16:26:28 +0200 Subject: [PATCH] Finalized actor_patrol --- code/fgame/actor_patrol.cpp | 64 ++++++++++++++++++++----------------- 1 file changed, 34 insertions(+), 30 deletions(-) diff --git a/code/fgame/actor_patrol.cpp b/code/fgame/actor_patrol.cpp index 057f0b1f..233a6d56 100644 --- a/code/fgame/actor_patrol.cpp +++ b/code/fgame/actor_patrol.cpp @@ -47,42 +47,46 @@ void Actor::End_Patrol(void) parm.movefail = true; } -void Actor::Resume_Patrol(void) -{ -} +void Actor::Resume_Patrol(void) {} void Actor::Think_Patrol(void) { - if (Actor::RequireThink()) { - parm.movefail = false; + bool bMoveInRadius; - UpdateEyeOrigin(); - NoPoint(); - - m_pszDebugState = ""; - m_csPatrolCurrentAnim = STRING_ANIM_PATROL_SCR; - - if (m_fLookAroundFov > 1.0) { - LookAround(m_fLookAroundFov); - } - - CheckForThinkStateTransition(); - if (m_patrolCurrentNode) { - if (!MoveToPatrolCurrentNode()) { - PostThink(true); - return; - } - } else { - SetThinkIdle(THINK_IDLE); - m_bScriptGoalValid = false; - } - parm.movedone = true; - - Unregister(STRING_MOVEDONE); - - PostThink(true); + if (!RequireThink()) { return; } + + parm.movefail = false; + + UpdateEyeOrigin(); + NoPoint(); + + m_pszDebugState = ""; + m_csPatrolCurrentAnim = STRING_ANIM_PATROL_SCR; + bMoveInRadius = MoveToPatrolCurrentNode(); + + if (m_fLookAroundFov > 1.0) { + LookAround(m_fLookAroundFov); + } + + CheckForThinkStateTransition(); + + if (!m_patrolCurrentNode) { + SetThinkIdle(THINK_IDLE); + m_bScriptGoalValid = false; + + parm.movedone = true; + Unregister(STRING_MOVEDONE); + } else if (bMoveInRadius) { + ClearPatrolCurrentNode(); + SetThinkIdle(THINK_IDLE); + + parm.movedone = true; + Unregister(STRING_MOVEDONE); + } + + PostThink(true); } void Actor::ShowInfo_Patrol(void)