Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
Loading...
Searching...
No Matches
d_a_npc_jagar.h
Go to the documentation of this file.
1#ifndef D_A_NPC_JAGAR_H
2#define D_A_NPC_JAGAR_H
3
4#include "d/actor/d_a_npc.h"
5
23
25public:
27
28 static const daNpc_Jagar_HIOParam m;
29};
30
31#if DEBUG
41
42#define NPC_JAGAR_HIO_CLASS daNpc_Jagar_HIO_c
43#else
44#define NPC_JAGAR_HIO_CLASS daNpc_Jagar_Param_c
45#endif
46
47class daNpc_Jagar_c : public daNpcT_c {
48public:
49 typedef int (daNpc_Jagar_c::*cutFunc)(int);
50 typedef int (daNpc_Jagar_c::*actionFunc)(void*);
51
58
59 enum Joint {
60 /* 0x00 */ JNT_CENTER,
61 /* 0x01 */ JNT_BACKBONE1,
62 /* 0x02 */ JNT_BACKBONE2,
63 /* 0x03 */ JNT_NECK,
64 /* 0x04 */ JNT_HEAD,
65 /* 0x05 */ JNT_CHIN,
66 /* 0x06 */ JNT_MAYU_L,
67 /* 0x07 */ JNT_MAYU_R,
68 /* 0x08 */ JNT_MOUTH,
69 /* 0x09 */ JNT_SHOULDERL,
70 /* 0x0A */ JNT_ARML1,
71 /* 0x0B */ JNT_ARML2_1,
72 /* 0x0C */ JNT_HANDL_1,
73 /* 0x0D */ JNT_FINGERL,
74 /* 0x0E */ JNT_SHOULDERR,
75 /* 0x0F */ JNT_ARMR1,
76 /* 0x10 */ JNT_ARMR2_1,
77 /* 0x11 */ JNT_HANDR_1,
78 /* 0x12 */ JNT_FINGERR,
79 /* 0x13 */ JNT_WAIST,
80 /* 0x14 */ JNT_LEGL1,
81 /* 0x15 */ JNT_LEGL2,
82 /* 0x16 */ JNT_FOOTL,
83 /* 0x17 */ JNT_SKIRTL,
84 /* 0x18 */ JNT_LEGR1,
85 /* 0x19 */ JNT_LEGR2,
86 /* 0x1A */ JNT_FOOTR,
87 /* 0x1B */ JNT_SKIRTR,
88 /* 0x1C */ JNT_SKIRT1,
89 /* 0x1D */ JNT_SKIRT2,
90 };
91
92 enum Material {
93 /* 0x1 */ MAT_JAGA_EYEBALL = 0x1,
94 /* 0x2 */ MAT_JAGA_FACE_M,
95 /* 0x3 */ MAT_JAGA_M,
96 };
97
99 int create();
100 int CreateHeap();
101 int Delete();
102 int Execute();
103 int Draw();
104 static int createHeapCallBack(fopAc_ac_c*);
105 static int ctrlJointCallBack(J3DJoint*, int);
106 u8 getType();
107 int isDelete();
108 void reset();
109 void afterJntAnm(int);
110 void setParam();
112 void setAfterTalkMotion();
113 void srchActors();
114 BOOL evtTalk();
116 void action();
117 void beforeMove();
118 void setAttnPos();
119 void setCollision();
120 int drawDbgInfo();
121 void changeBtp(int*, int*);
122 int selectAction();
123 int chkAction(int (daNpc_Jagar_c::*)(void*));
124 int setAction(int (daNpc_Jagar_c::*)(void*));
125 int cutClimbUp(int);
126 int cutNeedYourHelp(int);
127 int cutAnger(int);
128 int cutConversationWithBou(int);
130 int cutFindWolf(int);
131 int chkSitMotion();
132 int chkSitMotion2();
133 int chkChuMotion();
134 int chkToMotion();
135 int wait(void*);
136 int talkwithBou(void*);
137 int talk(void*);
139 daNpcT_MotionSeqMngr_c::sequenceStepData_c const* param_3, int param_4,
141 daNpcT_evtData_c const* param_7, char** param_8) :
142 daNpcT_c(param_1, param_2, param_3, param_4, param_5, param_6, param_7, param_8)
143 {}
148 BOOL checkChangeJoint(int param_1) { return param_1 == JNT_HEAD; }
149 BOOL checkRemoveJoint(int param_1) { return param_1 == JNT_MOUTH; }
152
154 u16 nodeNo = home.angle.x;
155 if (nodeNo == 0xffff) {
156 return -1;
157 }
158 return nodeNo;
159 }
160
163 return daNpcT_c::chkFindWolf(mCurAngle.y, uVar3, field_0xfec, mpHIO->m.common.search_distance,
164 mpHIO->m.common.fov, mpHIO->m.common.search_height,
165 mpHIO->m.common.search_depth, 1);
166 }
167
168 int chkCondition(int i_val) {
169 if (mStagger.checkStagger()) {
170 return false;
171 } else if (i_val != 0) {
172 return true;
173 } else {
174 if (mMotionSeqMngr.getNo() == 7 ||
175 mMotionSeqMngr.getNo() == 6 ||
176 mMotionSeqMngr.getNo() == 8) {
177 if (mMotionSeqMngr.getStepNo() > 0) {
178 return true;
179 }
180 } else if (mMotionSeqMngr.getNo() == 5) {
181 return true;
182 }
183 }
184 return false;
185 }
186
188 mFaceMotionSeqMngr.setNo(1, -1.0f, 0, 0);
189 mMotionSeqMngr.setNo(7, -1.0f, 0, 0);
190 field_0xff8 = 0;
191 }
192
194 mFaceMotionSeqMngr.setNo(8, -1.0f, 0, 0);
195 if (0.0f < arg + (cM_rnd() - 0.5f)) {
196 mMotionSeqMngr.setNo(8, -1.0f, 0, 0);
197 } else {
198 mMotionSeqMngr.setNo(5, -1.0f, 0, 0);
199 }
200 }
201
202 void onListen() { mListen = 1; }
203 void offListen() { mListen = 0; }
204
205 u8 getPathID() { return (fopAcM_GetParam(this) & 0xff00) >> 8; }
206
207 int crashPumpkin(fopAc_ac_c* pumpkin_p) {
208 int reg_r30;
209 if (mType == 0 && fopAcM_GetName(pumpkin_p) == PROC_OBJ_PUMPKIN && !daNpcT_chkEvtBit(0xAE)
210 && daNpcT_chkEvtBit(0x25B) && !daNpcT_chkEvtBit(0x235)) {
211 ++field_0xffc;
212 reg_r30 = chkPointInArea(pumpkin_p->current.pos, current.pos, mpHIO->m.pumpkin_watch_range,
213 mpHIO->m.pumpkin_watch_Ymax, mpHIO->m.pumpkin_watch_Ymin, 0);
214 if (reg_r30) {
215 if (field_0xffc >= 4) {
216 daNpcT_onTmpBit(0x1B);
217 }
218
219 return 1;
220 }
221 }
222
223 return 0;
224 }
225
226 static char* mCutNameList[7];
227 static cutFunc mCutList[7];
228private:
229 /* 0x0E40 */ NPC_JAGAR_HIO_CLASS* mpHIO;
230 /* 0x0E44 */ dCcD_Cyl mCyl1;
231 /* 0x0F80 */ u8 mType;
236 /* 0x0FEC */ int field_0xfec;
237 /* 0x0FF0 */ int field_0xff0;
238 /* 0x0FF4 */ int field_0xff4;
239 /* 0x0FF8 */ int field_0xff8;
240 /* 0x0FFC */ int field_0xffc;
241 /* 0x1000 */ u8 field_0x1000;
242 /* 0x1001 */ u8 field_0x1001;
243 /* 0x1002 */ u8 field_0x1002;
244 /* 0x1003 */ u8 field_0x1003;
245 /* 0x1004 */ u8 field_0x1004;
246 /* 0x1005 */ u8 mListen;
247 /* 0x1008 */ int field_0x1008;
248};
249
250STATIC_ASSERT(sizeof(daNpc_Jagar_c) == 0x100c);
251
252#endif /* D_A_NPC_JAGAR_H */
f32 cM_rnd()
Definition c_math.cpp:180
Definition J3DJoint.h:63
Definition JORMContext.h:120
Definition d_cc_d.h:461
Definition d_a_npc.h:30
int checkStagger()
Definition d_a_npc.h:462
int getStepNo()
Definition d_a_npc.h:89
int getNo()
Definition d_a_npc.h:87
void setNo(int i_index, f32 i_morf, BOOL i_reset, int i_offset)
Definition d_a_npc.h:90
Definition d_a_npc.h:145
Definition d_a_npc.h:516
BOOL chkPointInArea(cXyz, cXyz, f32, f32, f32, s16)
Definition d_a_npc.cpp:2312
csXyz mCurAngle
Definition d_a_npc.h:558
daNpcT_MotionSeqMngr_c mMotionSeqMngr
Definition d_a_npc.h:546
daNpcT_MotionSeqMngr_c mFaceMotionSeqMngr
Definition d_a_npc.h:545
BOOL chkFindWolf(s16, int, int, f32, f32, f32, f32, BOOL)
Definition d_a_npc.cpp:2377
daNpcT_DmgStagger_c mStagger
Definition d_a_npc.h:550
Definition d_a_npc_jagar.h:32
daNpc_Jagar_HIOParam m
Definition d_a_npc_jagar.h:39
void listenPropertyEvent(const JORPropertyEvent *)
Definition d_a_npc_jagar.cpp:156
daNpc_Jagar_HIO_c()
Definition d_a_npc_jagar.cpp:152
void genMessage(JORMContext *)
Definition d_a_npc_jagar.cpp:160
Definition d_a_npc_jagar.h:24
virtual ~daNpc_Jagar_Param_c()
Definition d_a_npc_jagar.h:26
static const daNpc_Jagar_HIOParam m
Definition d_a_npc_jagar.h:140
Jaggle.
Definition d_a_npc_jagar.h:47
void setAfterTalkMotion()
Definition d_a_npc_jagar.cpp:641
u16 getEyeballMaterialNo()
Definition d_a_npc_jagar.h:144
int(daNpc_Jagar_c::*) cutFunc(int)
Definition d_a_npc_jagar.h:49
int wait(void *)
Definition d_a_npc_jagar.cpp:1379
actionFunc field_0xfe0
Definition d_a_npc_jagar.h:235
static int createHeapCallBack(fopAc_ac_c *)
Definition d_a_npc_jagar.cpp:441
int chkCondition(int i_val)
Definition d_a_npc_jagar.h:168
void beforeMove()
Definition d_a_npc_jagar.cpp:762
actionFunc field_0xfd4
Definition d_a_npc_jagar.h:234
int setAction(int(daNpc_Jagar_c::*)(void *))
Definition d_a_npc_jagar.cpp:874
BOOL checkRemoveJoint(int param_1)
Definition d_a_npc_jagar.h:149
dCcD_Cyl mCyl1
Definition d_a_npc_jagar.h:230
u8 getPathID()
Definition d_a_npc_jagar.h:205
int cutAnger(int)
Definition d_a_npc_jagar.cpp:1069
s32 getFootRJointNo()
Definition d_a_npc_jagar.h:151
int drawDbgInfo()
Definition d_a_npc_jagar.cpp:844
int chkToMotion()
Definition d_a_npc_jagar.cpp:1374
int field_0x1008
Definition d_a_npc_jagar.h:247
u8 field_0x1001
Definition d_a_npc_jagar.h:242
Type
Definition d_a_npc_jagar.h:52
@ TYPE_1
Definition d_a_npc_jagar.h:54
@ TYPE_2
Definition d_a_npc_jagar.h:55
@ TYPE_0
Definition d_a_npc_jagar.h:53
@ TYPE_3
Definition d_a_npc_jagar.h:56
int isDelete()
Definition d_a_npc_jagar.cpp:472
int cutConfidentialConversation(int)
Definition d_a_npc_jagar.cpp:1148
~daNpc_Jagar_c()
Definition d_a_npc_jagar.cpp:339
void offListen()
Definition d_a_npc_jagar.h:203
void action()
Definition d_a_npc_jagar.cpp:712
daNpcT_Path_c field_0xfac
Definition d_a_npc_jagar.h:233
s32 getHeadJointNo()
Definition d_a_npc_jagar.h:145
void reset()
Definition d_a_npc_jagar.cpp:494
BOOL chkFindWolf()
Definition d_a_npc_jagar.h:161
NPC_JAGAR_HIO_CLASS * mpHIO
Definition d_a_npc_jagar.h:229
int chkAction(int(daNpc_Jagar_c::*)(void *))
Definition d_a_npc_jagar.cpp:870
int Execute()
Definition d_a_npc_jagar.cpp:429
int talk(void *)
Definition d_a_npc_jagar.cpp:1701
u8 mType
Definition d_a_npc_jagar.h:231
void setSurpriseMotion()
Definition d_a_npc_jagar.h:187
Joint
Definition d_a_npc_jagar.h:59
@ JNT_FINGERR
Definition d_a_npc_jagar.h:78
@ JNT_LEGL1
Definition d_a_npc_jagar.h:80
@ JNT_NECK
Definition d_a_npc_jagar.h:63
@ JNT_MAYU_L
Definition d_a_npc_jagar.h:66
@ JNT_LEGR1
Definition d_a_npc_jagar.h:84
@ JNT_CHIN
Definition d_a_npc_jagar.h:65
@ JNT_ARML1
Definition d_a_npc_jagar.h:70
@ JNT_FINGERL
Definition d_a_npc_jagar.h:73
@ JNT_HANDR_1
Definition d_a_npc_jagar.h:77
@ JNT_LEGR2
Definition d_a_npc_jagar.h:85
@ JNT_FOOTL
Definition d_a_npc_jagar.h:82
@ JNT_SKIRT2
Definition d_a_npc_jagar.h:89
@ JNT_FOOTR
Definition d_a_npc_jagar.h:86
@ JNT_SHOULDERR
Definition d_a_npc_jagar.h:74
@ JNT_ARMR1
Definition d_a_npc_jagar.h:75
@ JNT_ARMR2_1
Definition d_a_npc_jagar.h:76
@ JNT_WAIST
Definition d_a_npc_jagar.h:79
@ JNT_SHOULDERL
Definition d_a_npc_jagar.h:69
@ JNT_BACKBONE2
Definition d_a_npc_jagar.h:62
@ JNT_HANDL_1
Definition d_a_npc_jagar.h:72
@ JNT_HEAD
Definition d_a_npc_jagar.h:64
@ JNT_ARML2_1
Definition d_a_npc_jagar.h:71
@ JNT_SKIRT1
Definition d_a_npc_jagar.h:88
@ JNT_LEGL2
Definition d_a_npc_jagar.h:81
@ JNT_SKIRTL
Definition d_a_npc_jagar.h:83
@ JNT_MAYU_R
Definition d_a_npc_jagar.h:67
@ JNT_BACKBONE1
Definition d_a_npc_jagar.h:61
@ JNT_CENTER
Definition d_a_npc_jagar.h:60
@ JNT_MOUTH
Definition d_a_npc_jagar.h:68
@ JNT_SKIRTR
Definition d_a_npc_jagar.h:87
u8 field_0x1000
Definition d_a_npc_jagar.h:241
int Draw()
Definition d_a_npc_jagar.cpp:433
int(daNpc_Jagar_c::*) actionFunc(void *)
Definition d_a_npc_jagar.h:50
u8 getType()
Definition d_a_npc_jagar.cpp:456
int cutFindWolf(int)
Definition d_a_npc_jagar.cpp:1216
int talkwithBou(void *)
Definition d_a_npc_jagar.cpp:1612
u8 field_0x1004
Definition d_a_npc_jagar.h:245
void setCollision()
Definition d_a_npc_jagar.cpp:806
int getFlowNodeNo()
Definition d_a_npc_jagar.h:153
int chkSitMotion2()
Definition d_a_npc_jagar.cpp:1349
u8 field_0x1003
Definition d_a_npc_jagar.h:244
void srchActors()
Definition d_a_npc_jagar.cpp:663
int cutNeedYourHelp(int)
Definition d_a_npc_jagar.cpp:927
void setAttnPos()
Definition d_a_npc_jagar.cpp:773
int field_0xff0
Definition d_a_npc_jagar.h:237
s32 getNeckJointNo()
Definition d_a_npc_jagar.h:146
s32 getFootLJointNo()
Definition d_a_npc_jagar.h:150
int field_0xff4
Definition d_a_npc_jagar.h:238
u8 mListen
Definition d_a_npc_jagar.h:246
int create()
Definition d_a_npc_jagar.cpp:346
int chkSitMotion()
Definition d_a_npc_jagar.cpp:1333
int field_0xffc
Definition d_a_npc_jagar.h:240
int field_0xff8
Definition d_a_npc_jagar.h:239
int cutClimbUp(int)
Definition d_a_npc_jagar.cpp:889
int chkChuMotion()
Definition d_a_npc_jagar.cpp:1361
void setParam()
Definition d_a_npc_jagar.cpp:537
static char * mCutNameList[7]
Definition d_a_npc_jagar.h:317
BOOL evtTalk()
Definition d_a_npc_jagar.cpp:690
int crashPumpkin(fopAc_ac_c *pumpkin_p)
Definition d_a_npc_jagar.h:207
daNpc_Jagar_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_jagar.h:138
static int ctrlJointCallBack(J3DJoint *, int)
Definition d_a_npc_jagar.cpp:445
BOOL checkChangeJoint(int param_1)
Definition d_a_npc_jagar.h:148
int selectAction()
Definition d_a_npc_jagar.cpp:856
void afterJntAnm(int)
Definition d_a_npc_jagar.cpp:527
s32 getBackboneJointNo()
Definition d_a_npc_jagar.h:147
void changeBtp(int *, int *)
Definition d_a_npc_jagar.cpp:848
void setListenMotion(f32 arg)
Definition d_a_npc_jagar.h:193
u8 field_0x1002
Definition d_a_npc_jagar.h:243
BOOL evtCutProc()
Definition d_a_npc_jagar.cpp:699
int field_0xfec
Definition d_a_npc_jagar.h:236
int cutConversationWithBou(int)
Definition d_a_npc_jagar.cpp:1118
static cutFunc mCutList[7]
Definition d_a_npc_jagar.h:327
BOOL checkChangeEvt()
Definition d_a_npc_jagar.cpp:605
Material
Definition d_a_npc_jagar.h:92
@ MAT_JAGA_FACE_M
Definition d_a_npc_jagar.h:94
@ MAT_JAGA_EYEBALL
Definition d_a_npc_jagar.h:93
@ MAT_JAGA_M
Definition d_a_npc_jagar.h:95
int Delete()
Definition d_a_npc_jagar.cpp:423
daNpcT_ActorMngr_c mActorMngr[5]
Definition d_a_npc_jagar.h:232
int CreateHeap()
Definition d_a_npc_jagar.cpp:394
void onListen()
Definition d_a_npc_jagar.h:202
Definition f_op_actor.h:230
actor_place home
Definition f_op_actor.h:249
actor_place current
Definition f_op_actor.h:251
Definition m_Do_hostIO.h:27
u8 daNpcT_getDistTableIdx(int param_0, int param_1)
Definition d_a_npc.cpp:2895
BOOL daNpcT_chkEvtBit(u32 i_no)
Definition d_a_npc.cpp:2907
void daNpcT_onTmpBit(u32 i_no)
Definition d_a_npc.cpp:2911
STATIC_ASSERT(sizeof(daNpc_Jagar_c)==0x100c)
@ PROC_OBJ_PUMPKIN
Definition d_procname.h:769
int BOOL
Definition types.h:33
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
u32 fopAcM_GetParam(const void *i_actor)
Definition f_op_actor_mng.h:192
s16 fopAcM_GetName(void *i_actor)
Definition f_op_actor_mng.h:152
Definition JORReflexible.h:10
s16 x
Definition c_sxyz.h:7
s16 y
Definition c_sxyz.h:7
csXyz angle
Definition f_op_actor.h:206
cXyz pos
Definition f_op_actor.h:205
Definition d_a_npc.h:836
Definition d_a_npc.h:483
Definition d_a_npc.h:488
Definition d_a_npc.h:503
Definition d_a_npc_jagar.h:15
daNpcT_HIOParam common
Definition d_a_npc_jagar.h:16
f32 running_speed
Definition d_a_npc_jagar.h:20
f32 pumpkin_watch_range
Definition d_a_npc_jagar.h:17
f32 pumpkin_watch_Ymin
Definition d_a_npc_jagar.h:19
f32 pumpkin_watch_Ymax
Definition d_a_npc_jagar.h:18
f32 hidden_state_release_dist
Definition d_a_npc_jagar.h:21