/* =========================================================================== Copyright (C) 2023 the OpenMoHAA team This file is part of OpenMoHAA source code. OpenMoHAA source code is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. OpenMoHAA source code is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenMoHAA source code; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA =========================================================================== */ // actor_animapi.cpp: Base actor animation script #include "actor.h" const_str SimpleActor::GetRunAnim(void) { if (m_csCurrentPosition != STRING_PRONE && (m_csCurrentPosition < STRING_PRONE || m_csCurrentPosition > STRING_CROUCHRUN)) { return STRING_ANIM_RUN_SCR; } else { return STRING_ANIM_CROUCH_RUN_SCR; } } const_str SimpleActor::GetWalkAnim(void) { if (m_csCurrentPosition != STRING_PRONE && (m_csCurrentPosition < STRING_PRONE || m_csCurrentPosition > STRING_CROUCHRUN)) { return STRING_ANIM_WALK_SCR; } else { return STRING_ANIM_CROUCH_WALK_SCR; } } void SimpleActor::Anim_Attack(void) { DesiredAnimation(1, m_AttackHandler); } void SimpleActor::Anim_Sniper(void) { DesiredAnimation(1, m_SniperHandler); } void SimpleActor::Anim_Aim(void) { DesiredAnimation(1, STRING_ANIM_AIM_SCR); } void SimpleActor::Anim_Shoot(void) { DesiredAnimation(1, STRING_ANIM_SHOOT_SCR); } void SimpleActor::Anim_Idle(void) { DesiredAnimation(1, STRING_ANIM_IDLE_SCR); } void SimpleActor::Anim_Crouch(void) { DesiredAnimation(1, STRING_ANIM_CROUCH_SCR); } void SimpleActor::Anim_Prone(void) { DesiredAnimation(1, STRING_ANIM_PRONE_SCR); } void SimpleActor::Anim_Stand(void) { DesiredAnimation(1, STRING_ANIM_STAND_SCR); } void SimpleActor::Anim_Cower(void) { DesiredAnimation(1, STRING_ANIM_COWER_SCR); } void SimpleActor::Anim_Killed(void) { Com_Printf("m_eAnimMode Anim_Killed \n"); DesiredAnimation(1, m_DeathHandler); } void SimpleActor::Anim_StartPain(void) { Com_Printf("m_eAnimMode Anim_StartPain \n"); StartAnimation(1, m_PainHandler); } void SimpleActor::Anim_Pain(void) { ContinueAnimation(); } void SimpleActor::Anim_CrouchRunTo(int eAnimMode) { DesiredAnimation(eAnimMode, STRING_ANIM_CROUCH_RUN_SCR); } void SimpleActor::Anim_CrouchWalkTo(int eAnimMode) { DesiredAnimation(eAnimMode, STRING_ANIM_CROUCH_WALK_SCR); } void SimpleActor::Anim_StandRunTo(int eAnimMode) { DesiredAnimation(eAnimMode, STRING_ANIM_RUN_SCR); } void SimpleActor::Anim_StandWalkTo(int eAnimMode) { DesiredAnimation(eAnimMode, STRING_ANIM_WALK_SCR); } void SimpleActor::Anim_RunTo(int eAnimMode) { DesiredAnimation(eAnimMode, GetRunAnim()); } void SimpleActor::Anim_WalkTo(int eAnimMode) { DesiredAnimation(eAnimMode, GetWalkAnim()); } void SimpleActor::Anim_RunAwayFiring(int eAnimMode) { DesiredAnimation(eAnimMode, STRING_ANIM_RUNAWAYFIRING_SCR); } void SimpleActor::Anim_RunToShooting(int eAnimMode) { DesiredAnimation(eAnimMode, STRING_ANIM_RUN_SHOOT_SCR); } void SimpleActor::Anim_RunToAlarm(int eAnimMode) { DesiredAnimation(eAnimMode, STRING_ANIM_RUNTO_ALARM_SCR); } void SimpleActor::Anim_RunToCasual(int eAnimMode) { DesiredAnimation(eAnimMode, STRING_ANIM_RUNTO_CASUAL_SCR); } void SimpleActor::Anim_RunToCover(int eAnimMode) { DesiredAnimation(eAnimMode, STRING_ANIM_RUNTO_COVER_SCR); } void SimpleActor::Anim_RunToDanger(int eAnimMode) { DesiredAnimation(eAnimMode, STRING_ANIM_RUNTO_DANGER_SCR); } void SimpleActor::Anim_RunToDive(int eAnimMode) { DesiredAnimation(eAnimMode, STRING_ANIM_RUNTO_DIVE_SCR); } void SimpleActor::Anim_RunToFlee(int eAnimMode) { DesiredAnimation(eAnimMode, STRING_ANIM_RUNTO_FLEE_SCR); } void SimpleActor::Anim_RunToInOpen(int eAnimMode) { DesiredAnimation(eAnimMode, STRING_ANIM_RUNTO_INOPEN_SCR); } void SimpleActor::Anim_Emotion(eEmotionMode eEmotMode) { m_eEmotionMode = eEmotMode; } void SimpleActor::Anim_Say(const_str csSayAnimScript, int iMinTimeSinceLastSay, bool bCanInterrupt) { if (!m_bSayAnimSet || bCanInterrupt) { if (level.inttime > m_iVoiceTime + iMinTimeSinceLastSay) { ScriptThreadLabel label; label.TrySetScript(csSayAnimScript); label.Execute(this); } } } void SimpleActor::Anim_FullBody(const_str csFullBodyAnim, int eAnimMode) { if (m_csAnimName == csFullBodyAnim) { DesiredAnimation(eAnimMode, STRING_ANIM_FULLBODY_SCR); } else { m_csAnimName = csFullBodyAnim; StartAnimation(eAnimMode, STRING_ANIM_FULLBODY_SCR); } }