This commit is contained in:
Carco_21 2025-09-22 12:53:03 -07:00 committed by GitHub
parent c51868e48b
commit 7bc5a82a39
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 868 additions and 1046 deletions

View File

@ -1884,7 +1884,7 @@ config.libs = [
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_seid"),
ActorRel(NonMatching, "d_a_npc_seira"),
ActorRel(NonMatching, "d_a_npc_seira2"),
ActorRel(NonMatching, "d_a_npc_seirei"),
ActorRel(MatchingFor("GZ2E01"), "d_a_npc_seirei"),
ActorRel(Equivalent, "d_a_npc_shad", extra_cflags=[DANPCF_C_HACK]), # weak func order
ActorRel(NonMatching, "d_a_npc_shaman"),
ActorRel(NonMatching, "d_a_npc_shoe", extra_cflags=[DANPCF_C_HACK]),

View File

@ -6,62 +6,103 @@
/**
* @ingroup actors-npcs
* @class daNpc_Seirei_c
* @brief Spirit
* @brief Light Spirit Ordona
*
* @details
*
*/
class daNpc_Seirei_c : public fopAc_ac_c {
*/
struct daNpc_Seirei_HIOParam {
/* 0x00 */ daNpcT_HIOParam common;
/* 0x8C */ f32 force_talk_dist; // 強制会話距離 - Force Talk Distance
/* 0x90 */ f32 talk_dist; // 会話距離 - Talk Distance
};
class daNpc_Seirei_HIO_c : public mDoHIO_entry_c {
/* 0x8 */ daNpc_Seirei_HIOParam param;
};
class daNpc_Seirei_Param_c {
public:
/* 80AD7C3C */ virtual ~daNpc_Seirei_Param_c() {}
static daNpc_Seirei_HIOParam const m;
};
class daNpc_Seirei_c : public daNpcT_c {
public:
typedef int (daNpc_Seirei_c::*actionFunc)(void*);
typedef BOOL (daNpc_Seirei_c::*cutFunc)(int);
/* 80AD572C */ ~daNpc_Seirei_c();
/* 80AD57C4 */ void create();
/* 80AD5A7C */ void CreateHeap();
/* 80AD5BC4 */ void Delete();
/* 80AD5BF8 */ void Execute();
/* 80AD5C18 */ void Draw();
/* 80AD5CC0 */ void createHeapCallBack(fopAc_ac_c*);
/* 80AD5CE0 */ void getType();
/* 80AD5D2C */ bool isDelete();
/* 80AD57C4 */ cPhs__Step create();
/* 80AD5A7C */ int CreateHeap();
/* 80AD5BC4 */ int Delete();
/* 80AD5BF8 */ int Execute();
/* 80AD5C18 */ int Draw();
/* 80AD5CC0 */ static int createHeapCallBack(fopAc_ac_c*);
/* 80AD5CE0 */ u8 getType();
/* 80AD5D2C */ BOOL isDelete();
/* 80AD5D34 */ void reset();
/* 80AD5EEC */ void setParam();
/* 80AD6048 */ bool checkChangeEvt();
/* 80AD6048 */ BOOL checkChangeEvt();
/* 80AD6050 */ void srchActors();
/* 80AD6054 */ void evtTalk();
/* 80AD6154 */ void evtCutProc();
/* 80AD6054 */ BOOL evtTalk();
/* 80AD6154 */ BOOL evtCutProc();
/* 80AD621C */ void action();
/* 80AD62A4 */ void beforeMove();
/* 80AD6330 */ void setAttnPos();
/* 80AD6464 */ bool drawDbgInfo();
/* 80AD646C */ void afterSetMotionAnm(int, int, f32, int);
/* 80AD6604 */ void selectAction();
/* 80AD664C */ void chkAction(int (daNpc_Seirei_c::*)(void*));
/* 80AD6678 */ void setAction(int (daNpc_Seirei_c::*)(void*));
/* 80AD6464 */ int drawDbgInfo();
/* 80AD646C */ bool afterSetMotionAnm(int, int, f32, int);
/* 80AD6604 */ BOOL selectAction();
/* 80AD664C */ BOOL chkAction(actionFunc);
/* 80AD6678 */ BOOL setAction(actionFunc);
/* 80AD6720 */ void ctrlWaitAnm();
/* 80AD6808 */ void setPrtcls();
/* 80AD6A38 */ void chkFirstMeeting();
/* 80AD6ABC */ void cutConversation(int);
/* 80AD6C58 */ void wait(void*);
/* 80AD6D30 */ void talk(void*);
/* 80AD7BF8 */ daNpc_Seirei_c(daNpcT_faceMotionAnmData_c const*, daNpcT_motionAnmData_c const*,
daNpcT_MotionSeqMngr_c::sequenceStepData_c const*, int,
daNpcT_MotionSeqMngr_c::sequenceStepData_c const*, int,
daNpcT_evtData_c const*, char**);
/* 80AD6A38 */ BOOL chkFirstMeeting();
/* 80AD6ABC */ BOOL cutConversation(int);
/* 80AD6C58 */ int wait(void*);
/* 80AD6D30 */ int talk(void*);
/* 80AD7BF8 */ daNpc_Seirei_c(
daNpcT_faceMotionAnmData_c const* i_faceMotionAnmData,
daNpcT_motionAnmData_c const* i_motionAnmData,
daNpcT_MotionSeqMngr_c::sequenceStepData_c const* i_faceMotionSequenceData,
int i_faceMotionStepNum,
daNpcT_MotionSeqMngr_c::sequenceStepData_c const* i_motionSequenceData,
int i_motionStepNum,
daNpcT_evtData_c const* i_evtData,
char** i_arcNames)
: daNpcT_c(i_faceMotionAnmData, i_motionAnmData, i_faceMotionSequenceData,
i_faceMotionStepNum, i_motionSequenceData, i_motionStepNum, i_evtData,
i_arcNames) {}
int getFlowNodeNo() {
u16 nodeNo = home.angle.x;
if (nodeNo == 0xffff) {
return -1;
}
static void* mCutNameList[2];
static u8 mCutList[24];
return nodeNo;
}
u32 getBitSW() { return (fopAcM_GetParam(this) & 0xFF000) >> 12; }
bool getDoBtnChkFlag() { return (fopAcM_GetParam(this) & 0x100) == 0; }
static char* mCutNameList[2];
static cutFunc mCutList[2];
private:
/* 0x568 */ u8 field_0x568[0xe88 - 0x568];
/* 0xE40 */ daNpc_Seirei_HIO_c* mHIO;
/* 0xE44 */ u8 mType;
/* 0xE45 */ u8 arg0;
/* 0xE48 */ actionFunc mNextAction;
/* 0xE54 */ actionFunc mAction;
/* 0xE60 */ int field_0xe60;
/* 0xE64 */ u32 mPrtcls[7];
/* 0xE80 */ bool field_0xe80;
/* 0xE81 */ u8 field_0xe81[0xe84 - 0xe81];
/* 0xE84 */ u8 field_0xe84;
};
STATIC_ASSERT(sizeof(daNpc_Seirei_c) == 0xe88);
class daNpc_Seirei_Param_c {
public:
/* 80AD7C3C */ ~daNpc_Seirei_Param_c();
static u8 const m[148];
};
#endif /* D_A_NPC_SEIREI_H */

File diff suppressed because it is too large Load Diff