Skip to content

Commit 3c79fdd

Browse files
authored
d_a_npc_fairy_seirei Equivalent (#2438)
* Prepare pulling main * 100% match, equivalent only * Remove line change * Adressed review comments and clang formatting
1 parent 958916a commit 3c79fdd

File tree

3 files changed

+364
-856
lines changed

3 files changed

+364
-856
lines changed

configure.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1543,7 +1543,7 @@ def MatchingFor(*versions) -> bool:
15431543
ActorRel(MatchingFor("GZ2E01"), "d_a_kytag14"),
15441544
ActorRel(NonMatching, "d_a_mg_fish"),
15451545
ActorRel(NonMatching, "d_a_npc_besu"),
1546-
ActorRel(NonMatching, "d_a_npc_fairy_seirei"),
1546+
ActorRel(Equivalent, "d_a_npc_fairy_seirei"),
15471547
ActorRel(MatchingFor("GZ2E01"), "d_a_npc_fish"),
15481548
ActorRel(NonMatching, "d_a_npc_henna"),
15491549
ActorRel(NonMatching, "d_a_npc_kakashi"),

include/d/actor/d_a_npc_fairy_seirei.h

Lines changed: 52 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -11,51 +11,79 @@
1111
* @details
1212
*
1313
*/
14-
class daNpc_FairySeirei_c : public fopAc_ac_c {
14+
class daNpc_FairySeirei_c : public daNpcT_c {
1515
public:
16+
typedef int (daNpc_FairySeirei_c::*cutFunc)(int);
17+
typedef int (daNpc_FairySeirei_c::*actionFunc)(int);
18+
1619
/* 8053FF6C */ ~daNpc_FairySeirei_c();
17-
/* 8054006C */ void create();
18-
/* 80540298 */ void Delete();
19-
/* 805402CC */ void Execute();
20-
/* 805402EC */ bool Draw();
21-
/* 805402F4 */ void isDelete();
20+
/* 8054006C */ int create();
21+
/* 80540298 */ int Delete();
22+
/* 805402CC */ int Execute();
23+
/* 805402EC */ int Draw();
24+
/* 805402F4 */ int isDelete();
2225
/* 80540334 */ void reset();
2326
/* 8054048C */ void setParam();
2427
/* 805405B0 */ void srchActors();
25-
/* 805405B4 */ void evtTalk();
26-
/* 805406BC */ void evtCutProc();
28+
/* 805405B4 */ BOOL evtTalk();
29+
/* 805406BC */ BOOL evtCutProc();
2730
/* 80540784 */ void action();
2831
/* 8054080C */ void beforeMove();
2932
/* 80540884 */ void setCollision();
3033
/* 80540988 */ void setAttnPos();
31-
/* 80540A30 */ bool drawDbgInfo();
32-
/* 80540A38 */ void selectAction();
33-
/* 80540A80 */ void setAction(int (daNpc_FairySeirei_c::*)(int));
34+
/* 80540A30 */ BOOL drawDbgInfo();
35+
/* 80540A38 */ bool selectAction();
36+
/* 80540A80 */ bool setAction(actionFunc);
3437
/* 80540B28 */ void setPrtcls();
35-
/* 80540C54 */ void wait(int);
36-
/* 80540CC0 */ void talk(int);
38+
/* 80540C54 */ int wait(int);
39+
/* 80540CC0 */ int talk(int);
3740
/* 80540E10 */ void _to_FairyCave();
38-
/* 80541BE4 */ daNpc_FairySeirei_c(daNpcT_faceMotionAnmData_c const*,
39-
daNpcT_motionAnmData_c const*,
40-
daNpcT_MotionSeqMngr_c::sequenceStepData_c const*, int,
41-
daNpcT_MotionSeqMngr_c::sequenceStepData_c const*, int,
42-
daNpcT_evtData_c const*, char**);
41+
/* 80541BE4 */ daNpc_FairySeirei_c(daNpcT_faceMotionAnmData_c const* param_1,
42+
daNpcT_motionAnmData_c const* param_2,
43+
daNpcT_MotionSeqMngr_c::sequenceStepData_c const* param_3,
44+
int param_4,
45+
daNpcT_MotionSeqMngr_c::sequenceStepData_c const* param_5,
46+
int param_6, daNpcT_evtData_c const* param_7, char** param_8)
47+
: daNpcT_c(param_1, param_2, param_3, param_4, param_5, param_6, param_7, param_8) {}
48+
49+
u8 getType() { return fopAcM_GetParam(this) & 0xFF; }
50+
51+
int getFlowNodeNo() {
52+
u16 nodeNo = home.angle.x;
53+
if (nodeNo == 0xffff) {
54+
return -1;
55+
}
56+
return nodeNo;
57+
}
58+
59+
BOOL chkAction(actionFunc i_action) { return (mExecuteFunc == i_action); }
4360

44-
static void* mCutNameList;
45-
static u8 mCutList[12];
61+
void ptcl_se() { mSound.startCreatureSoundLevel(Z2SE_FAIRY_STAY, 0, -1); }
62+
63+
int getSeneNo() { return (fopAcM_GetParam(this) >> 8) & 0xFF; }
64+
65+
static char* mCutNameList[1];
66+
static cutFunc mCutList[1];
4667

4768
private:
48-
/* 0x568 */ u8 field_0x568[0xfb0 - 0x568];
69+
/* 0xE40 */ u8 field_0xE40[4];
70+
/* 0xE44 */ u8 mType;
71+
/* 0xE48 */ dCcD_Cyl mCyl;
72+
/* 0xF84 */ actionFunc mInitFunc;
73+
/* 0xF90 */ actionFunc mExecuteFunc;
74+
/* 0xF98 */ u32 mpEmitters[3];
75+
/* 0xFA8 */ bool mTalking;
76+
/* 0xFA9 */ u8 field_0xFA4[3];
77+
/* 0xFAC */ u8 field_0xFAC;
4978
};
5079

5180
STATIC_ASSERT(sizeof(daNpc_FairySeirei_c) == 0xfb0);
5281

5382
class daNpc_FairySeirei_Param_c {
5483
public:
55-
/* 80541D20 */ ~daNpc_FairySeirei_Param_c();
84+
/* 80541D20 */ virtual ~daNpc_FairySeirei_Param_c() {}
5685

57-
static u8 const m[148];
86+
static f32 const m[37];
5887
};
5988

60-
6189
#endif /* D_A_NPC_FAIRY_SEIREI_H */

0 commit comments

Comments
 (0)