summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorCarco_21 <144170194+carter-ktb21@users.noreply.github.com>2025-08-09 13:48:35 -0400
committerGitHub <noreply@github.com>2025-08-09 20:48:35 +0300
commitcc9325cea24fc961f5ff92d7ea686cb74e1a940d (patch)
tree2bc82f707745f4c955913c6b866df7ab02612ecd /include
parent0759e31e842c3c4c5664d624949b64871d9b2318 (diff)
d_a_npc_moir almost equivalent (#2569)
* initial work * more work * got to waittype0 * All functions worked on * cleanup * took out unneeded nonmatching comments * PR Cleanup * Use actor enum --------- Co-authored-by: hatal175 <hatal175@users.noreply.github.com>
Diffstat (limited to 'include')
-rw-r--r--include/d/actor/d_a_ni.h12
-rw-r--r--include/d/actor/d_a_npc_moir.h229
2 files changed, 191 insertions, 50 deletions
diff --git a/include/d/actor/d_a_ni.h b/include/d/actor/d_a_ni.h
index 5e12a9814d..78bc66ab0b 100644
--- a/include/d/actor/d_a_ni.h
+++ b/include/d/actor/d_a_ni.h
@@ -16,16 +16,6 @@
#define BCK_WALK_A 12
#define BCK_WALK_B 13
-#define JNT_WAIST 0
-#define JNT_LEGL 1
-#define JNT_FOOTL 2
-#define JNT_LEGR 3
-#define JNT_FOOTR 4
-#define JNT_NECK 5
-#define JNT_HEAD 6
-#define JNT_WINGL 7
-#define JNT_WINGR 8
-
enum daNi_color {
COLOR_WHITE,
COLOR_BLACK,
@@ -73,6 +63,8 @@ public:
mpMorf->getModel()->setBaseTRMtx(mtx);
}
+ void changeMode() { field_0x5fe = 1; }
+
/* 0x5AC */ request_of_phase_process_class mPhase;
/* 0x5B4 */ u8 field_0x5b4;
/* 0x5B5 */ u8 mType;
diff --git a/include/d/actor/d_a_npc_moir.h b/include/d/actor/d_a_npc_moir.h
index d3a74fa283..775ab2c83f 100644
--- a/include/d/actor/d_a_npc_moir.h
+++ b/include/d/actor/d_a_npc_moir.h
@@ -11,63 +11,212 @@
* @details
*
*/
-class daNpcMoiR_c : public fopAc_ac_c {
+
+struct daNpcMoiR_HIOParam {
+ /* 0x00 */ daNpcF_HIOParam common;
+ /* 0x6C */ f32 demo_start_dist; // デモ開始距離 - Demo Start Distance
+ /* 0x70 */ s16 horizontal_eye_movement_range; // 目玉横可動範囲 - Horizontal Eye Movement Range
+ /* 0x72 */ u8 demo_start_area; // デモ開始エリア - Demo Start Area
+};
+
+class daNpcMoiR_Param_c {
+public:
+ /* 80A83240 */ virtual ~daNpcMoiR_Param_c() {}
+
+ static daNpcMoiR_HIOParam const m;
+};
+
+class daNpcMoiR_c : public daNpcF_c {
public:
- /* 80A7C16C */ daNpcMoiR_c();
+ typedef bool (daNpcMoiR_c::*ActionFn)(void*);
+ typedef BOOL (daNpcMoiR_c::*EventFn)(int);
+
+ enum Animation {
+ /* 0x00 */ ANM_NONE,
+ /* 0x01 */ ANM_F_TALK_A,
+ /* 0x02 */ ANM_F_HOLD_S,
+ /* 0x03 */ ANM_3,
+ /* 0x04 */ ANM_F_SURPRISED,
+ /* 0x05 */ ANM_F_HOLD_S_LOOP,
+ /* 0x06 */ ANM_F_TAKAJO_HI,
+ /* 0x07 */ ANM_FH_HOLD_S,
+ /* 0x08 */ ANM_FH_SERIOUS,
+ /* 0x09 */ ANM_FH_HOLD_S_2,
+ /* 0x0A */ ANM_FH_TAKAJO_HI,
+ /* 0x0B */ ANM_WAIT_A,
+ /* 0x0C */ ANM_WAIT_B,
+ /* 0x0D */ ANM_WAIT_C,
+ /* 0x0E */ ANM_TALK_A,
+ /* 0x0F */ ANM_STEP,
+ /* 0x10 */ ANM_LOOK_AROUND,
+ /* 0x11 */ ANM_FUE,
+ /* 0x12 */ ANM_TAKAJO_NI,
+ /* 0x13 */ ANM_TAKAJO_WAIT_NI,
+ /* 0x14 */ ANM_SURPRISED,
+ /* 0x15 */ ANM_SQUAREUP,
+ /* 0x16 */ ANM_SQUAREUP_STEP,
+ /* 0x17 */ ANM_DRIVEAWAY,
+ /* 0x18 */ ANM_TAKEOFF,
+ /* 0x19 */ ANM_TAKING_OFF,
+ /* 0x1A */ ANM_TAKING_OFF_TALK,
+ /* 0x1B */ ANM_TAKE_MET,
+ /* 0x1C */ ANM_SIT,
+ /* 0x1D */ ANM_SIT_TALK,
+ /* 0x1E */ ANM_TAKEOFF_SIT,
+ /* 0x1F */ ANM_TAKING_OFF_SIT,
+ /* 0x20 */ ANM_TAKING_OFF_SIT_TALK,
+ /* 0x21 */ ANM_TAKE_MET_SIT,
+ /* 0x22 */ ANM_TAKAJO,
+ /* 0x23 */ ANM_TAKAJO_WAIT,
+ /* 0x24 */ ANM_TAKAJO_HI,
+ /* 0x25 */ ANM_TAKAJO_HI_WAIT,
+ /* 0x26 */ ANM_RUN,
+ };
+
+ enum Expression {
+ /* 0x00 */ EXPR_F_TALK_A,
+ /* 0x03 */ EXPR_F_HOLD_S_LOOP = 0x3,
+ /* 0x0A */ EXPR_ANM_3 = 0xA,
+ /* 0x0B */ EXPR_FH_SERIOUS,
+ /* 0x0C */ EXPR_F_TAKAJO_HI,
+ /* 0x0D */ EXPR_FH_TAKAJO_HI,
+ /* 0x0E */ EXPR_FH_HOLD_S,
+ /* 0x0F */ EXPR_F_SURPRISED,
+ /* 0x10 */ EXPR_F_HOLD_S,
+ /* 0x11 */ EXPR_FH_HOLD_S_LOOP,
+ /* 0x12 */ EXPR_NONE,
+ };
+
+ enum Expression_BTP {
+ /* 0x0 */ EXPR_BTP_MOIR,
+ /* 0x1 */ EXPR_BTP_FH_SERIOUS
+ };
+
+ enum Motion {
+ /* 0x00 */ MOT_WAIT_A,
+ /* 0x01 */ MOT_TALK_A,
+ /* 0x02 */ MOT_WAIT_B,
+ /* 0x07 */ MOT_WAIT_C = 0x7,
+ /* 0x14 */ MOT_LOOK_AROUND_LOOP = 0x14,
+ /* 0x15 */ MOT_TAKAJO_WAIT_NI,
+ /* 0x16 */ MOT_SIT,
+ /* 0x17 */ MOT_SIT_TALK,
+ /* 0x18 */ MOT_SQUAREUP,
+ /* 0x19 */ MOT_DRIVEAWAY,
+ /* 0x1A */ MOT_TAKEOFF,
+ /* 0x1B */ MOT_TAKING_OFF,
+ /* 0x1C */ MOT_TAKING_OFF_TALK,
+ /* 0x1D */ MOT_TAKE_MET,
+ /* 0x1E */ MOT_TAKEOFF_SIT,
+ /* 0x1F */ MOT_TAKING_OFF_SIT,
+ /* 0x20 */ MOT_TAKING_OFF_SIT_TALK,
+ /* 0x21 */ MOT_TAKE_MET_SIT,
+ /* 0x22 */ MOT_RUN,
+ /* 0x23 */ MOT_TAKAJO_HI_WAIT,
+ /* 0x24 */ MOT_TAKAJO_HI,
+ /* 0x25 */ MOT_SURPRISED,
+ /* 0x26 */ MOT_SQUAREUP_STEP,
+ /* 0x27 */ MOT_TAKAJO_NI,
+ /* 0x28 */ MOT_FUE,
+ /* 0x29 */ MOT_LOOK_AROUND,
+ /* 0x2A */ MOT_STEP,
+ };
+
+ enum Mode {
+ /* 0x0 */ MODE_SIT,
+ /* 0x1 */ MODE_STAND,
+ /* 0x2 */ MODE_2,
+ };
+
+ /* 80A7C16C */ daNpcMoiR_c() {}
/* 80A7C380 */ ~daNpcMoiR_c();
- /* 80A7C580 */ void Create();
- /* 80A7C978 */ void CreateHeap();
- /* 80A7CE48 */ void Delete();
- /* 80A7CE7C */ void Execute();
- /* 80A7CEA0 */ void Draw();
- /* 80A7CEFC */ void ctrlJoint(J3DJoint*, J3DModel*);
- /* 80A7D0CC */ void createHeapCallBack(fopAc_ac_c*);
- /* 80A7D0EC */ void ctrlJointCallBack(J3DJoint*, int);
- /* 80A7D138 */ void setExpressionAnm(int, bool);
- /* 80A7D394 */ void setExpressionBtp(int);
- /* 80A7D474 */ bool setMotionAnm(int, f32);
+ /* 80A7C580 */ cPhs__Step Create();
+ /* 80A7C978 */ int CreateHeap();
+ /* 80A7CE48 */ int Delete();
+ /* 80A7CE7C */ int Execute();
+ /* 80A7CEA0 */ int Draw();
+ /* 80A7CEFC */ int ctrlJoint(J3DJoint*, J3DModel*);
+ /* 80A7D0CC */ static int createHeapCallBack(fopAc_ac_c*);
+ /* 80A7D0EC */ static int ctrlJointCallBack(J3DJoint*, int);
+ /* 80A7D138 */ bool setExpressionAnm(int, bool);
+ /* 80A7D394 */ bool setExpressionBtp(int);
+ /* 80A7D474 */ void setMotionAnm(int, f32);
/* 80A7D5C4 */ void reset();
- /* 80A7D73C */ void setWaitAction();
- /* 80A7D934 */ void wait_type0(void*);
+ /* 80A7D73C */ inline void setWaitAction();
+ /* 80A7D934 */ bool wait_type0(void*);
/* 80A7DD94 */ void setMotion(int, f32, int);
/* 80A7DDD8 */ void setExpression(int, f32);
- /* 80A7DE04 */ void wait_type1(void*);
- /* 80A7E668 */ void wait_type2(void*);
- /* 80A7E8C0 */ void talk(void*);
- /* 80A7EFBC */ void multiTalk(void*);
- /* 80A7F40C */ void fight(void*);
- /* 80A7F9AC */ void demo(void*);
- /* 80A7FEE8 */ void leave(void*);
- /* 80A802C4 */ void EvCut_Introduction(int);
- /* 80A803A0 */ void EvCut_Appear(int);
- /* 80A8081C */ void EvCut_Appear2(int);
+ /* 80A7DE04 */ bool wait_type1(void*);
+ /* 80A7E668 */ bool wait_type2(void*);
+ /* 80A7E8C0 */ bool talk(void*);
+ /* 80A7EFBC */ BOOL multiTalk(void*);
+ /* 80A7F40C */ bool fight(void*);
+ /* 80A7F9AC */ bool demo(void*);
+ /* 80A7FEE8 */ bool leave(void*);
+ /* 80A802C4 */ BOOL EvCut_Introduction(int);
+ /* 80A803A0 */ BOOL EvCut_Appear(int);
+ /* 80A8081C */ BOOL EvCut_Appear2(int);
/* 80A810FC */ void setParam();
- /* 80A81274 */ void main();
+ /* 80A81274 */ BOOL main();
/* 80A815D4 */ void checkHeadGear();
/* 80A818B4 */ void playMotion();
- /* 80A8210C */ void ctrlBtk();
- /* 80A821E0 */ void setAttnPos();
- /* 80A825A0 */ void lookat();
+ /* 80A8210C */ inline BOOL ctrlBtk();
+ /* 80A821E0 */ inline void setAttnPos();
+ /* 80A825A0 */ inline void lookat();
/* 80A82878 */ void drawOtherMdls();
- /* 80A82900 */ bool drawDbgInfo();
+ /* 80A82900 */ BOOL drawDbgInfo();
MtxP getHandRMtx() { return mpMorf->getModel()->getAnmMtx(17); }
- static u8 mEvtSeqList[48];
+ u16 getMessageNo() { return fopAcM_GetParam(this) >> 8; }
-private:
- /* 0x568 */ mDoExt_McaMorfSO* mpMorf;
- /* 0x56C */ u8 field_0x56c[0xe0c - 0x56c];
-};
+ inline void setAction(ActionFn action) {
+ field_0xe08 = 3;
-STATIC_ASSERT(sizeof(daNpcMoiR_c) == 0xe0c);
+ if (mAction) {
+ (this->*mAction)(NULL);
+ }
-class daNpcMoiR_Param_c {
-public:
- /* 80A83240 */ ~daNpcMoiR_Param_c();
+ field_0xe08 = 0;
+ mAction = action;
+
+ if (mAction) {
+ (this->*mAction)(NULL);
+ }
+ }
+
+ inline void playExpression();
+ inline BOOL step(s16, int);
+ inline void setExpressionTalkAfter();
+ inline BOOL chkFindPlayer();
+ inline bool chkAction(ActionFn action) {
+ return action == mAction;
+ }
+ inline void setLookMode(int i_lookMode);
+ inline void searchActors();
+
+ static EventFn mEvtSeqList[4];
- static u8 const m[116];
+private:
+ /* 0xB48 */ Z2Creature mSound;
+ /* 0xBD8 */ J3DModel* mpHeadgearModel;
+ /* 0xBDC */ daNpcF_MatAnm_c* mpMatAnm;
+ /* 0xBE0 */ daNpcF_Lookat_c mLookat;
+ /* 0xC7C */ daNpcF_ActorMngr_c mActorMngr[4];
+ /* 0xC9C */ u8 field_0xc9c[0xca0 - 0xc9c];
+ /* 0xCA0 */ dCcD_Cyl field_0xca0;
+ /* 0xDDC */ ActionFn mAction;
+ /* 0xDE8 */ request_of_phase_process_class mPhase[2];
+ /* 0xDF8 */ fpc_ProcID field_0xdf8;
+ /* 0xDFC */ int field_0xdfc;
+ /* 0xE00 */ int field_0xe00;
+ /* 0xE04 */ s16 mMsgNo;
+ /* 0xE06 */ s16 mLookMode;
+ /* 0xE08 */ u16 field_0xe08;
+ /* 0xE0A */ bool mWearHelmet;
+ /* 0xE0B */ u8 mMode;
};
+STATIC_ASSERT(sizeof(daNpcMoiR_c) == 0xe0c);
#endif /* D_A_NPC_MOIR_H */