Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
Loading...
Searching...
No Matches
d_a_npc_shad.h
Go to the documentation of this file.
1#ifndef D_A_NPC_SHAD_H
2#define D_A_NPC_SHAD_H
3
4#include "d/actor/d_a_npc4.h"
5
8 /* 0x6C */ f32 traveling_speed; // 走行速度 (Traveling Speed)
9};
10
12public:
13 virtual ~daNpcShad_Param_c() {}
15 static const daNpcShad_HIOParam m;
16};
17
18#if DEBUG
20public:
22
24
26};
27
28#define NPC_SHAD_HIO_CLASS daNpcShad_HIO_c
29#else
30#define NPC_SHAD_HIO_CLASS daNpcShad_Param_c
31#endif
32
41class daNpcShad_c : public daNpcF_c {
42public:
43 typedef bool (daNpcShad_c::*ActionFn)(void*);
44 typedef BOOL (daNpcShad_c::*EventFn)(int);
45
46 enum Animation {
47 /* 0x00 */ ANM_NONE,
48 /* 0x01 */ ANM_F_TALK_A,
49 /* 0x02 */ ANM_F_HAPPY,
50 /* 0x03 */ ANM_F_ANGER,
52 /* 0x05 */ ANM_F_CHANT,
53 /* 0x06 */ ANM_F_KOMON,
54 /* 0x07 */ ANM_F_SURPRISE,
55 /* 0x08 */ ANM_FH_SURPRISE,
56 /* 0x09 */ ANM_FH_KOMON,
57 /* 0x0A */ ANM_FH_HAPPY,
58 /* 0x0B */ ANM_FH_ANGER,
60 /* 0x0D */ ANM_WAIT_A,
61 /* 0x0E */ ANM_TALK_A,
62 /* 0x0F */ ANM_STEP,
63 /* 0x10 */ ANM_STEPB,
64 /* 0x11 */ ANM_BOOK_WAIT,
65 /* 0x12 */ ANM_BOOK_TALK_A,
66 /* 0x13 */ ANM_HI,
67 /* 0x14 */ ANM_RUN_A,
68 /* 0x15 */ ANM_WALK_A,
69 /* 0x16 */ ANM_SIT_A,
70 /* 0x17 */ ANM_LOOKBACK,
71 /* 0x18 */ ANM_CHANT,
72 /* 0x19 */ ANM_DISCOURAGED,
74 /* 0x1B */ ANM_SITTALK_A,
75 /* 0x1C */ ANM_LOOK,
76 /* 0x1D */ ANM_LOOK_WAIT,
77 /* 0x1E */ ANM_SAD_WALK,
78 /* 0x1F */ ANM_LOOKUP,
79 /* 0x20 */ ANM_TAKE_KOMON,
80 /* 0x21 */ ANM_READ_KOMON,
81 /* 0x22 */ ANM_SURPRISE,
83 };
84
86 /* 0x0 */ EXPR_TALK_A,
87 /* 0x1 */ EXPR_HAPPY,
88 /* 0x2 */ EXPR_ANGER,
90 /* 0x4 */ EXPR_KOMON,
91 /* 0x5 */ EXPR_SURPRISE,
92 /* 0x6 */ EXPR_H_SURPRISE,
93 /* 0x7 */ EXPR_H_KOMON,
94 /* 0x8 */ EXPR_H_HAPPY,
95 /* 0x9 */ EXPR_H_ANGER,
97 /* 0xB */ EXPR_CHANT,
98 /* 0xC */ EXPR_NONE,
99 };
100
114
115 enum Motion {
116 /* 0x00 */ MOT_WAIT_A,
117 /* 0x01 */ MOT_BOOK_TALK_A,
118 /* 0x02 */ MOT_BOOK_WAIT,
119 /* 0x03 */ MOT_HI,
120 /* 0x04 */ MOT_SIT_A,
121 /* 0x05 */ MOT_LOOKBACK,
122 /* 0x06 */ MOT_DISCOURAGED,
124 /* 0x08 */ MOT_TALK_A,
125 /* 0x09 */ MOT_SITTALK_A,
126 /* 0x0A */ MOT_LOOK,
127 /* 0x0B */ MOT_TAKE_KOMON,
128 /* 0x0C */ MOT_READ_KOMON,
129 /* 0x0D */ MOT_LOOK_WAIT,
130 /* 0x0E */ MOT_SURPRISE,
132 /* 0x10 */ MOT_LOOKUP,
133 /* 0x11 */ MOT_SAD_WALK,
134 /* 0x12 */ MOT_CHANT,
135 /* 0x13 */ MOT_RUN_A,
136 /* 0x14 */ MOT_WALK_A,
137 /* 0x15 */ MOT_STEP,
138 /* 0x16 */ MOT_STEPB,
139 };
140
141 daNpcShad_c();
142 virtual ~daNpcShad_c();
144 int CreateHeap();
145 int Delete();
146 int Execute();
147 int Draw();
149 static int createHeapCallBack(fopAc_ac_c*);
150 static int ctrlJointCallBack(J3DJoint*, int);
151 bool setExpressionAnm(int, bool);
152 bool setExpressionBtp(int);
153 void setMotionAnm(int, f32);
154 void reset();
155 inline void setWaitAction();
156 inline bool getPathPoint(u8, int, Vec*);
157 inline bool isSneaking();
158 bool wait_type0(void*);
159 void setMotion(int, f32, BOOL);
160 void setExpression(int, f32);
161 bool wait_type1(void*);
162 bool wait_type2(void*);
163 bool talk(void*);
164 bool demo(void*);
165 bool leave(void*);
167 BOOL EvCut_Meeting(int);
175 BOOL EvCut_CallBack(int);
178 void setParam();
179 BOOL main();
180 void playMotion();
181 void playExpression();
182 BOOL ctrlBtk();
183 void setAttnPos();
184 void lookat();
186
187 static EventFn mEvtSeqList[14];
188
189 u8 getPathID() { return (fopAcM_GetParam(this) >> 8) & 0xFF; }
191
193 field_0xe1a = 3;
194
195 if (mActionFn) {
196 (this->*mActionFn)(NULL);
197 }
198
199 field_0xe1a = 0;
201
202 if (mActionFn) {
203 (this->*mActionFn)(NULL);
204 }
205 }
206
209 void setLookMode(int, fopAc_ac_c*, cXyz*);
210 BOOL step(s16, int, f32);
213
215 if (mMode == 0) {
216 if (mActorMngr[1].getActorP() == NULL) {
218 }
219
220 if (mActorMngr[2].getActorP() == NULL) {
222 }
223
224 if (mActorMngr[3].getActorP() == NULL) {
226 }
227
228 if (mActorMngr[4].getActorP() == NULL) {
230 }
231 } else if (mMode == 1
232 /* dSv_event_flag_c::F_0302 - Kakariko Village - Saw cutscene of Shad casting
233 spells underneat Kakariko Village */
234 && daNpcF_chkEvtBit(0x12E) && mActorMngr[4].getActorP() == NULL)
235 {
237 }
238 }
239
240private:
243 /* 0xB50 */ Z2Creature mSound;
247 /* 0xCA8 */ daPy_py_c* field_0xca8;
248 /* 0xCAC */ NPC_SHAD_HIO_CLASS* mpHIO;
250 /* 0xDEC */ ActionFn mActionFn;
253 /* 0xE0C */ int field_0xe0c;
254 /* 0xE10 */ int field_0xe10;
255 /* 0xE14 */ s16 field_0xe14;
256 /* 0xE16 */ s16 field_0xe16;
257 /* 0xE18 */ s16 mLookMode;
258 /* 0xE1A */ u16 field_0xe1a;
259 /* 0xE1C */ s16 field_0xe1c;
260 /* 0xE1E */ u8 field_0xe1e;
261 /* 0xE1F */ u8 field_0xe1f;
262 /* 0xE20 */ u8 mMode;
263};
264
265STATIC_ASSERT(sizeof(daNpcShad_c) == 0xe24);
266
267#endif /* D_A_NPC_SHAD_H */
cPhs__Step
Definition c_phase.h:8
Definition J3DJoint.h:63
Definition J3DModel.h:43
Definition JORMContext.h:120
Definition JORReflexible.h:43
Definition Z2Creature.h:7
Definition c_sxyz.h:10
Definition d_cc_d.h:461
Definition d_a_npc4.h:14
void entry(unsigned int)
Definition d_a_npc4.cpp:75
Definition d_a_npc4.h:379
Definition d_a_npc4.h:292
Definition d_a_npc4.h:54
fopAc_ac_c * getEvtAreaTagP(int, int)
Definition d_a_npc4.cpp:1505
Definition d_a_npc_shad.h:19
void genMessage(JORMContext *)
Definition d_a_npc_shad.cpp:56
daNpcShad_HIOParam m
Definition d_a_npc_shad.h:25
daNpcShad_HIO_c()
Definition d_a_npc_shad.cpp:52
Definition d_a_npc_shad.h:11
virtual ~daNpcShad_Param_c()
Definition d_a_npc_shad.h:13
static const daNpcShad_HIOParam m
Definition d_a_npc_shad.h:14
Shad.
Definition d_a_npc_shad.h:41
void lookat()
Definition d_a_npc_shad.cpp:989
s16 field_0xe1c
Definition d_a_npc_shad.h:259
daNpcF_Lookat_c mLookat
Definition d_a_npc_shad.h:245
s16 field_0xe16
Definition d_a_npc_shad.h:256
int Draw()
Definition d_a_npc_shad.cpp:554
BOOL EvCut_DiscoveryCannon(int)
Definition d_a_npc_shad.cpp:2035
bool setExpressionAnm(int, bool)
Definition d_a_npc_shad.cpp:632
virtual ~daNpcShad_c()
Definition d_a_npc_shad.cpp:333
void setMotion(int, f32, BOOL)
Definition d_a_npc_shad.cpp:1221
BOOL EvCut_ToChantSpell1(int)
Definition d_a_npc_shad.cpp:1699
bool wait_type1(void *)
Definition d_a_npc_shad.cpp:1240
bool wait_type0(void *)
Definition d_a_npc_shad.cpp:1144
int Delete()
Definition d_a_npc_shad.cpp:544
bool isSneaking()
Definition d_a_npc_shad.cpp:871
ActionFn mActionFn
Definition d_a_npc_shad.h:250
s16 getMessageNo()
Definition d_a_npc_shad.h:190
void playExpression()
Definition d_a_npc_shad.cpp:879
BOOL EvCut_ToChantSpell2(int)
Definition d_a_npc_shad.cpp:1839
csXyz * unk_inline()
void setLookMode(int, fopAc_ac_c *, cXyz *)
Definition d_a_npc_shad.cpp:1086
daNpcF_MatAnm_c * mpMatAnm
Definition d_a_npc_shad.h:244
s16 mLookMode
Definition d_a_npc_shad.h:257
fpc_ProcID mItemPartnerId
Definition d_a_npc_shad.h:252
void setMotionAnm(int, f32)
Definition d_a_npc_shad.cpp:744
void setExpressionTalkAfter()
Definition d_a_npc_shad.cpp:1439
bool wait_type2(void *)
Definition d_a_npc_shad.cpp:1393
bool leave(void *)
Definition d_a_npc_shad.cpp:1586
int field_0xe0c
Definition d_a_npc_shad.h:253
request_of_phase_process_class mPhases[2]
Definition d_a_npc_shad.h:251
BOOL EvCut_Disappear(int)
Definition d_a_npc_shad.cpp:2190
Animation
Definition d_a_npc_shad.h:46
@ ANM_LOOK_WAIT
Definition d_a_npc_shad.h:76
@ ANM_HI
Definition d_a_npc_shad.h:66
@ ANM_DISCOURAGED
Definition d_a_npc_shad.h:72
@ ANM_STEPB
Definition d_a_npc_shad.h:63
@ ANM_FH_HAPPY
Definition d_a_npc_shad.h:57
@ ANM_LOOK
Definition d_a_npc_shad.h:75
@ ANM_F_SURPRISE
Definition d_a_npc_shad.h:54
@ ANM_LOOKBACK
Definition d_a_npc_shad.h:70
@ ANM_F_DISCOURAGED
Definition d_a_npc_shad.h:51
@ ANM_DISCOURAGED_WAIT
Definition d_a_npc_shad.h:73
@ ANM_SIT_A
Definition d_a_npc_shad.h:69
@ ANM_F_HAPPY
Definition d_a_npc_shad.h:49
@ ANM_FH_SURPRISE
Definition d_a_npc_shad.h:55
@ ANM_BOOK_WAIT
Definition d_a_npc_shad.h:64
@ ANM_READ_KOMON
Definition d_a_npc_shad.h:80
@ ANM_TAKE_KOMON
Definition d_a_npc_shad.h:79
@ ANM_WALK_A
Definition d_a_npc_shad.h:68
@ ANM_CHANT
Definition d_a_npc_shad.h:71
@ ANM_F_TALK_A
Definition d_a_npc_shad.h:48
@ ANM_FH_DISCOURAGED
Definition d_a_npc_shad.h:59
@ ANM_BOOK_TALK_A
Definition d_a_npc_shad.h:65
@ ANM_F_ANGER
Definition d_a_npc_shad.h:50
@ ANM_STEP
Definition d_a_npc_shad.h:62
@ ANM_FH_ANGER
Definition d_a_npc_shad.h:58
@ ANM_F_KOMON
Definition d_a_npc_shad.h:53
@ ANM_RUN_A
Definition d_a_npc_shad.h:67
@ ANM_NONE
Definition d_a_npc_shad.h:47
@ ANM_TALK_A
Definition d_a_npc_shad.h:61
@ ANM_SURPRISE_WAIT
Definition d_a_npc_shad.h:82
@ ANM_FH_KOMON
Definition d_a_npc_shad.h:56
@ ANM_SURPRISE
Definition d_a_npc_shad.h:81
@ ANM_SAD_WALK
Definition d_a_npc_shad.h:77
@ ANM_SITTALK_A
Definition d_a_npc_shad.h:74
@ ANM_WAIT_A
Definition d_a_npc_shad.h:60
@ ANM_F_CHANT
Definition d_a_npc_shad.h:52
@ ANM_LOOKUP
Definition d_a_npc_shad.h:78
Z2Creature mSound
Definition d_a_npc_shad.h:243
void setLookObliquenessUp()
Definition d_a_npc_shad.cpp:2027
u8 field_0xe1f
Definition d_a_npc_shad.h:261
BOOL(daNpcShad_c::*) EventFn(int)
Definition d_a_npc_shad.h:44
dCcD_Cyl field_0xcb0
Definition d_a_npc_shad.h:249
void setWaitAction()
Definition d_a_npc_shad.cpp:837
daPy_py_c * field_0xca8
Definition d_a_npc_shad.h:247
BOOL EvCut_WiretapSponsor(int)
Definition d_a_npc_shad.cpp:2397
BOOL EvCut_Introduction(int)
Definition d_a_npc_shad.cpp:1617
int Execute()
Definition d_a_npc_shad.cpp:549
int field_0xe10
Definition d_a_npc_shad.h:254
bool(daNpcShad_c::*) ActionFn(void *)
Definition d_a_npc_shad.h:43
Expression
Definition d_a_npc_shad.h:85
@ EXPR_ANGER
Definition d_a_npc_shad.h:88
@ EXPR_CHANT
Definition d_a_npc_shad.h:97
@ EXPR_SURPRISE
Definition d_a_npc_shad.h:91
@ EXPR_H_ANGER
Definition d_a_npc_shad.h:95
@ EXPR_H_SURPRISE
Definition d_a_npc_shad.h:92
@ EXPR_H_KOMON
Definition d_a_npc_shad.h:93
@ EXPR_NONE
Definition d_a_npc_shad.h:98
@ EXPR_H_HAPPY
Definition d_a_npc_shad.h:94
@ EXPR_HAPPY
Definition d_a_npc_shad.h:87
@ EXPR_KOMON
Definition d_a_npc_shad.h:90
@ EXPR_TALK_A
Definition d_a_npc_shad.h:86
@ EXPR_H_DISCOURAGED
Definition d_a_npc_shad.h:96
@ EXPR_DISCOURAGED
Definition d_a_npc_shad.h:89
BOOL chkFindPlayer()
Definition d_a_npc_shad.cpp:1057
static int createHeapCallBack(fopAc_ac_c *)
Definition d_a_npc_shad.cpp:614
u8 mMode
Definition d_a_npc_shad.h:262
BOOL EvCut_DisappearSkip(int)
Definition d_a_npc_shad.cpp:2320
BOOL EvCut_DiscoveryCannonSkip(int)
Definition d_a_npc_shad.cpp:2152
u8 field_0xe1e
Definition d_a_npc_shad.h:260
int CreateHeap()
Definition d_a_npc_shad.cpp:469
void setExpression(int, f32)
Definition d_a_npc_shad.cpp:1231
BOOL EvCut_WiretapEntrant(int)
Definition d_a_npc_shad.cpp:2445
daNpcShad_c()
Definition d_a_npc_shad.cpp:329
BOOL main()
Definition d_a_npc_shad.cpp:2546
bool setExpressionBtp(int)
Definition d_a_npc_shad.cpp:720
J3DModel * mBookKnifeModel
Definition d_a_npc_shad.h:241
bool demo(void *)
Definition d_a_npc_shad.cpp:1534
void reset()
Definition d_a_npc_shad.cpp:784
Expression_BTP
Definition d_a_npc_shad.h:101
@ EXPR_BTP_F_DISCOURAGED
Definition d_a_npc_shad.h:104
@ EXPR_BTP_FH_SURPRISE
Definition d_a_npc_shad.h:108
@ EXPR_BTP_F_KOMON
Definition d_a_npc_shad.h:106
@ EXPR_BTP_F_SURPRISE
Definition d_a_npc_shad.h:107
@ EXPR_BTP_FH_DISCOURAGED
Definition d_a_npc_shad.h:111
@ EXPR_BTP_F_HAPPY
Definition d_a_npc_shad.h:105
@ EXPR_BTP_FH_ANGER
Definition d_a_npc_shad.h:110
@ EXPR_BTP_FH_KOMON
Definition d_a_npc_shad.h:109
@ EXPR_BTP_SHAD
Definition d_a_npc_shad.h:102
@ EXPR_BTP_F_ANGER
Definition d_a_npc_shad.h:103
@ EXPR_BTP_FH_HAPPY
Definition d_a_npc_shad.h:112
J3DModel * mKomonshoModel
Definition d_a_npc_shad.h:242
static EventFn mEvtSeqList[14]
Definition d_a_npc_shad.h:312
bool talk(void *)
Definition d_a_npc_shad.cpp:1462
bool getPathPoint(u8, int, Vec *)
Definition d_a_npc_shad.cpp:856
cPhs__Step Create()
Definition d_a_npc_shad.cpp:343
BOOL EvCut_CallBack(int)
Definition d_a_npc_shad.cpp:2347
u16 field_0xe1a
Definition d_a_npc_shad.h:258
s16 field_0xe14
Definition d_a_npc_shad.h:255
daNpcF_ActorMngr_c mActorMngr[5]
Definition d_a_npc_shad.h:246
void searchActors()
Definition d_a_npc_shad.h:214
int ctrlJoint(J3DJoint *, J3DModel *)
Definition d_a_npc_shad.cpp:579
void setAction(ActionFn action)
Definition d_a_npc_shad.h:192
BOOL drawDbgInfo()
Definition d_a_npc_shad.cpp:2631
Motion
Definition d_a_npc_shad.h:115
@ MOT_SIT_A
Definition d_a_npc_shad.h:120
@ MOT_TALK_A
Definition d_a_npc_shad.h:124
@ MOT_TAKE_KOMON
Definition d_a_npc_shad.h:127
@ MOT_BOOK_TALK_A
Definition d_a_npc_shad.h:117
@ MOT_SAD_WALK
Definition d_a_npc_shad.h:133
@ MOT_SURPRISE
Definition d_a_npc_shad.h:130
@ MOT_STEPB
Definition d_a_npc_shad.h:138
@ MOT_LOOKUP
Definition d_a_npc_shad.h:132
@ MOT_DISCOURAGED
Definition d_a_npc_shad.h:122
@ MOT_SITTALK_A
Definition d_a_npc_shad.h:125
@ MOT_LOOK
Definition d_a_npc_shad.h:126
@ MOT_DISCOURAGED_WAIT
Definition d_a_npc_shad.h:123
@ MOT_WAIT_A
Definition d_a_npc_shad.h:116
@ MOT_STEP
Definition d_a_npc_shad.h:137
@ MOT_BOOK_WAIT
Definition d_a_npc_shad.h:118
@ MOT_LOOK_WAIT
Definition d_a_npc_shad.h:129
@ MOT_CHANT
Definition d_a_npc_shad.h:134
@ MOT_LOOKBACK
Definition d_a_npc_shad.h:121
@ MOT_READ_KOMON
Definition d_a_npc_shad.h:128
@ MOT_SURPRISE_WAIT
Definition d_a_npc_shad.h:131
@ MOT_HI
Definition d_a_npc_shad.h:119
@ MOT_RUN_A
Definition d_a_npc_shad.h:135
@ MOT_WALK_A
Definition d_a_npc_shad.h:136
static int ctrlJointCallBack(J3DJoint *, int)
Definition d_a_npc_shad.cpp:619
BOOL ctrlBtk()
Definition d_a_npc_shad.cpp:2561
BOOL EvCut_Meeting(int)
Definition d_a_npc_shad.cpp:1644
BOOL step(s16, int, f32)
Definition d_a_npc_shad.cpp:1110
BOOL EvCut_ToChantSpell2Skip(int)
Definition d_a_npc_shad.cpp:1999
u8 getPathID()
Definition d_a_npc_shad.h:189
NPC_SHAD_HIO_CLASS * mpHIO
Definition d_a_npc_shad.h:248
void setAttnPos()
Definition d_a_npc_shad.cpp:2579
void setParam()
Definition d_a_npc_shad.cpp:2522
void playMotion()
Definition d_a_npc_shad.cpp:920
Definition d_a_player.h:299
Definition f_op_actor.h:230
csXyz shape_angle
Definition f_op_actor.h:252
Definition m_Do_hostIO.h:27
static void action(b_bh_class *i_this)
Definition d_a_b_bh.cpp:1017
BOOL daNpcF_chkEvtBit(u32 i_no)
Definition d_a_npc4.cpp:1850
STATIC_ASSERT(sizeof(daNpcShad_c)==0xe24)
@ PROC_NPC_RAFREL
Definition d_procname.h:676
@ PROC_NPC_ASH
Definition d_procname.h:673
@ PROC_NPC_MOIR
Definition d_procname.h:677
int BOOL
Definition types.h:33
signed short int s16
Definition types.h:9
float f32
Definition types.h:25
unsigned short int u16
Definition types.h:10
unsigned char u8
Definition types.h:8
s32 fopAcM_SearchByName(s16 i_procName, fopAc_ac_c **i_outActor)
Definition f_op_actor_mng.cpp:135
u32 fopAcM_GetParam(const void *i_actor)
Definition f_op_actor_mng.h:192
unsigned int fpc_ProcID
Definition f_pc_base.h:10
s16 x
Definition c_sxyz.h:7
Definition mtx.h:13
Definition c_xyz.h:7
Definition d_a_npc4.h:423
Definition d_a_npc_shad.h:6
daNpcF_HIOParam common
Definition d_a_npc_shad.h:7
f32 traveling_speed
Definition d_a_npc_shad.h:8
Definition c_phase.h:17