summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorhev7 <143887945+hev7@users.noreply.github.com>2025-11-15 12:02:24 +0000
committerGitHub <noreply@github.com>2025-11-15 04:02:24 -0800
commit238702134760ae899a8d8f550c8edacd756dc3c4 (patch)
treecc26e4e2eff570e1a88daf98b909b0a713337a0a /include
parent9ea1b81288223343456a999fb325e747629a45f1 (diff)
d_a_npc_pouya matching (#2806)
* d_a_npc_pouya matching * mItemPartnerId fix
Diffstat (limited to 'include')
-rw-r--r--include/d/actor/d_a_npc.h1
-rw-r--r--include/d/actor/d_a_npc_pouya.h177
-rw-r--r--include/m_Do/m_Do_graphic.h1
3 files changed, 135 insertions, 44 deletions
diff --git a/include/d/actor/d_a_npc.h b/include/d/actor/d_a_npc.h
index 1323f3a8b0..fa9b6781d5 100644
--- a/include/d/actor/d_a_npc.h
+++ b/include/d/actor/d_a_npc.h
@@ -100,6 +100,7 @@ public:
}
}
}
+ void setOffset(int i_offset) { mOffset = i_offset; }
private:
/* 0x00 */ sequenceStepData_c const* mpSeqData;
diff --git a/include/d/actor/d_a_npc_pouya.h b/include/d/actor/d_a_npc_pouya.h
index d91b93014f..9ede16a6e0 100644
--- a/include/d/actor/d_a_npc_pouya.h
+++ b/include/d/actor/d_a_npc_pouya.h
@@ -3,6 +3,33 @@
#include "d/actor/d_a_npc.h"
+struct daNpc_Pouya_HIOParam {
+ /* 0x00 */ daNpcT_HIOParam common;
+};
+
+class daNpc_Pouya_Param_c {
+public:
+ /* 80B24978 */ virtual ~daNpc_Pouya_Param_c() {}
+
+ static const daNpc_Pouya_HIOParam m;
+};
+
+#if DEBUG
+class daNpc_Pouya_HIO_c : public mDoHIO_entry_c {
+public:
+ daNpc_Pouya_HIO_c();
+
+ void listenPropertyEvent(const JORPropertyEvent*);
+ void genMessage(JORMContext*);
+
+ daNpc_Pouya_HIOParam m;
+};
+
+#define NPC_POUYA_HIO_CLASS daNpc_Pouya_HIO_c
+#else
+#define NPC_POUYA_HIO_CLASS daNpc_Pouya_Param_c
+#endif
+
/**
* @ingroup actors-npcs
* @class daNpc_Pouya_c
@@ -11,71 +38,133 @@
* @details
*
*/
-class daNpc_Pouya_c : public fopAc_ac_c {
+class daNpc_Pouya_c : public daNpcT_c {
public:
+ typedef int (daNpc_Pouya_c::*cutFunc)(int);
+ typedef int (daNpc_Pouya_c::*actionFunc)(void*);
+
+ enum Type {
+ TYPE_0,
+ TYPE_1,
+ TYPE_2,
+ TYPE_3,
+ TYPE_4,
+ TYPE_5,
+ };
+
+ enum FaceMotion {
+ /* 0x00 */ FACE_MOT_UNK_0 = 0,
+ /* 0x01 */ FACE_MOT_UNK_1 = 1,
+ /* 0x02 */ FACE_MOT_UNK_2 = 2,
+ /* 0x03 */ FACE_MOT_UNK_3 = 3,
+ /* 0x04 */ FACE_MOT_UNK_4 = 4,
+ /* 0x05 */ FACE_MOT_UNK_5 = 5,
+ /* 0x06 */ FACE_MOT_UNK_6 = 6,
+ /* 0x07 */ FACE_MOT_UNK_7 = 7,
+ /* 0x08 */ FACE_MOT_UNK_8 = 8,
+ /* 0x09 */ FACE_MOT_UNK_9 = 9,
+ /* 0x0A */ FACE_MOT_UNK_10 = 10,
+ /* 0x0B */ FACE_MOT_UNK_11 = 11,
+ /* 0x0C */ FACE_MOT_UNK_12 = 12,
+ /* 0x0D */ FACE_MOT_UNK_13 = 13,
+ /* 0x0E */ FACE_MOT_UNK_14 = 14,
+ /* 0x0F */ FACE_MOT_UNK_15 = 15,
+ /* 0x10 */ FACE_MOT_UNK_16 = 16,
+ /* 0x11 */ FACE_MOT_UNK_17 = 17,
+ };
+
+ enum Motion {
+ /* 0x00 */ MOT_UNK_0 = 0,
+ /* 0x01 */ MOT_UNK_1 = 1,
+ /* 0x04 */ MOT_UNK_4 = 4,
+ /* 0x08 */ MOT_UNK_8 = 8,
+ /* 0x0A */ MOT_UNK_10 = 10,
+ /* 0x0F */ MOT_UNK_15 = 15,
+ };
+
/* 80AADDAC */ ~daNpc_Pouya_c();
- /* 80AADEE0 */ void create();
- /* 80AAE1AC */ void CreateHeap();
- /* 80AAE788 */ void Delete();
- /* 80AAE7BC */ void Execute();
- /* 80AAE7DC */ void Draw();
- /* 80AAE870 */ void createHeapCallBack(fopAc_ac_c*);
- /* 80AAE890 */ void ctrlJointCallBack(J3DJoint*, int);
+ /* 80AADEE0 */ int create();
+ /* 80AAE1AC */ int CreateHeap();
+ /* 80AAE788 */ int Delete();
+ /* 80AAE7BC */ int Execute();
+ /* 80AAE7DC */ int Draw();
+ /* 80AAE870 */ static int createHeapCallBack(fopAc_ac_c*);
+ /* 80AAE890 */ static int ctrlJointCallBack(J3DJoint*, int);
/* 80AAE8E8 */ u8 getType();
- /* 80AAE94C */ void isDelete();
+ /* 80AAE94C */ BOOL isDelete();
/* 80AAE9D8 */ void reset();
/* 80AAEBCC */ void ctrlSubFaceMotion(int);
/* 80AAEDB8 */ void afterJntAnm(int);
/* 80AAEE44 */ void setParam();
- /* 80AAEFB4 */ void checkChangeEvt();
+ /* 80AAEFB4 */ BOOL checkChangeEvt();
/* 80AAF148 */ void setAfterTalkMotion();
/* 80AAF1F0 */ void srchActors();
- /* 80AAF1F4 */ void evtTalk();
- /* 80AAF294 */ void evtCutProc();
+ /* 80AAF1F4 */ BOOL evtTalk();
+ /* 80AAF294 */ BOOL evtCutProc();
/* 80AAF35C */ void action();
/* 80AAF4F8 */ void beforeMove();
/* 80AAF5BC */ void setAttnPos();
/* 80AAF8E4 */ void setCollision();
- /* 80AAFA5C */ bool drawDbgInfo();
+ /* 80AAFA5C */ int drawDbgInfo();
/* 80AAFA64 */ void drawOtherMdl();
- /* 80AAFB4C */ void afterSetMotionAnm(int, int, f32, int);
- /* 80AAFBDC */ void selectAction();
- /* 80AAFC24 */ void chkAction(int (daNpc_Pouya_c::*)(void*));
- /* 80AAFC50 */ void setAction(int (daNpc_Pouya_c::*)(void*));
+ /* 80AAFB4C */ bool afterSetMotionAnm(int, int, f32, int);
+ /* 80AAFBDC */ int selectAction();
+ /* 80AAFC24 */ BOOL chkAction(int (daNpc_Pouya_c::*)(void*));
+ /* 80AAFC50 */ int setAction(int (daNpc_Pouya_c::*)(void*));
/* 80AAFCF8 */ void setPrtcls();
- /* 80AAFE08 */ void cutHaveFavorToAsk(int);
- /* 80AB04A8 */ void wait(void*);
- /* 80AB0A7C */ void talk(void*);
- /* 80AB1E94 */ daNpc_Pouya_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**);
- /* 80AB1F54 */ u16 getEyeballMaterialNo();
- /* 80AB1F5C */ s32 getHeadJointNo();
- /* 80AB1F64 */ s32 getNeckJointNo();
- /* 80AB1F6C */ bool getBackboneJointNo();
- /* 80AB1F74 */ void checkChangeJoint(int);
- /* 80AB1F84 */ void checkRemoveJoint(int);
-
- MtxP getHeadMtx() { return mpMorf->getModel()->getAnmMtx(4); }
+ /* 80AAFE08 */ int cutHaveFavorToAsk(int);
+ /* 80AB04A8 */ int wait(void*);
+ /* 80AB0A7C */ int talk(void*);
+ /* 80AB1E94 */ daNpc_Pouya_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) {}
+ /* 80AB1F54 */ u16 getEyeballMaterialNo() { return 1; }
+ /* 80AB1F5C */ s32 getHeadJointNo() { return 4; }
+ /* 80AB1F64 */ s32 getNeckJointNo() { return 3; }
+ /* 80AB1F6C */ s32 getBackboneJointNo() { return 1; }
+ /* 80AB1F74 */ BOOL checkChangeJoint(int i_joint) { return i_joint == 4; }
+ /* 80AB1F84 */ BOOL checkRemoveJoint(int i_joint) { return i_joint == 8; }
- static char* mCutNameList[3];
- static u8 mCutList[36];
+ u8 getBitSW() { return (fopAcM_GetParam(this) & 0xFF00) >> 8; }
-private:
- /* 0x568 */ u8 field_0x568[0x578 - 0x568];
- /* 0x578 */ mDoExt_McaMorfSO* mpMorf;
- /* 0x57C */ u8 field_0x57c[0xfd4 - 0x57c];
-};
+ int getFlowNodeNo() {
+ u16 nodeNo = home.angle.x;
+ if (nodeNo == 0xffff) {
+ return -1;
+ }
+ return nodeNo;
+ }
-STATIC_ASSERT(sizeof(daNpc_Pouya_c) == 0xfd4);
+ BOOL chkPouyaB() { return (mType == TYPE_2 || mType == TYPE_3 || mType == TYPE_4); }
-class daNpc_Pouya_Param_c {
-public:
- /* 80AB1F94 */ ~daNpc_Pouya_Param_c();
+ MtxP getHeadMtx() { return mpMorf[0]->getModel()->getAnmMtx(4); }
+
+ static char* mCutNameList[3];
+ static cutFunc mCutList[3];
- static u8 const m[140];
+private:
+ /* 0xE40 */ NPC_POUYA_HIO_CLASS* mpHIO;
+ /* 0xE44 */ J3DModel* mpModel[1];
+ /* 0xE48 */ dCcD_Cyl mCyl;
+ /* 0xF84 */ u8 mType;
+ /* 0xF88 */ daNpcT_Path_c mPath;
+ /* 0xFB0 */ actionFunc field_0xfb0;
+ /* 0xFBC */ actionFunc mAction;
+ /* 0xFC8 */ u32 field_0xfc8;
+ /* 0xFCC */ s8 field_0xfcc;
+ /* 0xFCD */ s8 field_0xfcd;
+ /* 0xFCE */ u8 field_0xfce;
+ /* 0xFCF */ u8 field_0xfcf;
+ /* 0xFD0 */ u8 field_0xfd0;
};
+STATIC_ASSERT(sizeof(daNpc_Pouya_c) == 0xfd4);
#endif /* D_A_NPC_POUYA_H */
diff --git a/include/m_Do/m_Do_graphic.h b/include/m_Do/m_Do_graphic.h
index 029aaaa0da..a0b52e4b95 100644
--- a/include/m_Do/m_Do_graphic.h
+++ b/include/m_Do/m_Do_graphic.h
@@ -69,6 +69,7 @@ public:
static void endFrame() { JFWDisplay::getManager()->endFrame(); }
static void offFade() { mFade = 0; }
static u8 isFade() { return mFade; }
+ static void fadeIn_f(f32 i_fadeSpeed, _GXColor& i_fadeColor) { fadeOut_f(-i_fadeSpeed, i_fadeColor); }
static void offBlure() { mBlureFlag = false; }
static bool isBlure() { return mBlureFlag; }
static void setBlureRate(u8 i_rate) { mBlureRate = i_rate; }