#pragma once #include "KPrimitiveSprite.h" //#include "KUIControl.h" class KUIControlQuickEffect : public KUIControl { public: KUIControlQuickEffect(); ~KUIControlQuickEffect(); virtual void OnPosChangeNofity(int XOffset, int YOffset); virtual void OnAlphaChangeNotify(float fAlpha); virtual void Process(DWORD time); virtual void Render(KViewportObject * pViewport, bool isFront /* = false */); /// 대기 상태로 만듬. void Wait(); /** 캐스팅 시작을 알린다.캐스팅이 얼마동안 반복될지 time을 넣어줘야 한다. time이 0이라면 계속 반복. 만약 캐스팅 타임이 끝난 후에 바로 사용 애니메이션이 시작되게 하려면 Use Quick Slot에 맞는 Argument를 넣어주면 된다. */ void Cast(DWORD castTime, bool isUseQuickSlot = false, DWORD coolTime = 0, bool isToggleOn = false, DWORD toggleTime = 0); /** 스킬이 발동된다고 알려줌. Toggle을 사용할지, 얼마나 지속될지 결정( 0이면 무한반복) Cool Time 설정도 해줘야 한다 */ void UseQuickSlot(DWORD coolTime, bool isToggleOn = false, DWORD toggleTime = 0); /// true면 toggle on. false면 toggle off void ToggleOn(bool isToggleOn, DWORD toggleTime = 0); /** cool time이 끝났을때 이걸 불러주면 된다. toggle이 켜져 있으면 자동으로 사라짐. */ void CoolTimeOff(); /// 모든 동작을 취소함 void Cancel(); const bool IsToggleOn(); void SetAniTargetSize( float width, float height ); bool IsPrevToggleOn() { return m_bIsPrevToggleOn; } protected: virtual void _initControl(); private: void _SetState(int state); void _StartAnimation(int type, int aniType); void _StopAnimation(int type); void _StopAllAnimation(); private: int m_state; bool m_isNextUseQuickSlot; bool m_isNextToggleOn; DWORD m_curTime; DWORD m_stateStartTime; DWORD m_castTime; DWORD m_toggleTime; DWORD m_coolTime; DWORD m_coolTimeStartTime; std::vector m_vtFrameAnimator; bool m_bIsPrevToggleOn; };