#pragma once class Skill; class BaseStatus; class Ability; //================================================================================================== // // class AnimationDelayControl { public: struct sDelayInfo { PVOID RelatedObject; ITimeout Timeout; }; typedef STLX_DEQUE ANIMATION_DELAY_QUEUE; public: AnimationDelayControl() : m_pQueue(NULL) {} ~AnimationDelayControl() { Clear(); } inline VOID Clear(); ////////////////////////////////////////////////////////////////////////// // TRUE : Processing Client Animation // FALSE : C/S µ¿±âÈ­¸¦ À§ÇÑ ¿¹¿Üó¸® ÇÒ ÇÊ¿ä ¾øÀ½. inline BOOLEAN NeedSkipProcessByAnimationDelay(Skill* const pSkill); inline BOOLEAN NeedSkipProcessByAnimationDelay(BaseStatus* const pStatus); inline BOOLEAN NeedSkipProcessByAnimationDelay(Ability* const pAbility); inline BOOLEAN SetAnimationDelay(Skill* const pSkill, const DWORD delayTick); inline BOOLEAN SetAnimationDelay(BaseStatus* const pStatus, const DWORD delayTick); inline BOOLEAN SetAnimationDelay(Ability* const pAbility, const DWORD delayTick); private: BOOLEAN NeedSkipProcessByAnimationDelay(const PVOID pObject = NULL); BOOLEAN SetAnimationDelay(const PVOID pObject, const DWORD delayTick); // (FIELDs) ANIMATION_DELAY_QUEUE* m_pQueue; }; // // //================================================================================================== // // inline VOID AnimationDelayControl::Clear() { if (m_pQueue) { TAllocDelete(ANIMATION_DELAY_QUEUE, m_pQueue); }; m_pQueue = NULL; } ////////////////////////////////////////////////////////////////////////// // TRUE : Processing Client Animation // FALSE : C/S µ¿±âÈ­¸¦ À§ÇÑ ¿¹¿Üó¸® ÇÒ ÇÊ¿ä ¾øÀ½. inline BOOLEAN AnimationDelayControl::NeedSkipProcessByAnimationDelay(Skill* const pSkill) { return NeedSkipProcessByAnimationDelay(reinterpret_cast(pSkill)); } inline BOOLEAN AnimationDelayControl::NeedSkipProcessByAnimationDelay(BaseStatus* const pStatus) { return NeedSkipProcessByAnimationDelay(reinterpret_cast(pStatus)); } inline BOOLEAN AnimationDelayControl::NeedSkipProcessByAnimationDelay(Ability* const pAbility) { return NeedSkipProcessByAnimationDelay(reinterpret_cast(pAbility)); } inline BOOLEAN AnimationDelayControl::SetAnimationDelay(Skill* const pSkill, const DWORD delayTick) { return SetAnimationDelay(reinterpret_cast(pSkill), delayTick); } inline BOOLEAN AnimationDelayControl::SetAnimationDelay(BaseStatus* const pStatus, const DWORD delayTick) { return SetAnimationDelay(reinterpret_cast(pStatus), delayTick); } inline BOOLEAN AnimationDelayControl::SetAnimationDelay(Ability* const pAbility, const DWORD delayTick) { return SetAnimationDelay(reinterpret_cast(pAbility), delayTick); }