Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
Loading...
Searching...
No Matches
d_a_npc_moir.h
Go to the documentation of this file.
1#ifndef D_A_NPC_MOIR_H
2#define D_A_NPC_MOIR_H
3
4#include "d/actor/d_a_npc4.h"
5
17 /* 0x6C */ f32 demo_start_dist; // デモ開始距離 - Demo Start Distance
18 /* 0x70 */ s16 horizontal_eye_movement_range; // 目玉横可動範囲 - Horizontal Eye Movement Range
19 /* 0x72 */ u8 demo_start_area; // デモ開始エリア - Demo Start Area
20};
21
23public:
24 virtual ~daNpcMoiR_Param_c() {}
25
26 static daNpcMoiR_HIOParam const m;
27};
28
29#if DEBUG
31public:
34
36};
37
38#define NPC_MOIR_HIO_CLASS daNpcMoiR_HIO_c
39#else
40#define NPC_MOIR_HIO_CLASS daNpcMoiR_Param_c
41#endif
42
43class daNpcMoiR_c : public daNpcF_c {
44public:
45 typedef bool (daNpcMoiR_c::*ActionFn)(void*);
46 typedef BOOL (daNpcMoiR_c::*Action2Fn)(void*);
47 typedef BOOL (daNpcMoiR_c::*EventFn)(int);
48
49 enum Animation {
50 /* 0x00 */ ANM_NONE,
51 /* 0x01 */ ANM_F_TALK_A,
52 /* 0x02 */ ANM_F_HOLD_S,
53 /* 0x03 */ ANM_3,
54 /* 0x04 */ ANM_F_SURPRISED,
56 /* 0x06 */ ANM_F_TAKAJO_HI,
57 /* 0x07 */ ANM_FH_HOLD_S,
58 /* 0x08 */ ANM_FH_SERIOUS,
59 /* 0x09 */ ANM_FH_HOLD_S_2,
60 /* 0x0A */ ANM_FH_TAKAJO_HI,
61 /* 0x0B */ ANM_WAIT_A,
62 /* 0x0C */ ANM_WAIT_B,
63 /* 0x0D */ ANM_WAIT_C,
64 /* 0x0E */ ANM_TALK_A,
65 /* 0x0F */ ANM_STEP,
66 /* 0x10 */ ANM_LOOK_AROUND,
67 /* 0x11 */ ANM_FUE,
68 /* 0x12 */ ANM_TAKAJO_NI,
70 /* 0x14 */ ANM_SURPRISED,
71 /* 0x15 */ ANM_SQUAREUP,
73 /* 0x17 */ ANM_DRIVEAWAY,
74 /* 0x18 */ ANM_TAKEOFF,
75 /* 0x19 */ ANM_TAKING_OFF,
77 /* 0x1B */ ANM_TAKE_MET,
78 /* 0x1C */ ANM_SIT,
79 /* 0x1D */ ANM_SIT_TALK,
80 /* 0x1E */ ANM_TAKEOFF_SIT,
83 /* 0x21 */ ANM_TAKE_MET_SIT,
84 /* 0x22 */ ANM_TAKAJO,
85 /* 0x23 */ ANM_TAKAJO_WAIT,
86 /* 0x24 */ ANM_TAKAJO_HI,
88 /* 0x26 */ ANM_RUN,
89 };
90
92 /* 0x00 */ EXPR_F_TALK_A,
93 /* 0x03 */ EXPR_F_HOLD_S_LOOP = 0x3,
94 /* 0x0A */ EXPR_ANM_3 = 0xA,
95 /* 0x0B */ EXPR_FH_SERIOUS,
96 /* 0x0C */ EXPR_F_TAKAJO_HI,
98 /* 0x0E */ EXPR_FH_HOLD_S,
99 /* 0x0F */ EXPR_F_SURPRISED,
100 /* 0x10 */ EXPR_F_HOLD_S,
102 /* 0x12 */ EXPR_NONE,
103 };
104
106 /* 0x0 */ EXPR_BTP_MOIR,
107 /* 0x1 */ EXPR_BTP_FH_SERIOUS
108 };
109
110 enum Motion {
111 /* 0x00 */ MOT_WAIT_A,
112 /* 0x01 */ MOT_TALK_A,
113 /* 0x02 */ MOT_WAIT_B,
114 /* 0x07 */ MOT_WAIT_C = 0x7,
115 /* 0x14 */ MOT_LOOK_AROUND_LOOP = 0x14,
117 /* 0x16 */ MOT_SIT,
118 /* 0x17 */ MOT_SIT_TALK,
119 /* 0x18 */ MOT_SQUAREUP,
120 /* 0x19 */ MOT_DRIVEAWAY,
121 /* 0x1A */ MOT_TAKEOFF,
122 /* 0x1B */ MOT_TAKING_OFF,
124 /* 0x1D */ MOT_TAKE_MET,
125 /* 0x1E */ MOT_TAKEOFF_SIT,
129 /* 0x22 */ MOT_RUN,
131 /* 0x24 */ MOT_TAKAJO_HI,
132 /* 0x25 */ MOT_SURPRISED,
134 /* 0x27 */ MOT_TAKAJO_NI,
135 /* 0x28 */ MOT_FUE,
136 /* 0x29 */ MOT_LOOK_AROUND,
137 /* 0x2A */ MOT_STEP,
138 };
139
140 enum Mode {
141 /* 0x0 */ MODE_SIT,
142 /* 0x1 */ MODE_STAND,
143 /* 0x2 */ MODE_2,
144 };
145
146 daNpcMoiR_c();
147 ~daNpcMoiR_c();
149 int CreateHeap();
150 int Delete();
151 int Execute();
152 int Draw();
154 static int createHeapCallBack(fopAc_ac_c*);
155 static int ctrlJointCallBack(J3DJoint*, int);
156 inline bool setExpressionAnm(int, bool);
157 inline bool setExpressionBtp(int);
158 void setMotionAnm(int, f32);
159 void reset();
160 inline void setWaitAction();
161 bool wait_type0(void*);
162 void setMotion(int, f32, int);
163 void setExpression(int, f32);
164 bool wait_type1(void*);
165 bool wait_type2(void*);
166 bool talk(void*);
167 BOOL multiTalk(void*);
168 bool fight(void*);
169 bool demo(void*);
170 bool leave(void*);
171 inline BOOL EvCut_Introduction(int);
172 inline BOOL EvCut_Appear(int);
173 inline BOOL EvCut_Appear2(int);
174 inline void setParam();
175 inline BOOL main();
176 inline void checkHeadGear();
177 inline void playMotion();
178 inline BOOL ctrlBtk();
179 inline void setAttnPos();
180 inline void lookat();
181 inline void drawOtherMdls();
182 inline BOOL drawDbgInfo();
183
185
186 s16 getMessageNo() { return (fopAcM_GetParam(this) >> 8) & 0xFFFF; }
187
189 field_0xe08 = 3;
190
191 if (mAction) {
192 (this->*mAction)(NULL);
193 }
194
195 field_0xe08 = 0;
196 mAction = action;
197
198 if (mAction) {
199 (this->*mAction)(NULL);
200 }
201
202 return 1;
203 }
204
205 inline void playExpression();
206 inline BOOL step(s16, int);
207 inline void setExpressionTalkAfter();
208 inline BOOL chkFindPlayer();
209 inline bool chkAction(ActionFn action) {
210 return action == mAction;
211 }
212 inline void setLookMode(int i_lookMode);
213 inline void searchActors();
214
215 static EventFn mEvtSeqList[4];
216
217private:
218 /* 0xB48 */ Z2Creature mSound;
223 /* 0xC9C */ NPC_MOIR_HIO_CLASS* mpHIO;
225 /* 0xDDC */ ActionFn mAction;
228 /* 0xDFC */ int field_0xdfc;
229 /* 0xE00 */ int field_0xe00;
230 /* 0xE04 */ s16 mMsgNo;
231 /* 0xE06 */ s16 mLookMode;
232 /* 0xE08 */ u16 field_0xe08;
233 /* 0xE0A */ bool mWearHelmet;
234 /* 0xE0B */ u8 mMode;
235};
236
237STATIC_ASSERT(sizeof(daNpcMoiR_c) == 0xe0c);
238
239#endif /* D_A_NPC_MOIR_H */
cPhs__Step
Definition c_phase.h:8
Definition J3DJoint.h:63
Definition J3DModel.h:43
MtxP getAnmMtx(int jointNo)
Definition J3DModel.h:105
Definition JORMContext.h:120
Definition Z2Creature.h:7
Definition d_cc_d.h:461
Definition d_a_npc4.h:14
Definition d_a_npc4.h:379
Definition d_a_npc4.h:292
Definition d_a_npc4.h:54
mDoExt_McaMorfSO * mAnm_p
Definition d_a_npc4.h:56
Definition d_a_npc_moir.h:30
daNpcMoiR_HIOParam m
Definition d_a_npc_moir.h:35
daNpcMoiR_HIO_c()
Definition d_a_npc_moir.cpp:249
void genMessage(JORMContext *)
Definition d_a_npc_moir.cpp:253
Definition d_a_npc_moir.h:22
virtual ~daNpcMoiR_Param_c()
Definition d_a_npc_moir.h:24
static daNpcMoiR_HIOParam const m
Definition d_a_npc_moir.h:209
Rusl (Resistance)
Definition d_a_npc_moir.h:43
void playMotion()
Definition d_a_npc_moir.cpp:801
bool wait_type2(void *)
Definition d_a_npc_moir.cpp:1240
Motion
Definition d_a_npc_moir.h:110
@ MOT_TAKING_OFF_SIT_TALK
Definition d_a_npc_moir.h:127
@ MOT_TAKAJO_HI_WAIT
Definition d_a_npc_moir.h:130
@ MOT_SQUAREUP
Definition d_a_npc_moir.h:119
@ MOT_WAIT_C
Definition d_a_npc_moir.h:114
@ MOT_TALK_A
Definition d_a_npc_moir.h:112
@ MOT_STEP
Definition d_a_npc_moir.h:137
@ MOT_SIT
Definition d_a_npc_moir.h:117
@ MOT_TAKING_OFF_TALK
Definition d_a_npc_moir.h:123
@ MOT_TAKE_MET
Definition d_a_npc_moir.h:124
@ MOT_TAKING_OFF_SIT
Definition d_a_npc_moir.h:126
@ MOT_TAKEOFF
Definition d_a_npc_moir.h:121
@ MOT_LOOK_AROUND
Definition d_a_npc_moir.h:136
@ MOT_DRIVEAWAY
Definition d_a_npc_moir.h:120
@ MOT_RUN
Definition d_a_npc_moir.h:129
@ MOT_TAKE_MET_SIT
Definition d_a_npc_moir.h:128
@ MOT_TAKEOFF_SIT
Definition d_a_npc_moir.h:125
@ MOT_FUE
Definition d_a_npc_moir.h:135
@ MOT_TAKAJO_WAIT_NI
Definition d_a_npc_moir.h:116
@ MOT_WAIT_A
Definition d_a_npc_moir.h:111
@ MOT_SURPRISED
Definition d_a_npc_moir.h:132
@ MOT_LOOK_AROUND_LOOP
Definition d_a_npc_moir.h:115
@ MOT_SQUAREUP_STEP
Definition d_a_npc_moir.h:133
@ MOT_WAIT_B
Definition d_a_npc_moir.h:113
@ MOT_TAKING_OFF
Definition d_a_npc_moir.h:122
@ MOT_TAKAJO_HI
Definition d_a_npc_moir.h:131
@ MOT_TAKAJO_NI
Definition d_a_npc_moir.h:134
@ MOT_SIT_TALK
Definition d_a_npc_moir.h:118
fpc_ProcID field_0xdf8
Definition d_a_npc_moir.h:227
void setParam()
Definition d_a_npc_moir.cpp:1831
bool wait_type0(void *)
Definition d_a_npc_moir.cpp:1067
int Delete()
Definition d_a_npc_moir.cpp:446
ActionFn mAction
Definition d_a_npc_moir.h:225
daNpcF_ActorMngr_c mActorMngr[4]
Definition d_a_npc_moir.h:222
void checkHeadGear()
Definition d_a_npc_moir.cpp:1875
Expression_BTP
Definition d_a_npc_moir.h:105
@ EXPR_BTP_MOIR
Definition d_a_npc_moir.h:106
@ EXPR_BTP_FH_SERIOUS
Definition d_a_npc_moir.h:107
int Draw()
Definition d_a_npc_moir.cpp:457
void searchActors()
Definition d_a_npc_moir.cpp:521
void reset()
Definition d_a_npc_moir.cpp:698
dCcD_Cyl field_0xca0
Definition d_a_npc_moir.h:224
int ctrlJoint(J3DJoint *, J3DModel *)
Definition d_a_npc_moir.cpp:464
BOOL main()
Definition d_a_npc_moir.cpp:1858
void setAttnPos()
Definition d_a_npc_moir.cpp:1939
BOOL step(s16, int)
Definition d_a_npc_moir.cpp:1020
void setExpressionTalkAfter()
Definition d_a_npc_moir.cpp:1294
s16 mMsgNo
Definition d_a_npc_moir.h:230
s16 mLookMode
Definition d_a_npc_moir.h:231
daNpcF_Lookat_c mLookat
Definition d_a_npc_moir.h:221
Mode
Definition d_a_npc_moir.h:140
@ MODE_2
Definition d_a_npc_moir.h:143
@ MODE_STAND
Definition d_a_npc_moir.h:142
@ MODE_SIT
Definition d_a_npc_moir.h:141
BOOL chkFindPlayer()
Definition d_a_npc_moir.cpp:989
int field_0xdfc
Definition d_a_npc_moir.h:228
request_of_phase_process_class mPhase[2]
Definition d_a_npc_moir.h:226
bool setExpressionAnm(int, bool)
Definition d_a_npc_moir.cpp:572
MtxP getHandRMtx()
Definition d_a_npc_moir.h:184
Expression
Definition d_a_npc_moir.h:91
@ EXPR_FH_SERIOUS
Definition d_a_npc_moir.h:95
@ EXPR_F_SURPRISED
Definition d_a_npc_moir.h:99
@ EXPR_FH_HOLD_S
Definition d_a_npc_moir.h:98
@ EXPR_FH_HOLD_S_LOOP
Definition d_a_npc_moir.h:101
@ EXPR_F_TALK_A
Definition d_a_npc_moir.h:92
@ EXPR_NONE
Definition d_a_npc_moir.h:102
@ EXPR_F_HOLD_S
Definition d_a_npc_moir.h:100
@ EXPR_F_HOLD_S_LOOP
Definition d_a_npc_moir.h:93
@ EXPR_ANM_3
Definition d_a_npc_moir.h:94
@ EXPR_FH_TAKAJO_HI
Definition d_a_npc_moir.h:97
@ EXPR_F_TAKAJO_HI
Definition d_a_npc_moir.h:96
s16 getMessageNo()
Definition d_a_npc_moir.h:186
BOOL multiTalk(void *)
Definition d_a_npc_moir.cpp:1383
~daNpcMoiR_c()
Definition d_a_npc_moir.cpp:272
bool talk(void *)
Definition d_a_npc_moir.cpp:1310
void lookat()
Definition d_a_npc_moir.cpp:923
void setMotion(int, f32, int)
Definition d_a_npc_moir.cpp:1123
u8 mMode
Definition d_a_npc_moir.h:234
void setLookMode(int i_lookMode)
Definition d_a_npc_moir.cpp:1014
cPhs__Step Create()
Definition d_a_npc_moir.cpp:287
bool fight(void *)
Definition d_a_npc_moir.cpp:1439
BOOL ctrlBtk()
Definition d_a_npc_moir.cpp:1921
int Execute()
Definition d_a_npc_moir.cpp:452
int CreateHeap()
Definition d_a_npc_moir.cpp:386
static int createHeapCallBack(fopAc_ac_c *)
Definition d_a_npc_moir.cpp:503
bool chkAction(ActionFn action)
Definition d_a_npc_moir.h:209
bool setExpressionBtp(int)
Definition d_a_npc_moir.cpp:649
NPC_MOIR_HIO_CLASS * mpHIO
Definition d_a_npc_moir.h:223
daNpcF_MatAnm_c * mpMatAnm
Definition d_a_npc_moir.h:220
daNpcMoiR_c()
Definition d_a_npc_moir.cpp:270
bool wait_type1(void *)
Definition d_a_npc_moir.cpp:1142
int field_0xe00
Definition d_a_npc_moir.h:229
BOOL EvCut_Appear2(int)
Definition d_a_npc_moir.cpp:1697
static int ctrlJointCallBack(J3DJoint *, int)
Definition d_a_npc_moir.cpp:508
BOOL(daNpcMoiR_c::*) EventFn(int)
Definition d_a_npc_moir.h:47
void drawOtherMdls()
Definition d_a_npc_moir.cpp:2000
J3DModel * mpHeadgearModel
Definition d_a_npc_moir.h:219
bool demo(void *)
Definition d_a_npc_moir.cpp:1505
void setExpression(int, f32)
Definition d_a_npc_moir.cpp:1133
Animation
Definition d_a_npc_moir.h:49
@ ANM_SQUAREUP_STEP
Definition d_a_npc_moir.h:72
@ ANM_RUN
Definition d_a_npc_moir.h:88
@ ANM_TAKAJO
Definition d_a_npc_moir.h:84
@ ANM_TAKAJO_HI_WAIT
Definition d_a_npc_moir.h:87
@ ANM_TAKEOFF_SIT
Definition d_a_npc_moir.h:80
@ ANM_TAKING_OFF_SIT_TALK
Definition d_a_npc_moir.h:82
@ ANM_FH_SERIOUS
Definition d_a_npc_moir.h:58
@ ANM_WAIT_B
Definition d_a_npc_moir.h:62
@ ANM_WAIT_A
Definition d_a_npc_moir.h:61
@ ANM_3
Definition d_a_npc_moir.h:53
@ ANM_TAKING_OFF_SIT
Definition d_a_npc_moir.h:81
@ ANM_TAKAJO_WAIT
Definition d_a_npc_moir.h:85
@ ANM_DRIVEAWAY
Definition d_a_npc_moir.h:73
@ ANM_FH_TAKAJO_HI
Definition d_a_npc_moir.h:60
@ ANM_TAKING_OFF_TALK
Definition d_a_npc_moir.h:76
@ ANM_TAKING_OFF
Definition d_a_npc_moir.h:75
@ ANM_TAKAJO_NI
Definition d_a_npc_moir.h:68
@ ANM_F_HOLD_S
Definition d_a_npc_moir.h:52
@ ANM_STEP
Definition d_a_npc_moir.h:65
@ ANM_SQUAREUP
Definition d_a_npc_moir.h:71
@ ANM_FH_HOLD_S
Definition d_a_npc_moir.h:57
@ ANM_SIT_TALK
Definition d_a_npc_moir.h:79
@ ANM_F_TALK_A
Definition d_a_npc_moir.h:51
@ ANM_FUE
Definition d_a_npc_moir.h:67
@ ANM_TAKAJO_WAIT_NI
Definition d_a_npc_moir.h:69
@ ANM_TALK_A
Definition d_a_npc_moir.h:64
@ ANM_FH_HOLD_S_2
Definition d_a_npc_moir.h:59
@ ANM_F_HOLD_S_LOOP
Definition d_a_npc_moir.h:55
@ ANM_LOOK_AROUND
Definition d_a_npc_moir.h:66
@ ANM_SURPRISED
Definition d_a_npc_moir.h:70
@ ANM_NONE
Definition d_a_npc_moir.h:50
@ ANM_TAKEOFF
Definition d_a_npc_moir.h:74
@ ANM_TAKE_MET_SIT
Definition d_a_npc_moir.h:83
@ ANM_TAKAJO_HI
Definition d_a_npc_moir.h:86
@ ANM_TAKE_MET
Definition d_a_npc_moir.h:77
@ ANM_F_SURPRISED
Definition d_a_npc_moir.h:54
@ ANM_F_TAKAJO_HI
Definition d_a_npc_moir.h:56
@ ANM_SIT
Definition d_a_npc_moir.h:78
@ ANM_WAIT_C
Definition d_a_npc_moir.h:63
void setMotionAnm(int, f32)
Definition d_a_npc_moir.cpp:673
u16 field_0xe08
Definition d_a_npc_moir.h:232
BOOL(daNpcMoiR_c::*) Action2Fn(void *)
Definition d_a_npc_moir.h:46
BOOL drawDbgInfo()
Definition d_a_npc_moir.cpp:2009
bool leave(void *)
Definition d_a_npc_moir.cpp:1559
BOOL EvCut_Introduction(int)
Definition d_a_npc_moir.cpp:1598
void playExpression()
Definition d_a_npc_moir.cpp:749
static EventFn mEvtSeqList[4]
Definition d_a_npc_moir.h:263
bool mWearHelmet
Definition d_a_npc_moir.h:233
BOOL EvCut_Appear(int)
Definition d_a_npc_moir.cpp:1625
Z2Creature mSound
Definition d_a_npc_moir.h:218
void setWaitAction()
Definition d_a_npc_moir.cpp:729
bool(daNpcMoiR_c::*) ActionFn(void *)
Definition d_a_npc_moir.h:45
int setAction(ActionFn action)
Definition d_a_npc_moir.h:188
Definition f_op_actor.h:230
J3DModel * getModel()
Definition m_Do_ext.h:350
Definition m_Do_hostIO.h:27
static void action(b_bh_class *i_this)
Definition d_a_b_bh.cpp:1017
STATIC_ASSERT(sizeof(daNpcMoiR_c)==0xe0c)
f32(* MtxP)[4]
Definition mtx.h:38
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
u32 fopAcM_GetParam(const void *i_actor)
Definition f_op_actor_mng.h:192
unsigned int fpc_ProcID
Definition f_pc_base.h:10
Definition d_a_npc4.h:423
Definition d_a_npc_moir.h:15
daNpcF_HIOParam common
Definition d_a_npc_moir.h:16
s16 horizontal_eye_movement_range
Definition d_a_npc_moir.h:18
f32 demo_start_dist
Definition d_a_npc_moir.h:17
u8 demo_start_area
Definition d_a_npc_moir.h:19
Definition c_phase.h:17