Implemented actor_badplace

This commit is contained in:
smallmodel 2023-10-15 20:51:11 +02:00
parent 1995c75006
commit 3e314251f2
No known key found for this signature in database
GPG key ID: 9F2D623CEDF08512

View file

@ -26,20 +26,59 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
void Actor::InitBadPlace(GlobalFuncs_t *func)
{
// FIXME: unimplemented
func->ThinkState = &Actor::Think_BadPlace;
func->BeginState = &Actor::Begin_BadPlace;
func->EndState = &Actor::End_BadPlace;
func->ResumeState = &Actor::Begin_BadPlace;
func->SuspendState = &Actor::End_BadPlace;
func->PassesTransitionConditions = &Actor::PassesTransitionConditions_BadPlace;
func->IsState = &Actor::IsBadPlaceState;
}
void Actor::Begin_BadPlace(void)
{
// FIXME: unimplemented
DoForceActivate();
m_csMood = STRING_ALERT;
m_csIdleMood = STRING_NERVOUS;
badplace_t& badplace = level.m_badPlaces.ObjectAt(m_iBadPlaceIndex);
FindPathAway(badplace.m_vOrigin, origin - badplace.m_vOrigin, badplace.m_fRadius + 64);
}
void Actor::End_BadPlace(void)
{
// FIXME: unimplemented
m_iBadPlaceIndex = 0;
}
void Actor::Think_BadPlace(void)
{
// FIXME: unimplemented
if (m_bEnableEnemy) {
UpdateEnemy(200);
}
m_pszDebugState = "";
NoPoint();
if (!PathExists() || PathComplete() || !m_iBadPlaceIndex) {
m_iBadPlaceIndex = 0;
if (!m_Enemy || (m_Enemy->flags & FL_NOTARGET)) {
SetThinkState(THINKSTATE_IDLE, THINKLEVEL_NORMAL);
} else {
SetThinkState(THINKSTATE_ATTACK, THINKLEVEL_NORMAL);
}
}
if (m_Enemy) {
m_pszDebugState = "badplace_shoot";
FaceEnemyOrMotion(m_iStateTime);
Anim_RunAwayFiring(ANIM_MODE_PATH);
} else {
m_pszDebugState = "badplace_run";
FaceMotion();
Anim_RunToInOpen(ANIM_MODE_PATH);
}
PostThink(false);
}