Skip to content

Commit f63b2db

Browse files
authored
d_a_npc_uri almost matching (#2400)
* d_a_npc_uri almost matching * Fix various issues * Fix
1 parent c5f9d8d commit f63b2db

File tree

5 files changed

+1832
-1969
lines changed

5 files changed

+1832
-1969
lines changed

include/d/actor/d_a_npc.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -409,7 +409,7 @@ class daNpcT_Path_c {
409409

410410
bool chkReverse() { return mDirection == 1; }
411411

412-
u16 getNumPnts() {
412+
int getNumPnts() {
413413
dPath* path = mpRoomPath;
414414
return path->m_num;
415415
}

include/d/actor/d_a_npc_uri.h

Lines changed: 149 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -11,80 +11,179 @@
1111
* @details
1212
*
1313
*/
14-
class daNpc_Uri_c : public fopAc_ac_c {
14+
class daNpc_Uri_c : public daNpcT_c {
1515
public:
16+
typedef int (daNpc_Uri_c::*cutFunc)(int);
17+
typedef int (daNpc_Uri_c::*actionFunc)(void*);
18+
19+
enum Type {
20+
TYPE_0,
21+
TYPE_1,
22+
TYPE_2,
23+
TYPE_3,
24+
TYPE_4,
25+
TYPE_5,
26+
TYPE_6,
27+
};
28+
1629
/* 80B267AC */ ~daNpc_Uri_c();
17-
/* 80B268F8 */ void create();
18-
/* 80B26BE4 */ void CreateHeap();
19-
/* 80B2708C */ void Delete();
20-
/* 80B270C0 */ void Execute();
21-
/* 80B270E0 */ void Draw();
22-
/* 80B27174 */ void createHeapCallBack(fopAc_ac_c*);
23-
/* 80B27194 */ void ctrlJointCallBack(J3DJoint*, int);
24-
/* 80B271EC */ void getType();
25-
/* 80B27260 */ void isDelete();
30+
/* 80B268F8 */ int create();
31+
/* 80B26BE4 */ int CreateHeap();
32+
/* 80B2708C */ int Delete();
33+
/* 80B270C0 */ int Execute();
34+
/* 80B270E0 */ int Draw();
35+
/* 80B27174 */ static int createHeapCallBack(fopAc_ac_c*);
36+
/* 80B27194 */ static int ctrlJointCallBack(J3DJoint*, int);
37+
/* 80B271EC */ u8 getType();
38+
/* 80B27260 */ int isDelete();
2639
/* 80B272F0 */ void reset();
2740
/* 80B27750 */ void afterJntAnm(int);
2841
/* 80B27820 */ void setParam();
29-
/* 80B27994 */ void checkChangeEvt();
42+
/* 80B27994 */ BOOL checkChangeEvt();
3043
/* 80B27B3C */ void setAfterTalkMotion();
3144
/* 80B27BF0 */ void srchActors();
32-
/* 80B27C8C */ void evtTalk();
33-
/* 80B27D2C */ void evtCutProc();
45+
/* 80B27C8C */ BOOL evtTalk();
46+
/* 80B27D2C */ BOOL evtCutProc();
3447
/* 80B27DF4 */ void action();
3548
/* 80B27F14 */ void beforeMove();
3649
/* 80B27FD8 */ void setAttnPos();
3750
/* 80B28318 */ void setCollision();
38-
/* 80B284D4 */ bool drawDbgInfo();
51+
/* 80B284D4 */ int drawDbgInfo();
3952
/* 80B284DC */ void drawOtherMdl();
40-
/* 80B285B4 */ void afterSetMotionAnm(int, int, f32, int);
53+
/* 80B285B4 */ bool afterSetMotionAnm(int, int, f32, int);
4154
/* 80B285EC */ void changeBck(int*, int*);
4255
/* 80B28618 */ void changeBtp(int*, int*);
43-
/* 80B28644 */ void selectAction();
44-
/* 80B28794 */ void chkAction(int (daNpc_Uri_c::*)(void*));
45-
/* 80B287C0 */ void setAction(int (daNpc_Uri_c::*)(void*));
46-
/* 80B28868 */ void chkPlayerCarryBasket();
47-
/* 80B288DC */ void chkPlayerGetWoodShield();
48-
/* 80B28910 */ void getTutorialCond(cXyz);
49-
/* 80B28FB8 */ void cutConversation(int);
50-
/* 80B29198 */ void cutStartCarryTutorial(int);
51-
/* 80B293C0 */ void cutEndCarryTutorial(int);
52-
/* 80B296B8 */ void cutConversationWithMoi(int);
53-
/* 80B2985C */ void cutFindWolf(int);
54-
/* 80B29BA4 */ void cutMeetingAgain(int);
55-
/* 80B29EA0 */ void krun(void*);
56-
/* 80B2A1B4 */ void wait(void*);
57-
/* 80B2AB60 */ void walk(void*);
58-
/* 80B2B24C */ void sitWait(void*);
59-
/* 80B2B7C0 */ void talk(void*);
60-
/* 80B2CC64 */ daNpc_Uri_c(daNpcT_faceMotionAnmData_c const*, daNpcT_motionAnmData_c const*,
61-
daNpcT_MotionSeqMngr_c::sequenceStepData_c const*, int,
62-
daNpcT_MotionSeqMngr_c::sequenceStepData_c const*, int,
63-
daNpcT_evtData_c const*, char**);
64-
/* 80B2CD44 */ s32 getEyeballMaterialNo();
65-
/* 80B2CD4C */ s32 getHeadJointNo();
66-
/* 80B2CD54 */ s32 getNeckJointNo();
67-
/* 80B2CD5C */ bool getBackboneJointNo();
68-
/* 80B2CD64 */ void checkChangeJoint(int);
69-
/* 80B2CD74 */ void checkRemoveJoint(int);
70-
/* 80B2CD84 */ s32 getFootLJointNo();
71-
/* 80B2CD8C */ s32 getFootRJointNo();
56+
/* 80B28644 */ int selectAction();
57+
/* 80B28794 */ int chkAction(int (daNpc_Uri_c::*)(void*));
58+
/* 80B287C0 */ int setAction(int (daNpc_Uri_c::*)(void*));
59+
/* 80B28868 */ BOOL chkPlayerCarryBasket();
60+
/* 80B288DC */ BOOL chkPlayerGetWoodShield();
61+
/* 80B28910 */ int getTutorialCond(cXyz);
62+
/* 80B28FB8 */ int cutConversation(int);
63+
/* 80B29198 */ int cutStartCarryTutorial(int);
64+
/* 80B293C0 */ int cutEndCarryTutorial(int);
65+
/* 80B296B8 */ int cutConversationWithMoi(int);
66+
/* 80B2985C */ int cutFindWolf(int);
67+
/* 80B29BA4 */ int cutMeetingAgain(int);
68+
/* 80B29EA0 */ int krun(void*);
69+
/* 80B2A1B4 */ int wait(void*);
70+
/* 80B2AB60 */ int walk(void*);
71+
/* 80B2B24C */ int sitWait(void*);
72+
/* 80B2B7C0 */ int talk(void*);
73+
/* 80B2CC64 */ daNpc_Uri_c(daNpcT_faceMotionAnmData_c const* param_1,
74+
daNpcT_motionAnmData_c const* param_2,
75+
daNpcT_MotionSeqMngr_c::sequenceStepData_c const* param_3,
76+
int param_4,
77+
daNpcT_MotionSeqMngr_c::sequenceStepData_c const* param_5,
78+
int param_6, daNpcT_evtData_c const* param_7, char** param_8)
79+
: daNpcT_c(param_1, param_2, param_3, param_4, param_5, param_6, param_7, param_8) {}
80+
/* 80B2CD44 */ s32 getEyeballMaterialNo() { return 2; }
81+
/* 80B2CD4C */ s32 getHeadJointNo() { return 4; }
82+
/* 80B2CD54 */ s32 getNeckJointNo() { return 3; }
83+
/* 80B2CD5C */ s32 getBackboneJointNo() { return 1; }
84+
/* 80B2CD64 */ BOOL checkChangeJoint(int param_0) { return param_0 == 4; }
85+
/* 80B2CD74 */ BOOL checkRemoveJoint(int param_0) { return param_0 == 8; }
86+
/* 80B2CD84 */ s32 getFootLJointNo() { return 25; }
87+
/* 80B2CD8C */ s32 getFootRJointNo() { return 28; }
88+
89+
int getFlowNodeNo() {
90+
u16 nodeNo = home.angle.x;
91+
if (nodeNo == 0xffff) {
92+
return -1;
93+
}
94+
return nodeNo;
95+
}
96+
97+
u8 getBitSW() { return (fopAcM_GetParam(this) & 0xff0000) >> 16; }
7298

73-
static void* mCutNameList[7];
74-
static u8 mCutList[84];
99+
u8 getPathID() { return (fopAcM_GetParam(this) & 0xff00) >> 8; }
100+
101+
static const char* mCutNameList[7];
102+
static cutFunc mCutList[7];
75103

76104
private:
77-
/* 0x568 */ u8 field_0x568[0x1018 - 0x568];
105+
/* 0x0E40 */ int field_0xe40;
106+
/* 0x0E44 */ J3DModel* mpModel[1];
107+
/* 0x0E48 */ dCcD_Cyl mCyl;
108+
/* 0x0F84 */ u8 mType;
109+
/* 0x0F88 */ daNpcT_ActorMngr_c mActorMngr[2];
110+
/* 0x0F98 */ daNpcT_Path_c mPath;
111+
/* 0x0FC0 */ actionFunc field_0xfc0[2];
112+
/* 0x0FD8 */ cXyz field_0xfd8;
113+
/* 0x0FE4 */ csXyz field_0xfe4;
114+
/* 0x0FEC */ int field_0xfec;
115+
/* 0x0FF0 */ int field_0xff0;
116+
/* 0x0FF4 */ int field_0xff4;
117+
/* 0x0FF8 */ int field_0xff8;
118+
/* 0x0FFC */ int field_0xffc;
119+
/* 0x1000 */ f32 field_0x1000;
120+
/* 0x1004 */ f32 field_0x1004;
121+
/* 0x1008 */ u8 field_0x1008;
122+
/* 0x1009 */ u8 field_0x1009;
123+
/* 0x100A */ u8 field_0x100a;
124+
/* 0x100B */ u8 field_0x100b;
125+
/* 0x100C */ u8 field_0x100c;
126+
/* 0x100D */ u8 field_0x100d;
127+
/* 0x100E */ u8 field_0x100e;
128+
/* 0x100F */ u8 field_0x100f;
129+
/* 0x1010 */ u8 field_0x1010;
130+
/* 0x1011 */ u8 field_0x1011;
131+
/* 0x1012 */ u8 field_0x1012;
132+
/* 0x1014 */ int field_0x1014;
78133
};
79134

80135
STATIC_ASSERT(sizeof(daNpc_Uri_c) == 0x1018);
81136

137+
struct daNpc_Uri_HIOParam {
138+
/* 0x00 */ f32 field_0x00;
139+
/* 0x04 */ f32 field_0x04;
140+
/* 0x08 */ f32 field_0x08;
141+
/* 0x0C */ f32 field_0x0c;
142+
/* 0x10 */ f32 field_0x10;
143+
/* 0x14 */ f32 field_0x14;
144+
/* 0x18 */ f32 field_0x18;
145+
/* 0x1C */ f32 field_0x1c;
146+
/* 0x20 */ f32 field_0x20;
147+
/* 0x24 */ f32 field_0x24;
148+
/* 0x28 */ f32 field_0x28;
149+
/* 0x2C */ f32 field_0x2c;
150+
/* 0x30 */ f32 field_0x30;
151+
/* 0x34 */ f32 field_0x34;
152+
/* 0x38 */ f32 field_0x38;
153+
/* 0x3C */ f32 field_0x3c;
154+
/* 0x40 */ f32 field_0x40;
155+
/* 0x44 */ f32 field_0x44;
156+
/* 0x48 */ s16 field_0x48;
157+
/* 0x4A */ s16 field_0x4a;
158+
/* 0x4C */ s16 field_0x4c;
159+
/* 0x4E */ s16 field_0x4e;
160+
/* 0x50 */ f32 field_0x50;
161+
/* 0x54 */ f32 field_0x54;
162+
/* 0x58 */ f32 field_0x58;
163+
/* 0x5C */ f32 field_0x5c;
164+
/* 0x60 */ s16 field_0x60;
165+
/* 0x62 */ s16 field_0x62;
166+
/* 0x64 */ u8 field_0x64[8];
167+
/* 0x6C */ f32 field_0x6c;
168+
/* 0x70 */ u8 field_0x70[28];
169+
/* 0x8C */ s16 field_0x8c;
170+
/* 0x8E */ s16 field_0x8e;
171+
/* 0x90 */ s16 field_0x90;
172+
/* 0x92 */ s16 field_0x92;
173+
/* 0x94 */ s16 field_0x94;
174+
/* 0x96 */ s16 field_0x96;
175+
/* 0x98 */ f32 field_0x98;
176+
/* 0x9C */ f32 field_0x9c;
177+
/* 0xA0 */ f32 field_0xa0;
178+
/* 0xA4 */ f32 field_0xa4;
179+
/* 0xA8 */ f32 field_0xa8;
180+
};
181+
82182
class daNpc_Uri_Param_c {
83183
public:
84-
/* 80B2CD94 */ ~daNpc_Uri_Param_c();
184+
/* 80B2CD94 */ virtual ~daNpc_Uri_Param_c() {};
85185

86-
static u8 const m[172];
186+
static daNpc_Uri_HIOParam const m;
87187
};
88188

89-
90189
#endif /* D_A_NPC_URI_H */

include/d/d_com_inf_game.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1658,7 +1658,7 @@ inline bool dComIfGs_isCollectCrystal(u8 i_item) {
16581658
return g_dComIfG_gameInfo.info.getPlayer().getCollect().isCollectCrystal(i_item);
16591659
}
16601660

1661-
inline bool dComIfGs_isCollectShield(u8 i_item) {
1661+
inline BOOL dComIfGs_isCollectShield(u8 i_item) {
16621662
return g_dComIfG_gameInfo.info.getPlayer().getCollect().isCollect(2, i_item);
16631663
}
16641664

src/d/actor/d_a_npc.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ void daNpcT_Path_c::reverse() {
267267

268268
/* 80145DD0-80145E38 140710 0068+00 2/2 0/0 8/8 .text setNextIdx__13daNpcT_Path_cFi */
269269
int daNpcT_Path_c::setNextIdx(int param_0) {
270-
u16 numPnts = getNumPnts();
270+
int numPnts = getNumPnts();
271271

272272
if (chkClose() != 0 && numPnts == param_0) {
273273
return daNpcT_incIdx(param_0, mIdx, 1, mDirection);

0 commit comments

Comments
 (0)