75 lines
2.0 KiB
C++
75 lines
2.0 KiB
C++
#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<class KSpriteAnimator*> m_vtFrameAnimator;
|
|
|
|
bool m_bIsPrevToggleOn;
|
|
};
|
|
|