Files
2026-06-01 12:46:52 +02:00

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;
};