#include "SunClientPrecompiledHeader.h" #include "StateNPCIdle.h" #include "character.h" #include "npc.h" #include "Monster.h" StateNPCIdle::StateNPCIdle(void) { } StateNPCIdle::~StateNPCIdle(void) { } //------------------------------------------------------------------------------ /** */ BOOL StateNPCIdle::CanTransite(Object* pOwner, DWORD CurTime, StateBase* pToTransiteState) { switch(pToTransiteState->GetStateKind()) { case 0: break; } return TRUE; } //------------------------------------------------------------------------------ /** */ STATECHANGE::TYPE StateNPCIdle::OnStart(Object* pOwner, DWORD CurTime) { Character* pChr = (Character*)pOwner; WzID wzAniID = pChr->GetCurrentIdleAnimation(); pChr->SetAnimation( wzAniID , TRUE); NPC * pNPC = static_cast(pChr); if (pNPC) { pNPC->InitDelaySwingTick(); pNPC->SetDelaySwingTick(CurTime); } else { assert(pNPC); } return STATECHANGE::SUCCESS; } //------------------------------------------------------------------------------ /** */ STATEPROCESS::TYPE StateNPCIdle::OnProcess(Object* pOwner, DWORD CurTime,DWORD dwTick) { Character* pChr = (Character*)pOwner; // ¿¡´Ï¸ÞÀÌ¼Ç ¾÷µ¥ÀÌÆ® pChr->ProcessInterpolation(dwTick); float fAnim =pChr->ProcessAnimation( dwTick ); // ½ºÀ®Çϱ⠾󸶳ª ³²¾Ò´ÂÁö Ã¼Å©ÇØ¼­ ½ºÅ×ÀÌÆ® ¹Ù²ãÁØ´Ù. NPC * pNPC = static_cast(pChr); int iRemainTickDelay = pNPC->ProcessDelaySwingTick(dwTick); if (iRemainTickDelay <= 0) { pChr->SetNextState(STATE::NPC_SWING_STATE, CurTime); return STATEPROCESS::SUSPEND; } // ´ÙÀ½ µ¿ÀÛÀÌ ÀÖÀ¸¸é ¹Ù·Î ¼öÇàÇØÁÖ¼¼¿ä~ if (pChr->GetActionQueueCount()) { pChr->ProcessNextAction(); return STATEPROCESS::SUSPEND; } return STATEPROCESS::SUSPEND; } //------------------------------------------------------------------------------ /** */ STATECHANGE::TYPE StateNPCIdle::OnEnd(Object* pOwner, DWORD CurTime) { Character* pChr = (Character*)pOwner; return STATECHANGE::SUCCESS; }