forked from zeldaret/tp
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathd_a_npc_kasi_kyu.h
More file actions
160 lines (143 loc) · 4.45 KB
/
d_a_npc_kasi_kyu.h
File metadata and controls
160 lines (143 loc) · 4.45 KB
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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
#ifndef D_A_NPC_KASI_KYU_H
#define D_A_NPC_KASI_KYU_H
#include "d/actor/d_a_npc4.h"
#include "d/actor/d_a_tag_escape.h"
struct daNpcKasiKyu_HIOParam {
/* 0x00 */ daNpcF_HIOParam common;
/* 0x6C */ s16 escape_time; // 逃げるまでの時間 - Escape Time
/* 0x70 */ f32 escape_spd; // 逃げる速度 - Escape Speed
};
class daNpcKasiKyu_Param_c {
public:
virtual ~daNpcKasiKyu_Param_c() {}
static daNpcKasiKyu_HIOParam const m;
};
#if DEBUG
class daNpcKasiKyu_HIO_c : public mDoHIO_entry_c {
public:
daNpcKasiKyu_HIO_c();
void genMessage(JORMContext*);
/* 0x8 */ daNpcKasiKyu_HIOParam m;
};
#define NPC_KASI_KYU_HIO_CLASS daNpcKasiKyu_HIO_c
#else
#define NPC_KASI_KYU_HIO_CLASS daNpcKasiKyu_Param_c
#endif
/**
* @ingroup actors-npcs
* @class daNpcKasiKyu_c
* @brief Kili
*
* @details
*
*/
class daNpcKasiKyu_c : public daNpcF_c {
public:
typedef int (daNpcKasiKyu_c::*actionFunc)(int);
typedef BOOL (daNpcKasiKyu_c::*EventFn)(int);
daNpcKasiKyu_c();
~daNpcKasiKyu_c();
cPhs_Step Create();
int CreateHeap();
int Delete();
int Execute();
int Draw();
int ctrlJoint(J3DJoint*, J3DModel*);
static int createHeapCallBack(fopAc_ac_c*);
static int ctrlJointCallBack(J3DJoint*, int);
void setParam();
BOOL main();
void setAttnPos();
void setMotionAnm(int, f32);
void setMotion(int, f32, int);
BOOL drawDbgInfo();
void reset();
void playMotion();
void playMotionAnmLoop(daNpcF_c::daNpcF_anmPlayData***);
BOOL setAction(int (daNpcKasiKyu_c::*)(int));
void setLookMode(int);
void lookat();
BOOL step(s16, int);
BOOL chkFindPlayer();
int wait(int);
int fear(int);
daTagEscape_c* srchWolfTag();
static void* _srch_escape_tag(void*, void*);
int getWolfPathNearIdx();
int chace_st(int);
int chace(int);
cXyz getChacePos();
int turn_link(int);
int turn_home(int);
int turn_center(int);
int talk_dummy(int);
int kya(int);
int kya2(int);
int kya_stop(int);
int iyan(int);
int iyan_look(int);
int turn_hana(int);
int escape(int);
int wait_dummy(int);
int cheer(int);
BOOL _turn_to_link(s16);
BOOL _turn_pos(cXyz const&, s16);
BOOL actor_front_check(fopAc_ac_c*);
void _getOffset(cXyz const&, cXyz&);
void adjustShapeAngle() {}
s8 getType() {
s8 rv = fopAcM_GetParam(this) & 0xFF;
// !@bug Comparison of s8 with 0xFF will always evaluate to false
if (rv == 0xFF) {
rv = 0;
}
return rv;
}
int getMessageNo() { return home.angle.x; }
u8 getRailNo() { return fopAcM_GetParam(this) >> 8; }
void setSygnal(int i_sygnal) { mSygnal = i_sygnal; }
void setChacePos(const cXyz& i_chacePos) { mChacePos = i_chacePos; }
void setCenterPos(const cXyz& i_centerPos) { mCenterPos = i_centerPos; }
void setPlPoint(const int& i_plPoint) { mPlPoint = i_plPoint; }
void off_talked() { mTalked = false; }
BOOL is_talked() { return mTalked; }
BOOL is_fear() { return mFear; }
BOOL is_escape() { return mEscape; }
void chgWeightHeavy() { mCcStts.SetWeight(0xFE); }
void chgWeightLight() { mCcStts.SetWeight(0xD8); }
BOOL pl_front_check() { return actor_front_check(daPy_getPlayerActorClass()); }
static EventFn mEvtSeqList[1];
static daTagEscape_c* mTargetTag;
static f32 mTargetTagDist;
static s16 mWolfAngle;
private:
/* 0x0B48 */ Z2CreatureCitizen mSound;
/* 0x0BEC */ u8 field_0xbec[0xbf0 - 0xbec];
/* 0x0BF0 */ daNpcF_Lookat_c mLookat;
/* 0x0C8C */ daNpcF_ActorMngr_c mActorMngr[1];
/* 0x0C94 */ daNpcF_Path_c mPath;
/* 0x12C4 */ NPC_KASI_KYU_HIO_CLASS* mpHIO;
/* 0x12C8 */ dCcD_Cyl mCyl;
/* 0x1404 */ s16 mMode;
/* 0x1408 */ actionFunc mAction;
/* 0x1414 */ request_of_phase_process_class mPhases[3];
/* 0x142C */ fpc_ProcID field_0x142c;
/* 0x1430 */ int field_0x1430;
/* 0x1434 */ int field_0x1434;
/* 0x1438 */ int mMessageNo;
/* 0x143C */ s16 mLookMode;
/* 0x143E */ s16 field_0x143e;
/* 0x1440 */ int mSygnal;
/* 0x1444 */ cXyz mChacePos;
/* 0x1450 */ cXyz mCenterPos;
/* 0x145C */ int mPlPoint;
/* 0x1460 */ int field_0x1460;
/* 0x1464 */ s8 mType;
/* 0x1465 */ s8 field_0x1465;
/* 0x1466 */ bool mTalked;
/* 0x1467 */ bool mFear;
/* 0x1468 */ bool mEscape;
/* 0x1469 */ u8 field_0x1469;
};
STATIC_ASSERT(sizeof(daNpcKasiKyu_c) == 0x146c);
#endif /* D_A_NPC_KASI_KYU_H */