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 */
int cPhs_Step
Definition c_phase.h:8
Definition J3DJoint.h:66
Definition J3DModel.h:43
Definition JORMContext.h:128
Definition JORReflexible.h:47
Definition Z2Creature.h:7
Definition c_sxyz.h:10
Definition d_cc_d.h:472
Definition d_a_npc4.h:14
void entry(unsigned int)
Definition d_a_npc4.cpp:75
Definition d_a_npc4.h:140
Definition d_a_npc4.h:121
Definition d_a_npc4.h:170
fopAc_ac_c * getEvtAreaTagP(int, int)
Definition d_a_npc4.cpp:1507
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:994
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:559
BOOL EvCut_DiscoveryCannon(int)
Definition d_a_npc_shad.cpp:2040
bool setExpressionAnm(int, bool)
Definition d_a_npc_shad.cpp:637
virtual ~daNpcShad_c()
Definition d_a_npc_shad.cpp:333
void setMotion(int, f32, BOOL)
Definition d_a_npc_shad.cpp:1226
BOOL EvCut_ToChantSpell1(int)
Definition d_a_npc_shad.cpp:1704
bool wait_type1(void *)
Definition d_a_npc_shad.cpp:1245
bool wait_type0(void *)
Definition d_a_npc_shad.cpp:1149
int Delete()
Definition d_a_npc_shad.cpp:549
bool isSneaking()
Definition d_a_npc_shad.cpp:876
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:884
BOOL EvCut_ToChantSpell2(int)
Definition d_a_npc_shad.cpp:1844
csXyz * unk_inline()
void setLookMode(int, fopAc_ac_c *, cXyz *)
Definition d_a_npc_shad.cpp:1091
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:749
void setExpressionTalkAfter()
Definition d_a_npc_shad.cpp:1444
bool wait_type2(void *)
Definition d_a_npc_shad.cpp:1398
bool leave(void *)
Definition d_a_npc_shad.cpp:1591
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:2195
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:2032
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:842
daPy_py_c * field_0xca8
Definition d_a_npc_shad.h:247
BOOL EvCut_WiretapSponsor(int)
Definition d_a_npc_shad.cpp:2402
BOOL EvCut_Introduction(int)
Definition d_a_npc_shad.cpp:1622
int Execute()
Definition d_a_npc_shad.cpp:554
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:1062
static int createHeapCallBack(fopAc_ac_c *)
Definition d_a_npc_shad.cpp:619
u8 mMode
Definition d_a_npc_shad.h:262
BOOL EvCut_DisappearSkip(int)
Definition d_a_npc_shad.cpp:2325
BOOL EvCut_DiscoveryCannonSkip(int)
Definition d_a_npc_shad.cpp:2157
u8 field_0xe1e
Definition d_a_npc_shad.h:260
int CreateHeap()
Definition d_a_npc_shad.cpp:474
void setExpression(int, f32)
Definition d_a_npc_shad.cpp:1236
BOOL EvCut_WiretapEntrant(int)
Definition d_a_npc_shad.cpp:2450
daNpcShad_c()
Definition d_a_npc_shad.cpp:329
BOOL main()
Definition d_a_npc_shad.cpp:2551
bool setExpressionBtp(int)
Definition d_a_npc_shad.cpp:725
J3DModel * mBookKnifeModel
Definition d_a_npc_shad.h:241
bool demo(void *)
Definition d_a_npc_shad.cpp:1539
void reset()
Definition d_a_npc_shad.cpp:789
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
cPhs_Step Create()
Definition d_a_npc_shad.cpp:343
bool talk(void *)
Definition d_a_npc_shad.cpp:1467
bool getPathPoint(u8, int, Vec *)
Definition d_a_npc_shad.cpp:861
BOOL EvCut_CallBack(int)
Definition d_a_npc_shad.cpp:2352
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:584
void setAction(ActionFn action)
Definition d_a_npc_shad.h:192
BOOL drawDbgInfo()
Definition d_a_npc_shad.cpp:2636
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:624
BOOL ctrlBtk()
Definition d_a_npc_shad.cpp:2566
BOOL EvCut_Meeting(int)
Definition d_a_npc_shad.cpp:1649
BOOL step(s16, int, f32)
Definition d_a_npc_shad.cpp:1115
BOOL EvCut_ToChantSpell2Skip(int)
Definition d_a_npc_shad.cpp:2004
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:2584
void setParam()
Definition d_a_npc_shad.cpp:2527
void playMotion()
Definition d_a_npc_shad.cpp:925
Definition d_a_player.h:296
Definition f_op_actor.h:243
csXyz shape_angle
Definition f_op_actor.h:265
Definition m_Do_hostIO.h:26
static void action(b_bh_class *i_this)
Definition d_a_b_bh.cpp:1016
BOOL daNpcF_chkEvtBit(u32 i_no)
Definition d_a_npc4.cpp:1852
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
s32 fopAcM_SearchByName(s16 i_procName, fopAc_ac_c **i_outActor)
Definition f_op_actor_mng.cpp:159
u32 fopAcM_GetParam(const void *i_actor)
Definition f_op_actor_mng.h:204
unsigned int fpc_ProcID
Definition f_pc_base.h:10
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
s16 x
Definition c_sxyz.h:7
Definition mtx.h:13
Definition c_xyz.h:7
Definition d_a_npc4.h:430
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:19