diff options
| author | hev7 <143887945+hev7@users.noreply.github.com> | 2025-11-15 12:02:24 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-11-15 04:02:24 -0800 |
| commit | 238702134760ae899a8d8f550c8edacd756dc3c4 (patch) | |
| tree | cc26e4e2eff570e1a88daf98b909b0a713337a0a /include | |
| parent | 9ea1b81288223343456a999fb325e747629a45f1 (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.h | 1 | ||||
| -rw-r--r-- | include/d/actor/d_a_npc_pouya.h | 177 | ||||
| -rw-r--r-- | include/m_Do/m_Do_graphic.h | 1 |
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; } |
