summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorCarco_21 <144170194+carter-ktb21@users.noreply.github.com>2025-10-05 21:32:14 -0400
committerGitHub <noreply@github.com>2025-10-05 18:32:14 -0700
commitb3d30467bf46430ecb28046a8eb14cd30803befc (patch)
tree343d31462f146df48e7a1e0ee25c8693210415f8 /include
parentc3cd59510787cd096ae8e3fb6feed386809f99f9 (diff)
d_a_npc_chat matching (#2725)
* initial work * tiny change * over half done * got to playMotion * got to wait function * matching
Diffstat (limited to 'include')
-rw-r--r--include/d/actor/d_a_npc.h2
-rw-r--r--include/d/actor/d_a_npc_chat.h156
2 files changed, 110 insertions, 48 deletions
diff --git a/include/d/actor/d_a_npc.h b/include/d/actor/d_a_npc.h
index 024d62dcf8..2abb1e1ea9 100644
--- a/include/d/actor/d_a_npc.h
+++ b/include/d/actor/d_a_npc.h
@@ -1209,6 +1209,8 @@ public:
void setIntFlowNodeNo(int i_flowNodeNo) { mFlowNodeNo = i_flowNodeNo; }
void setCutType(int i_cutType) { mCutType = i_cutType; }
void onInterrupt(u8 param_0) { field_0x9ef = param_0; }
+ void onHide() { mHide = true; }
+ void offHide() { mHide = false; }
static dCcD_SrcGObjInf const mCcDObjInfo;
static dCcD_SrcCyl mCcDCyl;
diff --git a/include/d/actor/d_a_npc_chat.h b/include/d/actor/d_a_npc_chat.h
index c4ca7ff94b..39347c4849 100644
--- a/include/d/actor/d_a_npc_chat.h
+++ b/include/d/actor/d_a_npc_chat.h
@@ -10,70 +10,130 @@
*
* @details
*
- */
-class daNpcChat_c : public fopAc_ac_c {
+*/
+
+struct daNpcChat_HIOParam {
+ /* 0x0 */ daNpcF_HIOParam common;
+};
+
+class daNpcChat_HIO_c : public mDoHIO_entry_c {
+ void genMessage(JORMContext*);
+
+ /* 0x8 */ daNpcChat_HIOParam param;
+};
+
+class daNpcChat_Param_c {
public:
+ /* 80986930 */ virtual ~daNpcChat_Param_c() {}
+
+ static daNpcChat_HIOParam const m;
+};
+
+class daNpcChat_c : public daNpcF_c {
+public:
+ typedef bool (daNpcChat_c::*actionFunc)(void*);
+ typedef BOOL (daNpcChat_c::*eventFunc)(int);
+
/* 8098084C */ daNpcChat_c();
/* 80980A60 */ ~daNpcChat_c();
- /* 80980C1C */ void NpcCreate(int);
- /* 80980E20 */ void getObjNum();
- /* 80980F88 */ void ObjCreate(int);
- /* 80980FC8 */ void ChairCreate(f32);
- /* 80981108 */ void isM_();
- /* 80981140 */ void loadResrc(int, int);
- /* 80981280 */ void getNpcMdlDataP(int);
- /* 809812FC */ void getObjMdlDataP(int);
- /* 80981374 */ void getTexAnmP(int);
- /* 809813E8 */ void removeResrc(int, int);
- /* 809814DC */ void setAttention(int);
- /* 80981E90 */ void Create();
- /* 809822A0 */ void CreateHeap();
- /* 809823B4 */ void Delete();
- /* 809823E8 */ void Execute();
- /* 809824CC */ void Draw();
- /* 8098250C */ void draw(int, int, f32, _GXColorS10*, int);
- /* 80982780 */ void ctrlJoint(J3DJoint*, J3DModel*);
- /* 80982A98 */ void createHeapCallBack(fopAc_ac_c*);
- /* 80982AB8 */ void ctrlJointCallBack(J3DJoint*, int);
- /* 80982B60 */ void searchGroup();
- /* 80982C10 */ void appearTimeCheck();
- /* 80982D20 */ void appearCheck();
+ /* 80980C1C */ BOOL NpcCreate(int);
+ /* 80980E20 */ int getObjNum();
+ /* 80980F88 */ J3DModel* ObjCreate(int);
+ /* 80980FC8 */ J3DModel* ChairCreate(f32);
+ /* 80981108 */ bool isM_();
+ /* 80981140 */ cPhs__Step loadResrc(int, int);
+ /* 80981280 */ J3DModelData* getNpcMdlDataP(int);
+ /* 809812FC */ J3DModelData* getObjMdlDataP(int);
+ /* 80981374 */ J3DAnmTexPattern* getTexAnmP(int);
+ /* 809813E8 */ BOOL removeResrc(int, int);
+ /* 809814DC */ BOOL setAttention(int);
+ /* 80981E90 */ cPhs__Step Create();
+ /* 809822A0 */ BOOL CreateHeap();
+ /* 809823B4 */ int Delete();
+ /* 809823E8 */ int Execute();
+ /* 809824CC */ int Draw();
+ /* 8098250C */ int draw(int, int, f32, _GXColorS10*, int);
+ /* 80982780 */ int ctrlJoint(J3DJoint*, J3DModel*);
+ /* 80982A98 */ static int createHeapCallBack(fopAc_ac_c*);
+ /* 80982AB8 */ static int ctrlJointCallBack(J3DJoint*, int);
+ /* 80982B60 */ BOOL searchGroup();
+ /* 80982C10 */ BOOL appearTimeCheck();
+ /* 80982D20 */ BOOL appearCheck();
/* 80982EB4 */ void setParam();
- /* 80982F4C */ void main();
+ /* 80982F4C */ BOOL main();
/* 80982FA4 */ void setAttnPos();
- /* 809830EC */ void setExpressionBtp(int);
- /* 80983168 */ bool setMotionAnm(int, f32);
+ /* 809830EC */ bool setExpressionBtp(int);
+ /* 80983168 */ void setMotionAnm(int, f32);
/* 80983584 */ void setMotion(int, f32, int);
- /* 809835C8 */ bool drawDbgInfo();
+ /* 809835C8 */ int drawDbgInfo();
/* 809835D0 */ void drawOtherMdls();
- /* 809837A4 */ void getTalkMotionNo();
- /* 809837C0 */ void getLookPlayerCheck();
+ /* 809837A4 */ u8 getTalkMotionNo();
+ /* 809837C0 */ bool getLookPlayerCheck();
/* 809837EC */ void reset();
/* 809839E0 */ void playMotion();
/* 80984DD0 */ void playMotionAnmLoop(daNpcF_c::daNpcF_anmPlayData***);
- /* 80984F34 */ void setAction(bool (daNpcChat_c::*)(void*));
- /* 80984FDC */ void step(s16, int);
+ /* 80984F34 */ BOOL setAction(actionFunc);
+ /* 80984FDC */ bool step(s16, int);
/* 809850D0 */ void setTalkMember(daNpcChat_c*);
- /* 80985104 */ void wait(void*);
- /* 8098552C */ void fear(void*);
- /* 809856C8 */ void talk(void*);
- /* 80985A84 */ void demo(void*);
- /* 8098692C */ void adjustShapeAngle();
+ /* 80985104 */ bool wait(void*);
+ /* 8098552C */ bool fear(void*);
+ /* 809856C8 */ bool talk(void*);
+ /* 80985A84 */ bool demo(void*);
+ /* 8098692C */ void adjustShapeAngle() {}
+
+ u8 getType() { return fopAcM_GetParam(this) & 0xFF; }
+ u8 getTalkGroupNoParam() { return (fopAcM_GetParam(this) >> 12) & 0xF; }
+ u8 getTalkMenberNumParam() { return (fopAcM_GetParam(this) >> 16) & 0xF; }
+ u8 getTalkNoParam() { return (fopAcM_GetParam(this) >> 20) & 0xF; }
+ u8 getTalkIconTypeParam() { return (fopAcM_GetParam(this) >> 24) & 0xF; }
+ s16 getMessageNo() { return (int)home.angle.x; }
+ cXyz& getBaseAttnPos() { return mBaseAttnPos; }
+ BOOL chkAction(actionFunc action) { return action == mAction; }
+ u8 getTalkGroupNo() { return mTalkGroupNo; }
+ u8 getTalkNo() { return mTalkNo; }
+ void setFear() { mFear = true; }
+ void setTalkFlag() { mTalkFlag = true; }
- static u8 mEvtSeqList[12];
+ static eventFunc mEvtSeqList[1];
private:
- /* 0x568 */ u8 field_0x568[0xe54 - 0x568];
+ /* 0xB48 */ Z2CreatureCitizen mSound;
+ /* 0xBEC */ u8 field_0xbec[0xbf0 - 0xbec];
+ /* 0xBF0 */ J3DModel* mObjModel;
+ /* 0xBF4 */ daNpcF_Lookat_c mLookat;
+ /* 0xC90 */ daNpcF_ActorMngr_c mActorMngr[1];
+ /* 0xC98 */ daNpcChat_HIO_c* mHIO;
+ /* 0xC9C */ dCcD_Cyl mCyl;
+ /* 0xDD8 */ actionFunc mAction;
+ /* 0xDE4 */ request_of_phase_process_class mPhase1;
+ /* 0xDEC */ request_of_phase_process_class mPhase2;
+ /* 0xDF4 */ request_of_phase_process_class mPhase3;
+ /* 0xDFC */ request_of_phase_process_class mPhase4;
+ /* 0xE04 */ fpc_ProcID field_0xe04;
+ /* 0xE08 */ int field_0xe08;
+ /* 0xE0C */ int field_0xe0c;
+ /* 0xE10 */ u8 mType;
+ /* 0xE14 */ int mObjNum;
+ /* 0xE18 */ int mMsgNo;
+ /* 0xE1C */ s16 field_0xe1c;
+ /* 0xE1E */ u16 mMode;
+ /* 0xE20 */ u8 mTalkNo;
+ /* 0xE21 */ u8 mTalkMemberNum;
+ /* 0xE22 */ u8 mTalkGroupNo;
+ /* 0xE23 */ u8 mTalkIconType;
+ /* 0xE24 */ daNpcChat_c* mTalkMembers[5];
+ /* 0xE38 */ u8 field_0xe38;
+ /* 0xE3C */ cXyz mBaseAttnPos;
+ /* 0xE48 */ bool mFear;
+ /* 0xE4A */ s16 mPlayerAngleY;
+ /* 0xE4C */ u8 mMotionAnm;
+ /* 0xE4D */ bool mTalkFlag;
+ /* 0xE4E */ u8 mTalkMotionNo;
+ /* 0xE4F */ bool field_0xe4f;
+ /* 0xE50 */ u8 mLookPlayerCheck;
+ /* 0xE51 */ u8 field_0xe51;
};
STATIC_ASSERT(sizeof(daNpcChat_c) == 0xe54);
-class daNpcChat_Param_c {
-public:
- /* 80986930 */ ~daNpcChat_Param_c();
-
- static u8 const m[108];
-};
-
-
#endif /* D_A_NPC_CHAT_H */