-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathZActorAnimation.h
115 lines (93 loc) · 2.58 KB
/
ZActorAnimation.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
#ifndef _ZACTORANIMCONTROLLER_H
#define _ZACTORANIMCONTROLLER_H
#include "ZStateMachine.h"
//! 에니메이션 세트
enum ZA_ANIM_STATE {
ZA_ANIM_NONE = 0,
ZA_ANIM_IDLE, // 정지
ZA_ANIM_WALK, // 걷기
ZA_ANIM_RUN, // 뛰기
ZA_ANIM_ATTACK_MELEE, // 근접 공격
ZA_ANIM_ATTACK_RANGE, // 원거리 공격
ZA_ANIM_RANGE_DAMAGED, // 원거리 피격
ZA_ANIM_MELEE_DAMAGED1, // 원거리 피격
ZA_ANIM_MELEE_DAMAGED2, // 원거리 피격
ZA_ANIM_LIGHTNING_DAMAGED, // 라이트닝 데미지
ZC_ANIM_DAMAGED_DOWN, // 다운
ZC_ANIM_STAND, // 일어서기
ZA_ANIM_BLAST, // 날라가기
ZA_ANIM_BLAST_FALL, // 떨어지기
ZA_ANIM_BLAST_DROP, // 땅에 부딪히기
ZA_ANIM_DIE,
ZA_ANIM_BLAST_DAGGER, // 단검찌르기에 날라가는
ZA_ANIM_BLAST_DAGGER_DROP, // 단검찌르기에 넘어지는
ZA_ANIM_SPECIAL1, // 스킬이나 마법
ZA_ANIM_SPECIAL2, // 스킬이나 마법
ZA_ANIM_SPECIAL3,
ZA_ANIM_SPECIAL4,
ZA_ANIM_NEGLECT1, // 도발1
ZA_ANIM_NEGLECT2, // 도발2
ZA_ANIM_END
};
enum ZA_ANIM_INPUT {
// actor input
ZA_INPUT_NONE = 0,
ZA_INPUT_WALK, // a
ZA_INPUT_RUN, // b
ZA_INPUT_ROTATE, // 방향을 바꾸려 한다.
ZA_INPUT_WALK_DONE,
ZA_INPUT_ATTACK_MELEE, // c
ZA_INPUT_ATTACK_RANGE, // d
ZA_INPUT_RISE, // j
// event
ZA_EVENT_DETECT_ENEMY, // b
ZA_EVENT_RANGE_DAMAGED, // d
ZA_EVENT_MELEE_DAMAGED1, // d
ZA_EVENT_MELEE_DAMAGED2, // d
ZA_EVENT_LIGHTNING_DAMAGED, // d
ZA_EVENT_BLAST, // e
ZA_EVENT_BLAST_DAGGER, // f
ZA_EVENT_FALL, // g
ZA_EVENT_REACH_GROUND, // i
ZA_EVENT_REACH_GROUND_DAGGER,// i
ZA_EVENT_REACH_PEAK,
ZA_EVENT_DEATH, // l
ZA_EVENT_SPECIAL1,
ZA_EVENT_SPECIAL2,
ZA_EVENT_SPECIAL3,
ZA_EVENT_SPECIAL4,
ZA_EVENT_NEGLECT1,
ZA_EVENT_NEGLECT2,
ZA_EVENT_STANDUP,
// anim event
ZA_ANIM_DONE, // k
ZA_INPUT_END
};
class ZActor;
class ZActorAnimation
{
protected:
//! 에니메이션 정보
static struct ANIMATION_INFO { // ZCharacter의 ZANIMATIONINFO에서 가져옴
int nID;
char* szName;
bool bEnableCancel;
bool bLoop;
bool bMove;
} m_AnimationTable[ZA_ANIM_END];
ZActor* m_pBody;
ZStateMachine m_AniFSM; ///< 애니메이션 상태기계
ZA_ANIM_STATE m_nCurrState; ///< 현재 애니메이션 상태
void InitAnimationStates();
public:
ZActorAnimation();
virtual ~ZActorAnimation();
void Init(ZActor* pBody);
void Set(ZA_ANIM_STATE nAnim, bool bReset=false);
bool Input(ZA_ANIM_INPUT nInput);
void ForceAniState(int nAnimState); ///< 애니메이션 상태를 강제로 바꾼다.
ZA_ANIM_STATE GetCurrState() { return m_nCurrState; }
static bool IsAttackAnimation(ZA_ANIM_STATE nAnimState);
static bool IsSkippableDamagedAnimation(ZA_ANIM_STATE nAnimState);
};
#endif