Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
Loading...
Searching...
No Matches
d_a_npc_bou.h
Go to the documentation of this file.
1#ifndef D_A_NPC_BOU_H
2#define D_A_NPC_BOU_H
3
4#include "d/actor/d_a_npc.h"
5#include <cstring>
6
9 /* 0x8C */ f32 field_0x8c; // 16.0f
10 /* 0x90 */ f32 field_0x90; // 1000.0f
11 /* 0x94 */ f32 field_0x94; // 500.0f
12 /* 0x98 */ f32 field_0x98; // -500.0f
13};
14
16public:
17 virtual ~daNpc_Bou_Param_c() {}
18
19 static const daNpc_Bou_HIOParam m;
20 };
21
22#if DEBUG
24public:
26 virtual ~daNpc_Bou_HIO_c() {}
27
28 void listenPropertyEvent(const JORPropertyEvent*);
29
30 void genMessage(JORMContext*);
31
33};
34#define NPC_BOU_HIO_CLASS daNpc_Bou_HIO_c
35#else
36#define NPC_BOU_HIO_CLASS daNpc_Bou_Param_c
37#endif
38
47class daNpc_Bou_c : public daNpcT_c {
48public:
49 typedef int (daNpc_Bou_c::*cutFunc)(int);
50 typedef int (daNpc_Bou_c::*actionFunc)(void*);
51
60
62 int create();
63 int CreateHeap();
64 int Delete();
65 int Execute();
66 int Draw();
67 static int createHeapCallBack(fopAc_ac_c*);
68 static int ctrlJointCallBack(J3DJoint*, int);
69 static void* srchCow(void*, void*);
71 u8 getType();
72 int isDelete();
73 void reset();
74 void srchActors();
75 int selectAction();
76 int chkAction(int (daNpc_Bou_c::*)(void*));
77 int setAction(int (daNpc_Bou_c::*)(void*));
78 int cutWildGoat(int);
79 int cutWildGoatSuccess(int);
80 int cutWildGoatFailure(int);
81 int cutSpeakTo(int);
84 int cutFindWolf(int);
85 int cutMeetingAgain(int);
86 int wait(void*);
87 int talkwithJagar(void*);
88 int talk(void*);
90 daNpcT_MotionSeqMngr_c::sequenceStepData_c const* param_3, int param_4,
91 daNpcT_MotionSeqMngr_c::sequenceStepData_c const* param_5, int param_6,
92 daNpcT_evtData_c const* param_7, char** param_8) :
93 daNpcT_c(param_1, param_2, param_3, param_4, param_5, param_6, param_7, param_8)
94 {}
95
96 virtual int checkChangeJoint(int param_0) { return param_0 == 4; }
97 virtual int checkRemoveJoint(int param_0) { return param_0 == 8; }
98 virtual s32 getBackboneJointNo() { return 1; }
99 virtual s32 getNeckJointNo() { return 3; }
100 virtual s32 getHeadJointNo() { return 4; }
101 virtual u16 getEyeballMaterialNo() { return 1; }
102 virtual void afterJntAnm(int);
103 virtual void setParam();
104 virtual BOOL checkChangeEvt();
105 virtual BOOL evtTalk();
106 virtual BOOL evtEndProc();
107 virtual BOOL evtCutProc();
108 virtual void setAfterTalkMotion();
109 virtual void action();
110 virtual void beforeMove();
111 virtual void setAttnPos();
112 virtual void setCollision();
113 virtual int drawDbgInfo();
114 virtual void changeAnm(int*, int*);
115
116 static char* mCutNameList[9];
117 static cutFunc mCutList[9];
118
120 u16 nodeNo = home.angle.x;
121 if (nodeNo == 0xffff) {
122 return -1;
123 }
124 return nodeNo;
125 }
126
127 BOOL chkFindWolf() {
130 mpHIO->m.common.search_distance, mpHIO->m.common.fov,
131 mpHIO->m.common.search_height, mpHIO->m.common.search_depth, 1);
132 }
133
134 int chkCondition(int i_val) {
135 if (mStagger.checkStagger()) {
136 return false;
137 } else if (i_val != 0) {
138 return true;
139 } else {
140 if (mMotionSeqMngr.getNo() == 3 ||
141 mMotionSeqMngr.getNo() == 2 ||
142 mMotionSeqMngr.getNo() == 4) {
143 if (mMotionSeqMngr.getStepNo() > 0) {
144 return true;
145 }
146 } else if (mMotionSeqMngr.getNo() == 1) {
147 return true;
148 }
149 }
150 return false;
151 }
152
153 BOOL speakTo() {
154 if (mType == 4) {
155 if (current.pos.absXZ(daPy_getPlayerActorClass()->current.pos) < 1100.0f && strlen(mpEvtData[5].eventName) != 0) {
156 if (strlen(mpArcNames[mpEvtData[5].num]) != 0) {
159 }
161 mEvtId = dComIfGp_getEventManager().getEventIdx(this, mpEvtData[5].eventName, 0xFF);
162 fopAcM_orderOtherEventId(this, mEvtId, 0xFF, 0xFFFF, 4, 1);
163 return 1;
164 }
165 }
166
167 return 0;
168 }
169
170private:
171 /* 0xE40 */ NPC_BOU_HIO_CLASS* mpHIO;
172 /* 0xE44 */ dCcD_Cyl mCyl1;
173 /* 0xF80 */ u8 mType;
178 /* 0xFDC */ int field_0xfdc;
179 /* 0xFE0 */ int field_0xfe0;
180 /* 0xFE4 */ int field_0xfe4;
181 /* 0xFE8 */ u8 field_0xfe8[0xFF4 - 0xFE8];
182 /* 0xFF4 */ u8 field_0xff4;
183 /* 0xFF5 */ u8 field_0xff5[0xFF8 - 0xFF5];
184 /* 0xFF8 */ u8 field_0xff8;
185};
186
187STATIC_ASSERT(sizeof(daNpc_Bou_c) == 0xffc);
188
189
190#endif /* D_A_NPC_BOU_H */
Definition d_cc_d.h:472
bool setObjectArchive(char *arcname)
Definition d_event_manager.cpp:331
s16 getEventIdx(const char *eventName, u8 mapToolID, s32 roomNo)
Definition d_event_manager.cpp:822
char * getArchiveName()
Definition f_op_actor.h:226
void setArchiveName(char *name)
Definition f_op_actor.h:221
Definition d_a_npc.h:31
int checkStagger()
Definition d_a_npc.h:463
int getStepNo()
Definition d_a_npc.h:90
int getNo()
Definition d_a_npc.h:88
Definition d_a_npc.h:146
Definition d_a_npc.h:517
char ** mpArcNames
Definition d_a_npc.h:522
csXyz mCurAngle
Definition d_a_npc.h:559
daNpcT_MotionSeqMngr_c mMotionSeqMngr
Definition d_a_npc.h:547
s16 mEvtId
Definition d_a_npc.h:599
daNpcT_evtData_c const * mpEvtData
Definition d_a_npc.h:521
BOOL chkFindWolf(s16, int, int, f32, f32, f32, f32, BOOL)
Definition d_a_npc.cpp:2358
daNpcT_DmgStagger_c mStagger
Definition d_a_npc.h:551
Definition d_a_npc_bou.h:23
daNpc_Bou_HIO_c()
Definition d_a_npc_bou.cpp:174
virtual ~daNpc_Bou_HIO_c()
Definition d_a_npc_bou.h:26
daNpc_Bou_HIOParam m
Definition d_a_npc_bou.h:32
void genMessage(JORMContext *)
Definition d_a_npc_bou.cpp:182
void listenPropertyEvent(const JORPropertyEvent *)
Definition d_a_npc_bou.cpp:178
Definition d_a_npc_bou.h:15
static const daNpc_Bou_HIOParam m
Definition d_a_npc_bou.h:160
virtual ~daNpc_Bou_Param_c()
Definition d_a_npc_bou.h:17
Mayor Bo.
Definition d_a_npc_bou.h:47
BOOL chkFindWolf()
Definition d_a_npc_bou.h:127
actionFunc field_0xfd0
Definition d_a_npc_bou.h:177
virtual void changeAnm(int *, int *)
Definition d_a_npc_bou.cpp:729
static void * srchCow(void *, void *)
Definition d_a_npc_bou.cpp:315
virtual void setCollision()
Definition d_a_npc_bou.cpp:690
virtual int drawDbgInfo()
Definition d_a_npc_bou.cpp:725
int(daNpc_Bou_c::*) cutFunc(int)
Definition d_a_npc_bou.h:49
actionFunc field_0xfc4
Definition d_a_npc_bou.h:176
int getFlowNodeNo()
Definition d_a_npc_bou.h:119
virtual int checkChangeJoint(int param_0)
Definition d_a_npc_bou.h:96
int selectAction()
Definition d_a_npc_bou.cpp:747
fopAc_ac_c * getCowP()
Definition d_a_npc_bou.cpp:325
virtual s32 getHeadJointNo()
Definition d_a_npc_bou.h:100
daNpcT_Path_c field_0xf9c
Definition d_a_npc_bou.h:175
virtual void afterJntAnm(int)
Definition d_a_npc_bou.cpp:416
static cutFunc mCutList[9]
Definition d_a_npc_bou.h:134
int isDelete()
Definition d_a_npc_bou.cpp:358
daNpc_Bou_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_bou.h:89
virtual s32 getNeckJointNo()
Definition d_a_npc_bou.h:99
~daNpc_Bou_c()
Definition d_a_npc_bou.cpp:146
int talkwithJagar(void *)
Definition d_a_npc_bou.cpp:1530
int cutWildGoatFailure(int)
Definition d_a_npc_bou.cpp:970
int(daNpc_Bou_c::*) actionFunc(void *)
Definition d_a_npc_bou.h:50
virtual BOOL evtCutProc()
Definition d_a_npc_bou.cpp:592
int CreateHeap()
Definition d_a_npc_bou.cpp:250
int chkCondition(int i_val)
Definition d_a_npc_bou.h:134
virtual BOOL evtEndProc()
Definition d_a_npc_bou.cpp:588
static char * mCutNameList[9]
Definition d_a_npc_bou.h:122
int Delete()
Definition d_a_npc_bou.cpp:281
int talk(void *)
Definition d_a_npc_bou.cpp:1558
virtual int checkRemoveJoint(int param_0)
Definition d_a_npc_bou.h:97
int setAction(int(daNpc_Bou_c::*)(void *))
Definition d_a_npc_bou.cpp:768
virtual s32 getBackboneJointNo()
Definition d_a_npc_bou.h:98
virtual BOOL evtTalk()
Definition d_a_npc_bou.cpp:578
int cutFindWolf(int)
Definition d_a_npc_bou.cpp:1177
u8 field_0xfe8[0xFF4 - 0xFE8]
Definition d_a_npc_bou.h:181
virtual void setAttnPos()
Definition d_a_npc_bou.cpp:665
int chkAction(int(daNpc_Bou_c::*)(void *))
Definition d_a_npc_bou.cpp:764
int field_0xfe4
Definition d_a_npc_bou.h:180
void srchActors()
Definition d_a_npc_bou.cpp:547
virtual u16 getEyeballMaterialNo()
Definition d_a_npc_bou.h:101
int cutWildGoat(int)
Definition d_a_npc_bou.cpp:783
daNpcT_ActorMngr_c mActorMngr[3]
Definition d_a_npc_bou.h:174
int Draw()
Definition d_a_npc_bou.cpp:291
int cutSpeakTo(int)
Definition d_a_npc_bou.cpp:1029
Type
Definition d_a_npc_bou.h:52
@ TYPE_3
Definition d_a_npc_bou.h:56
@ TYPE_1
Definition d_a_npc_bou.h:54
@ TYPE_2
Definition d_a_npc_bou.h:55
@ TYPE_5
Definition d_a_npc_bou.h:58
@ TYPE_0
Definition d_a_npc_bou.h:53
@ TYPE_4
Definition d_a_npc_bou.h:57
u8 field_0xff4
Definition d_a_npc_bou.h:182
virtual BOOL checkChangeEvt()
Definition d_a_npc_bou.cpp:483
int create()
Definition d_a_npc_bou.cpp:187
virtual void setAfterTalkMotion()
Definition d_a_npc_bou.cpp:531
void reset()
Definition d_a_npc_bou.cpp:396
u8 getType()
Definition d_a_npc_bou.cpp:341
virtual void action()
Definition d_a_npc_bou.cpp:607
int cutConfidentialConversation(int)
Definition d_a_npc_bou.cpp:1122
static int ctrlJointCallBack(J3DJoint *, int)
Definition d_a_npc_bou.cpp:303
int wait(void *)
Definition d_a_npc_bou.cpp:1435
dCcD_Cyl mCyl1
Definition d_a_npc_bou.h:172
static int createHeapCallBack(fopAc_ac_c *)
Definition d_a_npc_bou.cpp:299
u8 field_0xff5[0xFF8 - 0xFF5]
Definition d_a_npc_bou.h:183
int cutWildGoatSuccess(int)
Definition d_a_npc_bou.cpp:920
int field_0xfdc
Definition d_a_npc_bou.h:178
int cutMeetingAgain(int)
Definition d_a_npc_bou.cpp:1269
virtual void beforeMove()
Definition d_a_npc_bou.cpp:654
int cutConversationWithBou(int)
Definition d_a_npc_bou.cpp:1085
NPC_BOU_HIO_CLASS * mpHIO
Definition d_a_npc_bou.h:171
u8 mType
Definition d_a_npc_bou.h:173
int field_0xfe0
Definition d_a_npc_bou.h:179
virtual void setParam()
Definition d_a_npc_bou.cpp:426
BOOL speakTo()
Definition d_a_npc_bou.h:153
u8 field_0xff8
Definition d_a_npc_bou.h:184
int Execute()
Definition d_a_npc_bou.cpp:287
Definition f_op_actor.h:271
actor_place home
Definition f_op_actor.h:290
dEvt_info_c eventInfo
Definition f_op_actor.h:279
actor_place current
Definition f_op_actor.h:292
Definition m_Do_hostIO.h:26
u8 daNpcT_getDistTableIdx(int param_0, int param_1)
Definition d_a_npc.cpp:2876
STATIC_ASSERT(sizeof(daNpc_Bou_c)==0xffc)
daPy_py_c * daPy_getPlayerActorClass()
Definition d_a_player.h:1258
dEvent_manager_c & dComIfGp_getEventManager()
Definition d_com_inf_game.h:2679
int cXyz int * param_2
Definition d_path.cpp:106
s32 fopAcM_orderOtherEventId(fopAc_ac_c *i_actor, s16 i_eventID, u8 i_mapToolID, u16 param_3, u16 i_priority, u16 i_flag)
s16 x
Definition c_sxyz.h:7
s16 y
Definition c_sxyz.h:7
csXyz angle
Definition f_op_actor.h:247
cXyz pos
Definition f_op_actor.h:246
f32 absXZ() const
Definition c_xyz.h:140
Definition d_a_npc.h:843
Definition d_a_npc.h:484
Definition d_a_npc.h:489
Definition d_a_npc.h:504
Definition d_a_npc_bou.h:7
f32 field_0x94
Definition d_a_npc_bou.h:11
f32 field_0x98
Definition d_a_npc_bou.h:12
f32 field_0x8c
Definition d_a_npc_bou.h:9
f32 field_0x90
Definition d_a_npc_bou.h:10
daNpcT_HIOParam common
Definition d_a_npc_bou.h:8