Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
Loading...
Searching...
No Matches
d_a_npc_hanjo.h
Go to the documentation of this file.
1#ifndef D_A_NPC_HANJO_H
2#define D_A_NPC_HANJO_H
3
4#include "d/actor/d_a_npc.h"
5
8 /* 0x8C */ f32 field_0x8c;
9 /* 0x90 */ f32 field_0x90;
10 /* 0x94 */ f32 field_0x94;
11 /* 0x98 */ f32 field_0x98;
12 /* 0x9C */ f32 field_0x9c;
13 /* 0xA0 */ f32 field_0xa0;
14 /* 0xA4 */ f32 field_0xa4;
15 /* 0xA8 */ f32 field_0xa8;
16 /* 0xAC */ s16 field_0xac;
17 /* 0xAE */ s16 field_0xae;
18 /* 0xB0 */ s16 field_0xb0;
19 /* 0xB2 */ s16 field_0xb2;
20};
21
23public:
25
26 static const daNpc_Hanjo_HIOParam m;
27};
28
29#if DEBUG
31public:
33
34 void listenPropertyEvent(const JORPropertyEvent* event);
35
37
39};
40
41#define NPC_HANJO_HIO_CLASS daNpc_Hanjo_HIO_c
42#else
43#define NPC_HANJO_HIO_CLASS daNpc_Hanjo_Param_c
44#endif
45
47public:
52 cXyz getPos() { return mPos; }
53 cXyz getOld() { return mOld; }
54 void posMoveF(fopAc_ac_c* param_1) {
55 cXyz cStack_48;
56 mOld = mPos;
57 if (mTmr != 0) {
58 cStack_48 = field_0x1c;
59 f32 dVar9 = mSpeedF * cM_ssin(mAngle.y);
60 f32 dVar10 = cStack_48.y + field_0x16c;
61 f32 dVar8 = mSpeedF * cM_scos(mAngle.y);
62 if (dVar10 < fopAcM_GetMaxFallSpeed(param_1)) {
63 dVar10 = fopAcM_GetMaxFallSpeed(param_1);
64 }
65 field_0x1c.set(dVar9, dVar10, dVar8);
67 mTmr--;
68 if (mTmr == 0) {
69 initialize();
70 }
71 }
72 }
73
74 void setPos(cXyz pos) {
75 mPos = pos;
76 mOld = pos;
77 }
78
79 void setAngle(csXyz angle) { mAngle = angle; }
80
81 dCcD_Sph* getSphP() { return &mSphere; }
82 f32 getSpeedF() { return mSpeedF; }
83 void setModel(J3DModel* model) { mModel = model; }
84 J3DModel* getModelP() { return mModel; }
85
86 int chkActive() {
87 if (mModel != NULL) {
88 return mTmr != 0;
89 }
90 return FALSE;
91 }
92
93 void initialize() {
94 mPos.setall(0.0f);
95 mOld = mPos;
96 field_0x1c.setall(0.0f);
97 mAngle.setall(0);
98 mSpeedF = 0;
99 field_0x16c = -3.0f;
100 mTmr = 0;
101 }
102
103 void setMtx(Mtx mtx) {
104 if (chkActive()) {
105 if (cM3d_IsZero(mSpeedF)) {
107 } else {
111 }
112 }
113 }
114
115 void setTmr(int tmr) { mTmr = tmr; }
116 void setVSpeed(f32 speed) { field_0x1c.y = speed; }
117 void setSpeedF(f32 speed) { mSpeedF = speed; }
118
119 /* 0x000 */ J3DModel* mModel;
120 /* 0x004 */ cXyz mOld;
121 /* 0x010 */ cXyz mPos;
122 /* 0x01C */ cXyz field_0x1c;
123 /* 0x028 */ csXyz mAngle;
124 /* 0x030 */ dCcD_Sph mSphere;
125 /* 0x168 */ f32 mSpeedF;
126 /* 0x16C */ f32 field_0x16c;
127 /* 0x170 */ int mTmr;
128};
129
138class daNpc_Hanjo_c : public daNpcT_c {
139public:
140 typedef int (daNpc_Hanjo_c::*cutFunc)(int);
141 typedef int (daNpc_Hanjo_c::*actionFunc)(void*);
142
152 int create();
153 int CreateHeap();
154 int Delete();
155 int Execute();
156 int Draw();
157 static int createHeapCallBack(fopAc_ac_c*);
158 static int ctrlJointCallBack(J3DJoint*, int);
159 u8 getType();
160 int isDelete();
161 void reset();
162 void afterJntAnm(int);
163 void setParam();
165 void setAfterTalkMotion();
166 void srchActors();
167 BOOL evtTalk();
169 void action();
170 void beforeMove();
171 void afterMoved();
172 void setAttnPos();
173 void setCollision();
174 int drawDbgInfo();
175 void drawOtherMdl();
176 int selectAction();
177 int chkAction(int (daNpc_Hanjo_c::*)(void*));
178 int setAction(int (daNpc_Hanjo_c::*)(void*));
179 void initShoot(int);
180 int shoot(int);
181 void initDive();
182 void dive();
183 int lookround(s16);
184 int commandToHawk();
186 int cutConversation(int);
187 int cutPursuitBee(int);
188 int cutAppearHawker(int);
189 int cutDive(int);
190 int wait(void*);
191 int throwStone(void*);
192 int takayose(void*);
193 int talk(void*);
195 daNpcT_MotionSeqMngr_c::sequenceStepData_c const* param_3, int param_4,
196 daNpcT_MotionSeqMngr_c::sequenceStepData_c const* param_5, int param_6,
197 daNpcT_evtData_c const* param_7, char** param_8) :
198 daNpcT_c(param_1, param_2, param_3, param_4, param_5, param_6, param_7, param_8)
199 {}
200 u16 getEyeballMaterialNo() { return 2; }
201 s32 getHeadJointNo() { return 4; }
202 s32 getNeckJointNo() { return 3; }
203 s32 getBackboneJointNo() { return 1; }
204 int checkChangeJoint(int param_1) { return param_1 == 4; }
205 int checkRemoveJoint(int param_1) { return param_1 == 8; }
206 s32 getFootLJointNo() { return 22; }
207 s32 getFootRJointNo() { return 26; }
208 MtxP getArmLMtx() { return mpMorf[0]->getModel()->getAnmMtx(11); }
209
211 u16 nodeNo = home.angle.x;
212 if (nodeNo == 0xffff) {
213 return -1;
214 }
215 return nodeNo;
216 }
217
218 u8 getPathID() { return (fopAcM_GetParam(this) & 0xff00) >> 8; }
219
221 static char* mCutNameList[6];
222 static cutFunc mCutList[6];
224private:
225 /* 0x0E40 */ NPC_HANJO_HIO_CLASS* mpHIO;
226 /* 0x0E44 */ J3DModel* mModel1;
227 /* 0x0E48 */ J3DModel* mModel2;
228 /* 0x0E4C */ dCcD_Cyl mCyl1;
229 /* 0x0F88 */ dCcD_Cyl mCyl2;
230 /* 0x10C4 */ u8 mType;
236 /* 0x16F8 */ cXyz field_0x16f8;
237 /* 0x1704 */ int field_0x1704;
238 /* 0x1708 */ int field_0x1708;
239 /* 0x170C */ int field_0x170c;
240 /* 0x1710 */ int field_0x1710;
241 /* 0x1714 */ int field_0x1714;
242 /* 0x1718 */ f32 field_0x1718;
243 /* 0x171C */ s16 field_0x171c;
244 /* 0x171E */ u8 field_0x171e;
245 /* 0x171F */ u8 field_0x171f;
246 /* 0x1720 */ u8 field_0x1720;
247 /* 0x1721 */ u8 field_0x1721;
248 /* 0x1722 */ u8 field_0x1722;
249 /* 0x1723 */ u8 field_0x1723;
250 /* 0x1724 */ u8 field_0x1724;
251 /* 0x1728 */ int field_0x1728;
252};
253
254STATIC_ASSERT(sizeof(daNpc_Hanjo_c) == 0x172c);
255
256#endif /* D_A_NPC_HANJO_H */
static Mtx mtx[10]
Definition c_lib.cpp:486
f32 cM_ssin(s16 x)
Definition c_math.h:30
f32 cM_scos(s16 x)
Definition c_math.h:26
Definition J3DJoint.h:66
Definition J3DModel.h:43
void setBaseTRMtx(Mtx m)
Definition J3DModel.h:90
MtxP getAnmMtx(int jointNo)
Definition J3DModel.h:105
Definition JORMContext.h:128
Definition c_sxyz.h:10
void setall(s16 val)
Definition c_sxyz.h:30
Definition d_cc_d.h:472
Definition d_cc_d.h:487
Definition d_a_npc.h:30
Definition d_a_npc.h:145
Definition d_a_npc.h:516
mDoExt_McaMorfSO * mpMorf[2]
Definition d_a_npc.h:522
Definition d_a_npc_hanjo.h:46
cXyz mOld
Definition d_a_npc_hanjo.h:120
void setPos(cXyz pos)
Definition d_a_npc_hanjo.h:74
void setTmr(int tmr)
Definition d_a_npc_hanjo.h:115
int chkActive()
Definition d_a_npc_hanjo.h:86
cXyz mPos
Definition d_a_npc_hanjo.h:121
f32 getSpeedF()
Definition d_a_npc_hanjo.h:82
cXyz getPos()
Definition d_a_npc_hanjo.h:52
cXyz field_0x1c
Definition d_a_npc_hanjo.h:122
dCcD_Sph mSphere
Definition d_a_npc_hanjo.h:124
void setSpeedF(f32 speed)
Definition d_a_npc_hanjo.h:117
cXyz getOld()
Definition d_a_npc_hanjo.h:53
dCcD_Sph * getSphP()
Definition d_a_npc_hanjo.h:81
f32 mSpeedF
Definition d_a_npc_hanjo.h:125
J3DModel * mModel
Definition d_a_npc_hanjo.h:119
int mTmr
Definition d_a_npc_hanjo.h:127
void setVSpeed(f32 speed)
Definition d_a_npc_hanjo.h:116
void setMtx(Mtx mtx)
Definition d_a_npc_hanjo.h:103
void setModel(J3DModel *model)
Definition d_a_npc_hanjo.h:83
f32 field_0x16c
Definition d_a_npc_hanjo.h:126
void setAngle(csXyz angle)
Definition d_a_npc_hanjo.h:79
void initialize()
Definition d_a_npc_hanjo.h:93
J3DModel * getModelP()
Definition d_a_npc_hanjo.h:84
~daNpc_HanjoStone_c()
Definition d_a_npc_hanjo.h:48
daNpc_HanjoStone_c()
Definition d_a_npc_hanjo.h:49
void posMoveF(fopAc_ac_c *param_1)
Definition d_a_npc_hanjo.h:54
csXyz mAngle
Definition d_a_npc_hanjo.h:123
Definition d_a_npc_hanjo.h:30
daNpc_Hanjo_HIO_c()
Definition d_a_npc_hanjo.cpp:162
void listenPropertyEvent(const JORPropertyEvent *event)
Definition d_a_npc_hanjo.cpp:166
void genMessage(JORMContext *)
Definition d_a_npc_hanjo.cpp:170
daNpc_Hanjo_HIOParam m
Definition d_a_npc_hanjo.h:38
Definition d_a_npc_hanjo.h:22
virtual ~daNpc_Hanjo_Param_c()
Definition d_a_npc_hanjo.h:24
static const daNpc_Hanjo_HIOParam m
Definition d_a_npc_hanjo.h:143
Hanch.
Definition d_a_npc_hanjo.h:138
int commandToHawk()
Definition d_a_npc_hanjo.cpp:1033
u8 getType()
Definition d_a_npc_hanjo.cpp:359
int cutDive(int)
Definition d_a_npc_hanjo.cpp:1450
BOOL checkChangeEvt()
Definition d_a_npc_hanjo.cpp:484
static int ctrlJointCallBack(J3DJoint *, int)
Definition d_a_npc_hanjo.cpp:348
s32 getNeckJointNo()
Definition d_a_npc_hanjo.h:202
@ TYPE_1
Definition d_a_npc_hanjo.h:145
@ TYPE_0
Definition d_a_npc_hanjo.h:144
@ TYPE_4
Definition d_a_npc_hanjo.h:148
@ TYPE_3
Definition d_a_npc_hanjo.h:147
@ TYPE_2
Definition d_a_npc_hanjo.h:146
actionFunc field_0x16e0
Definition d_a_npc_hanjo.h:234
void beforeMove()
Definition d_a_npc_hanjo.cpp:637
int field_0x170c
Definition d_a_npc_hanjo.h:239
int Delete()
Definition d_a_npc_hanjo.cpp:325
void dive()
Definition d_a_npc_hanjo.cpp:942
~daNpc_Hanjo_c()
Definition d_a_npc_hanjo.cpp:176
int wait(void *)
Definition d_a_npc_hanjo.cpp:1553
int CreateHeap()
Definition d_a_npc_hanjo.cpp:251
int field_0x1704
Definition d_a_npc_hanjo.h:237
u8 getPathID()
Definition d_a_npc_hanjo.h:218
int checkChangeJoint(int param_1)
Definition d_a_npc_hanjo.h:204
void drawOtherMdl()
Definition d_a_npc_hanjo.cpp:799
int Execute()
Definition d_a_npc_hanjo.cpp:332
int create()
Definition d_a_npc_hanjo.cpp:191
int field_0x1714
Definition d_a_npc_hanjo.h:241
s32 getBackboneJointNo()
Definition d_a_npc_hanjo.h:203
void setAfterTalkMotion()
Definition d_a_npc_hanjo.cpp:542
int selectAction()
Definition d_a_npc_hanjo.cpp:837
u8 field_0x1724
Definition d_a_npc_hanjo.h:250
int(daNpc_Hanjo_c::*) actionFunc(void *)
Definition d_a_npc_hanjo.h:141
static cutFunc mCutList[6]
Definition d_a_npc_hanjo.h:130
int setAction(int(daNpc_Hanjo_c::*)(void *))
Definition d_a_npc_hanjo.cpp:863
dCcD_Cyl mCyl1
Definition d_a_npc_hanjo.h:228
void initShoot(int)
Definition d_a_npc_hanjo.cpp:876
void afterJntAnm(int)
Definition d_a_npc_hanjo.cpp:433
BOOL evtTalk()
Definition d_a_npc_hanjo.cpp:585
int cutAppearHawker(int)
Definition d_a_npc_hanjo.cpp:1313
s32 getFootRJointNo()
Definition d_a_npc_hanjo.h:207
J3DModel * mModel1
Definition d_a_npc_hanjo.h:226
int field_0x1728
Definition d_a_npc_hanjo.h:251
void srchActors()
Definition d_a_npc_hanjo.cpp:560
int chkAction(int(daNpc_Hanjo_c::*)(void *))
Definition d_a_npc_hanjo.cpp:859
int cutPursuitBee(int)
Definition d_a_npc_hanjo.cpp:1178
daNpcT_Path_c field_0x10e8
Definition d_a_npc_hanjo.h:232
s16 field_0x171c
Definition d_a_npc_hanjo.h:243
static dCcD_SrcGObjInf const mStoneCcDObjInfo
Definition d_a_npc_hanjo.h:152
void setParam()
Definition d_a_npc_hanjo.cpp:443
int takayose(void *)
Definition d_a_npc_hanjo.cpp:1746
int(daNpc_Hanjo_c::*) cutFunc(int)
Definition d_a_npc_hanjo.h:140
u8 mType
Definition d_a_npc_hanjo.h:230
cXyz field_0x16f8
Definition d_a_npc_hanjo.h:236
daNpc_HanjoStone_c mStones[4]
Definition d_a_npc_hanjo.h:233
void setCollision()
Definition d_a_npc_hanjo.cpp:726
int isDelete()
Definition d_a_npc_hanjo.cpp:374
f32 field_0x1718
Definition d_a_npc_hanjo.h:242
BOOL evtCutProc()
Definition d_a_npc_hanjo.cpp:594
static dCcD_SrcSph mStoneCcDSph
Definition d_a_npc_hanjo.h:139
MtxP getArmLMtx()
Definition d_a_npc_hanjo.h:208
int checkRemoveJoint(int param_1)
Definition d_a_npc_hanjo.h:205
dCcD_Cyl mCyl2
Definition d_a_npc_hanjo.h:229
u16 getEyeballMaterialNo()
Definition d_a_npc_hanjo.h:200
int lookround(s16)
Definition d_a_npc_hanjo.cpp:1004
s32 getHeadJointNo()
Definition d_a_npc_hanjo.h:201
J3DModel * mModel2
Definition d_a_npc_hanjo.h:227
int getFlowNodeNo()
Definition d_a_npc_hanjo.h:210
u8 field_0x1722
Definition d_a_npc_hanjo.h:248
u8 field_0x171f
Definition d_a_npc_hanjo.h:245
int field_0x1710
Definition d_a_npc_hanjo.h:240
void initDive()
Definition d_a_npc_hanjo.cpp:935
int cutConversationAboutSaru(int)
Definition d_a_npc_hanjo.cpp:1064
int field_0x1708
Definition d_a_npc_hanjo.h:238
int Draw()
Definition d_a_npc_hanjo.cpp:336
u8 field_0x171e
Definition d_a_npc_hanjo.h:244
int talk(void *)
Definition d_a_npc_hanjo.cpp:1886
void action()
Definition d_a_npc_hanjo.cpp:608
static char * mCutNameList[6]
Definition d_a_npc_hanjo.h:121
u8 field_0x1723
Definition d_a_npc_hanjo.h:249
daNpc_Hanjo_c(daNpcT_faceMotionAnmData_c const *param_1, daNpcT_motionAnmData_c const *param_2, daNpcT_MotionSeqMngr_c::sequenceStepData_c const *param_3, int param_4, daNpcT_MotionSeqMngr_c::sequenceStepData_c const *param_5, int param_6, daNpcT_evtData_c const *param_7, char **param_8)
Definition d_a_npc_hanjo.h:194
int shoot(int)
Definition d_a_npc_hanjo.cpp:888
u8 field_0x1720
Definition d_a_npc_hanjo.h:246
void setAttnPos()
Definition d_a_npc_hanjo.cpp:683
int cutConversation(int)
Definition d_a_npc_hanjo.cpp:1099
int drawDbgInfo()
Definition d_a_npc_hanjo.cpp:795
s32 getFootLJointNo()
Definition d_a_npc_hanjo.h:206
u8 field_0x1721
Definition d_a_npc_hanjo.h:247
actionFunc field_0x16ec
Definition d_a_npc_hanjo.h:235
int throwStone(void *)
Definition d_a_npc_hanjo.cpp:1675
void afterMoved()
Definition d_a_npc_hanjo.cpp:668
void reset()
Definition d_a_npc_hanjo.cpp:394
daNpcT_ActorMngr_c field_0x10c8[4]
Definition d_a_npc_hanjo.h:231
NPC_HANJO_HIO_CLASS * mpHIO
Definition d_a_npc_hanjo.h:225
static int createHeapCallBack(fopAc_ac_c *)
Definition d_a_npc_hanjo.cpp:344
Definition f_op_actor.h:243
actor_place home
Definition f_op_actor.h:262
J3DModel * getModel()
Definition m_Do_ext.h:427
Definition m_Do_hostIO.h:26
static MtxP get()
Definition m_Do_mtx.h:241
static void ZXYrotM(csXyz const &xyz)
Definition m_Do_mtx.cpp:400
static void transS(cXyz const &xyz)
Definition m_Do_mtx.cpp:360
Type
Definition d_a_e_gm.cpp:65
STATIC_ASSERT(sizeof(daNpc_Hanjo_c)==0x172c)
f32 Mtx[3][4]
Definition mtx.h:25
f32(* MtxP)[4]
Definition mtx.h:38
u32 fopAcM_GetParam(const void *i_actor)
Definition f_op_actor_mng.h:204
f32 fopAcM_GetMaxFallSpeed(const fopAc_ac_c *i_actor)
Definition f_op_actor_mng.h:368
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
signed long s32
Definition types.h:11
unsigned char u8
Definition types.h:8
bool cM3d_IsZero(f32 f)
Definition c_m3d.h:93
Definition JORReflexible.h:10
s16 x
Definition c_sxyz.h:7
s16 y
Definition c_sxyz.h:7
f32 y
Definition mtx.h:14
csXyz angle
Definition f_op_actor.h:219
Definition c_xyz.h:7
void set(f32 pX, f32 pY, f32 pZ)
Definition c_xyz.h:98
void setall(f32 f)
Definition c_xyz.h:114
Definition d_cc_d.h:87
Definition d_cc_d.h:94
Definition d_a_npc.h:842
Definition d_a_npc.h:483
Definition d_a_npc.h:488
Definition d_a_npc.h:503
Definition d_a_npc_hanjo.h:6
s16 field_0xb0
Definition d_a_npc_hanjo.h:18
f32 field_0xa4
Definition d_a_npc_hanjo.h:14
s16 field_0xb2
Definition d_a_npc_hanjo.h:19
f32 field_0xa0
Definition d_a_npc_hanjo.h:13
f32 field_0x9c
Definition d_a_npc_hanjo.h:12
f32 field_0xa8
Definition d_a_npc_hanjo.h:15
s16 field_0xae
Definition d_a_npc_hanjo.h:17
s16 field_0xac
Definition d_a_npc_hanjo.h:16
f32 field_0x98
Definition d_a_npc_hanjo.h:11
f32 field_0x90
Definition d_a_npc_hanjo.h:9
f32 field_0x94
Definition d_a_npc_hanjo.h:10
f32 field_0x8c
Definition d_a_npc_hanjo.h:8
daNpcT_HIOParam common
Definition d_a_npc_hanjo.h:7