//------------------------------------------------------------------------------ // StateIdle.cpp // (C) 2005 Webzen Sunstudio //------------------------------------------------------------------------------ #include "SunClientPrecompiledHeader.h" #include "statebase.h" #include "stateidle.h" #include "character.h" #include "HeroActionInput.h" #include "InterfaceManager.h" #include "npc.h" #include "Monster.h" //------------------------------------------------------------------------------ /** */ StateIdle::StateIdle(void) { } //------------------------------------------------------------------------------ /** */ StateIdle::~StateIdle(void) { } //------------------------------------------------------------------------------ /** */ BOOL StateIdle::CanTransite(Object* pOwner, DWORD CurTime, StateBase* pToTransiteState) { switch(pToTransiteState->GetStateKind()) { case 0: break; } return TRUE; } //------------------------------------------------------------------------------ /** */ STATECHANGE::TYPE StateIdle::OnStart(Object* pOwner, DWORD CurTime) { Character* pChr = (Character*)pOwner; pChr->SetStandAnimationDelay(); return STATECHANGE::SUCCESS; } //------------------------------------------------------------------------------ /** */ STATEPROCESS::TYPE StateIdle::OnProcess(Object* pOwner, DWORD CurTime,DWORD dwTick) { Character* pChr = (Character*)pOwner; // Idle ¾Ö´Ï¸ÞÀ̼ÇÀº »óȲ¿¡µû¶ó ¿©·¯°¡ÁöÀ̹ǷΠ°¢ Ŭ·¡½º º°·Î 󸮸¦ ºÐ¸®ÇÏ¿´À½. pChr->SetIdleAnimation(); // ¿¡´Ï¸ÞÀÌ¼Ç ¾÷µ¥ÀÌÆ® pChr->ProcessInterpolation(dwTick,0.9999f); float fAnim = pChr->ProcessAnimation( dwTick ); // ´ëºÎºÐÀÇ State¿¡¼­ °øÅëÀûÀ¸·Î ó¸®ÇÏ´Â »óź¯È­¸¦ ó¸®ÇÑ´Ù. if (pChr->CommonStateProcess()) { return STATEPROCESS::SUSPEND; } // °¡²û Idle Ani¸¦ Ç÷¹ÀÌ ÇϱâÀ§ÇÑ Ã³¸® SetIdleAnimDelay(pChr,fAnim); // ´ÙÀ½ µ¿ÀÛÀÌ ÀÖÀ¸¸é ¹Ù·Î ¼öÇàÇØÁÖ¼¼¿ä~ if (pChr->GetActionQueueCount()) { pChr->ProcessNextAction(); return STATEPROCESS::SUSPEND; } return STATEPROCESS::SUSPEND; } //------------------------------------------------------------------------------ /** */ STATECHANGE::TYPE StateIdle::OnEnd(Object* pOwner, DWORD CurTime) { Character* pChr = (Character*)pOwner; return STATECHANGE::SUCCESS; } void StateIdle::SetIdleAnimDelay(Object *pObj,float fAnim) { // µÎ¸®¹ø °Å¸®´Â°Ô ³¡³µ´Ù¸é AnimÁøÃ´·üÀÌ 100.0fÀÌ µÉ°ÍÀÌ´Ù. if (fAnim >= 100.0f) { Character *pChr = (Character *)pObj; pChr->SetStandAnimationDelay(); } }