diff options
| author | Caroline Madsen <69010899+randomsalience@users.noreply.github.com> | 2025-02-26 03:41:51 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-02-26 00:41:51 -0800 |
| commit | 4453d0617ecf42e83e2266f0422ce3df25aa4216 (patch) | |
| tree | ce3b3420d3edb278b69d42f8d2cb427135ec5793 /include | |
| parent | e3d0b94122116ae1cd8188078ad6e710eb54a26c (diff) | |
d_a_npc_yelia equivalent (#2310)
Diffstat (limited to 'include')
| -rw-r--r-- | include/d/actor/d_a_demo_item.h | 7 | ||||
| -rw-r--r-- | include/d/actor/d_a_npc.h | 103 | ||||
| -rw-r--r-- | include/d/actor/d_a_npc_yelia.h | 150 |
3 files changed, 180 insertions, 80 deletions
diff --git a/include/d/actor/d_a_demo_item.h b/include/d/actor/d_a_demo_item.h index 70fe4cf951..f0ea257f2f 100644 --- a/include/d/actor/d_a_demo_item.h +++ b/include/d/actor/d_a_demo_item.h @@ -52,9 +52,12 @@ public: u32 chkArgFlag(u8 i_flag) { return field_0x93d & i_flag; } + void setOffsetPos(cXyz i_pos) { mOffsetPos = i_pos; } + void setMaxScale(f32 i_scale) { mMaxScale = i_scale; } + private: - /* 0x92C */ cXyz field_0x92c; - /* 0x938 */ f32 field_0x938; + /* 0x92C */ cXyz mOffsetPos; + /* 0x938 */ f32 mMaxScale; /* 0x93C */ u8 field_0x93c; /* 0x93D */ u8 field_0x93d; /* 0x93E */ u8 field_0x93e; diff --git a/include/d/actor/d_a_npc.h b/include/d/actor/d_a_npc.h index cea1ddea72..2e375eb90b 100644 --- a/include/d/actor/d_a_npc.h +++ b/include/d/actor/d_a_npc.h @@ -158,7 +158,7 @@ public: sVar3 * (1.0f / param_2); } - void setEyeAngleY(cXyz param_1, s16 param_2, int param_3, f32 param_4, s16 param_5) { + void setEyeAngleY(cXyz param_1, s16 param_2, BOOL param_3, f32 param_4, s16 param_5) { cXyz cStack_50; s16 sVar3 = 0; if (mAttnPosP != NULL) { @@ -169,7 +169,7 @@ public: sVar3 -= diff; sVar3 += param_5; } - if (param_3 != 0) { + if (param_3) { sVar3 = -sVar3; } mEyeAngle.y = field_0x132.y * (1.0f - 1.0f / param_4) + @@ -225,8 +225,8 @@ public: void clrDirectFlag() { mDirectFlag = 0; } int getMode() { return mMode; } - int setMode(int mode, int param_2) { - if (mode >= 0 && (param_2 != 0 || mode != mMode)) { + int setMode(int mode, BOOL param_2) { + if (mode >= 0 && (param_2 || mode != mMode)) { mActrMngr.remove(); mAttnPosP = NULL; field_0x14c = 0.0f; @@ -245,28 +245,48 @@ public: mDirectFlag = isDirect; } + enum LookMode { + /* 0 */ LOOK_NONE, + /* 1 */ LOOK_PLAYER, + /* 2 */ LOOK_ACTOR, + /* 3 */ LOOK_POS, + /* 4 */ LOOK_CAMERA, + /* 5 */ LOOK_MODE_5, + /* 6 */ LOOK_MODE_6, + /* 7 */ LOOK_MODE_7, + /* 8 */ LOOK_MODE_8, + }; + void lookNone(u8 isDirect) { - setMode(0, 0); + setMode(LOOK_NONE, FALSE); setDirect(isDirect); } void lookPlayer(u8 isDirect) { - setMode(1, 0); + setMode(LOOK_PLAYER, FALSE); setDirect(isDirect); } void lookCamera(u8 isDirect) { - setMode(4, 0); + setMode(LOOK_CAMERA, FALSE); setDirect(isDirect); } void lookActor(fopAc_ac_c* param_1, f32 param_2, u8 isDirect) { - if (setMode(2, mActrMngr.getActorP() != param_1) && fopAcM_IsActor(param_1)) { + if (setMode(LOOK_ACTOR, mActrMngr.getActorP() != param_1) && fopAcM_IsActor(param_1)) { mActrMngr.entry(param_1); field_0x14c = param_2; } setDirect(isDirect); } + + void lookPos(cXyz* i_pos, u8 i_direct) { + BOOL tmp = mAttnPosP != i_pos; + if (setMode(LOOK_POS, tmp)) { + mAttnPosP = i_pos; + } + setDirect(i_direct); + } }; class daNpcT_DmgStagger_c { @@ -299,8 +319,8 @@ private: }; struct daNpcT_evtData_c { - const char* eventName; - int num; + /* 0x0 */ const char* eventName; + /* 0x4 */ int num; }; struct daNpcT_faceMotionAnmData_c { @@ -412,7 +432,7 @@ public: /* 0x674 */ mDoExt_bpkAnm mBpkAnm; /* 0x68C */ dBgS_ObjAcch mAcch; /* 0x864 */ dCcD_Stts mCcStts; - /* 0x8A0 */ dBgS_AcchCir field_0x8a0; + /* 0x8A0 */ dBgS_AcchCir mAcchCir; /* 0x8E0 */ request_of_phase_process_class mPhase[10]; /* 0x930 */ cBgS_GndChk mGndChk; /* 0x96C */ daNpcT_MatAnm_c* mpMatAnm; @@ -420,10 +440,10 @@ public: /* 0x974 */ dMsgFlow_c mFlow; /* 0x9C0 */ dPaPoT_c field_0x9c0; /* 0xA40 */ dCcD_Stts field_0xa40; - /* 0xA7C */ u32 field_0xa7c; + /* 0xA7C */ u32 mFlowNodeNo; /* 0xA80 */ f32 field_0xa80; - /* 0xA84 */ f32 field_0xa84; - /* 0xA88 */ u8 field_0xa88; + /* 0xA84 */ f32 mMorfFrames; + /* 0xA88 */ bool mCreating; /* 0xA89 */ bool mTwilight; /* 0xA8C */ dBgS_GndChk field_0xa8c; /* 0xAE0 */ dBgS_LinChk mLinChk; @@ -432,7 +452,7 @@ public: /* 0xB98 */ daNpcT_ActorMngr_c mPlayerActorMngr; /* 0xBA0 */ daNpcT_ActorMngr_c field_0xba0; /* 0xBA8 */ daNpcT_JntAnm_c mJntAnm; - /* 0xD08 */ daNpcT_DmgStagger_c field_0xd08; + /* 0xD08 */ daNpcT_DmgStagger_c mStagger; /* 0xD24 */ cXyz mFootLPos; /* 0xD30 */ cXyz mFootRPos; /* 0xD3C */ cXyz mFootLOffset; @@ -450,14 +470,14 @@ public: /* 0xD9C */ u32 mMsgId; /* 0xDA0 */ u32 mHitodamaPrtclKey[2]; /* 0xDA8 */ u32 mPolSound; - /* 0xDAC */ int field_0xdac; + /* 0xDAC */ int mStaffId; /* 0xDB0 */ int mCutType; /* 0xDB4 */ int field_0xdb4; /* 0xDB8 */ int mDamageTimerStart; /* 0xDBC */ int mDamageTimer; /* 0xDC0 */ int mBtpPauseTimer; - /* 0xDC4 */ int field_0xdc4; - /* 0xDC8 */ s16 field_0xdc8; + /* 0xDC4 */ int mEventTimer; + /* 0xDC8 */ s16 mPlayerAngle; /* 0xDCA */ s16 mGroundAngle; /* 0xDCC */ u8 field_0xdcc[2]; /* 0xDCE */ s16 mFootLPolyAngle; @@ -471,10 +491,10 @@ public: /* 0xDE0 */ f32 field_0xde0; /* 0xDE4 */ f32 field_0xde4; /* 0xDE8 */ f32 field_0xde8; - /* 0xDEC */ f32 field_0xdec; - /* 0xDF0 */ f32 field_0xdf0; + /* 0xDEC */ f32 mCylH; + /* 0xDF0 */ f32 mWallR; /* 0xDF4 */ f32 mGroundH; - /* 0xDF8 */ f32 field_0xdf8; + /* 0xDF8 */ f32 mAttnFovY; /* 0xDFC */ f32 field_0xdfc; /* 0xE00 */ cXyz field_0xe00; /* 0xE0C */ cXyz field_0xe0c; @@ -483,9 +503,9 @@ public: /* 0xE1C */ s16 mEvtId; /* 0xE1E */ u16 mMorfLoops; /* 0xE20 */ u16 mBckLoops; - /* 0xE22 */ u16 field_0xe22; + /* 0xE22 */ u16 mMode; /* 0xE24 */ s8 mReverb; - /* 0xE25 */ u8 field_0xe25; + /* 0xE25 */ bool mHide; /* 0xE26 */ bool field_0xe26; /* 0xE27 */ u8 mFootLOnGround; /* 0xE28 */ u8 mFootROnGround; @@ -493,11 +513,11 @@ public: /* 0xE2A */ u8 field_0xe2a; /* 0xE2B */ bool mNoDraw; /* 0xE2C */ u8 field_0xe2c; - /* 0xE2D */ u8 field_0xe2d; - /* 0xE2E */ u8 field_0xe2e[2]; + /* 0xE2D */ bool field_0xe2d; + /* 0xE2E */ u8 mPreItemNo; /* 0xE30 */ u16 mEvtNo; /* 0xE32 */ bool mSpeakEvent; - /* 0xE33 */ u8 field_0xe33; + /* 0xE33 */ bool field_0xe33; /* 0xE34 */ u8 field_0xe34; /* 0xE35 */ u8 field_0xe35; /* 0xE36 */ u8 field_0xe36; @@ -506,16 +526,18 @@ public: /* 0xE3C vtable */ public: - daNpcT_c(daNpcT_faceMotionAnmData_c const* i_faceMotionAnmData, daNpcT_motionAnmData_c const* i_motionAnmData, - daNpcT_MotionSeqMngr_c::sequenceStepData_c const* param_3, int param_4, - daNpcT_MotionSeqMngr_c::sequenceStepData_c const* param_5, int param_6, daNpcT_evtData_c const* i_evtData, - char** i_arcNames) : + daNpcT_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) : mpFaceMotionAnmData(i_faceMotionAnmData), mpMotionAnmData(i_motionAnmData), mpEvtData(i_evtData), mpArcNames(i_arcNames), - mFaceMotionSeqMngr(param_3, param_4), - mMotionSeqMngr(param_5, param_6) { + mFaceMotionSeqMngr(i_faceMotionSequenceData, i_faceMotionStepNum), + mMotionSeqMngr(i_motionSequenceData, i_motionStepNum) { initialize(); } /* 80147FA4 */ static void tgHitCallBack(fopAc_ac_c*, dCcD_GObjInf*, fopAc_ac_c*, dCcD_GObjInf*); @@ -535,7 +557,7 @@ public: /* 801483F8 */ int loadRes(s8 const*, char const**); /* 801484AC */ void deleteRes(s8 const*, char const**); /* 8014852C */ int execute(); - /* 8014886C */ int draw(int, int, f32, _GXColorS10*, f32, int, int, int); + /* 8014886C */ int draw(BOOL, BOOL, f32, _GXColorS10*, f32, BOOL, BOOL, BOOL); /* 80148C70 */ void setEnvTevColor(); /* 80148CCC */ void setRoomNo(); /* 80148D10 */ int checkEndAnm(f32); @@ -621,9 +643,9 @@ public: /* 8014CCAC */ virtual void changeBck(int*, int*) {} /* 8014CCA8 */ virtual void changeBtp(int*, int*) {} /* 8014CCE8 */ virtual void changeBtk(int*, int*) {} - /* 8014A628 */ virtual bool setMotionAnm(int, f32, int); + /* 8014A628 */ virtual bool setMotionAnm(int, f32, BOOL); - bool checkHide() { return field_0xe25 || (!dComIfGs_wolfeye_effect_check() && mTwilight); } + bool checkHide() { return mHide || (!dComIfGs_wolfeye_effect_check() && mTwilight); } s16 checkStep() { return mStepMode == 1; } void setCommander(fopAc_ac_c* param_0) { field_0xba0.entry(param_0); } void setCutType(int i_cutType) { mCutType = i_cutType; } @@ -635,7 +657,7 @@ public: mPlayerActorMngr.initialize(); field_0xba0.initialize(); mJntAnm.initialize(); - field_0xd08.initialize(); + mStagger.initialize(); mItemId = fpcM_ERROR_PROCESS_ID_e; field_0xe26 = true; field_0xe1a = cM_rndF(65536.0f); @@ -650,6 +672,13 @@ public: static s16 mSrchName; static s32 mFindCount; + enum Mode { + /* 0 */ MODE_ENTER, + /* 1 */ MODE_INIT, + /* 2 */ MODE_RUN, + /* 3 */ MODE_EXIT, + }; + enum AnmFlags { ANM_PAUSE_MORF = 0x1, ANM_PAUSE_BTK = 0x2, @@ -679,6 +708,8 @@ void daNpcT_offTmpBit(u32 i_idx); void daNpcT_onTmpBit(u32 i_idx); BOOL daNpcT_chkTmpBit(u32 i_idx); void daNpcT_onEvtBit(u32 i_idx); +BOOL daNpcT_getPlayerInfoFromPlayerList(int param_0, int i_roomNo, cXyz* o_spawnPos, + csXyz* o_angle); struct daBaseNpc_matAnm_c { /* 8014D884 */ void calc(J3DMaterial*) const; diff --git a/include/d/actor/d_a_npc_yelia.h b/include/d/actor/d_a_npc_yelia.h index f902bbca0f..b43e1b9391 100644 --- a/include/d/actor/d_a_npc_yelia.h +++ b/include/d/actor/d_a_npc_yelia.h @@ -11,68 +11,134 @@ * @details * */ -class daNpc_Yelia_c : public fopAc_ac_c { +class daNpc_Yelia_c : public daNpcT_c { public: /* 80B4D30C */ ~daNpc_Yelia_c(); - /* 80B4D458 */ void create(); - /* 80B4D754 */ void CreateHeap(); - /* 80B4DC20 */ void Delete(); - /* 80B4DC54 */ void Execute(); - /* 80B4DC74 */ void Draw(); - /* 80B4DD08 */ void createHeapCallBack(fopAc_ac_c*); - /* 80B4DD28 */ void ctrlJointCallBack(J3DJoint*, int); - /* 80B4DD80 */ void getType(); - /* 80B4DDF8 */ void isDelete(); + /* 80B4D458 */ cPhs__Step create(); + /* 80B4D754 */ int CreateHeap(); + /* 80B4DC20 */ int Delete(); + /* 80B4DC54 */ int Execute(); + /* 80B4DC74 */ int Draw(); + /* 80B4DD08 */ static int createHeapCallBack(fopAc_ac_c*); + /* 80B4DD28 */ static int ctrlJointCallBack(J3DJoint*, int); + /* 80B4DD80 */ u8 getType(); + /* 80B4DDF8 */ BOOL isDelete(); /* 80B4DF10 */ void reset(); /* 80B4E068 */ void afterJntAnm(int); /* 80B4E0F4 */ void setParam(); - /* 80B4E2C0 */ void checkChangeEvt(); + /* 80B4E2C0 */ BOOL checkChangeEvt(); /* 80B4E5BC */ void setAfterTalkMotion(); /* 80B4E6A0 */ void srchActors(); - /* 80B4E7C8 */ void evtTalk(); - /* 80B4E868 */ void evtCutProc(); + /* 80B4E7C8 */ BOOL evtTalk(); + /* 80B4E868 */ BOOL evtCutProc(); /* 80B4E930 */ void action(); /* 80B4EA28 */ void beforeMove(); /* 80B4EAEC */ void setAttnPos(); /* 80B4EE4C */ void setCollision(); - /* 80B4EFA4 */ bool drawDbgInfo(); - /* 80B4EFAC */ void selectAction(); - /* 80B4F054 */ void chkAction(int (daNpc_Yelia_c::*)(void*)); - /* 80B4F080 */ void setAction(int (daNpc_Yelia_c::*)(void*)); - /* 80B4F128 */ void cutConversationAboutLoopHole(int); - /* 80B4F3E0 */ void cutTWResistance(int); - /* 80B4F534 */ void cutTakeWoodStatue(int); - /* 80B4FDD8 */ void cutClothTry(int); - /* 80B4FE78 */ void cutThankYou(int); - /* 80B50084 */ void wait(void*); - /* 80B5080C */ void horseWait(void*); - /* 80B50A0C */ void reminiscence(void*); - /* 80B50B60 */ void talk(void*); - /* 80B52104 */ daNpc_Yelia_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**); - /* 80B521E4 */ s32 getEyeballMaterialNo(); - /* 80B521EC */ s32 getHeadJointNo(); - /* 80B521F4 */ s32 getNeckJointNo(); - /* 80B521FC */ bool getBackboneJointNo(); - /* 80B52204 */ void checkChangeJoint(int); - /* 80B52214 */ void checkRemoveJoint(int); - /* 80B52224 */ bool chkXYItems(); + /* 80B4EFA4 */ BOOL drawDbgInfo(); + /* 80B4EFAC */ BOOL selectAction(); + /* 80B4F054 */ BOOL chkAction(BOOL (daNpc_Yelia_c::*)(void*)); + /* 80B4F080 */ BOOL setAction(BOOL (daNpc_Yelia_c::*)(void*)); + /* 80B4F128 */ BOOL cutConversationAboutLoopHole(int); + /* 80B4F3E0 */ BOOL cutTWResistance(int); + /* 80B4F534 */ BOOL cutTakeWoodStatue(int); + /* 80B4FDD8 */ BOOL cutClothTry(int); + /* 80B4FE78 */ BOOL cutThankYou(int); + /* 80B50084 */ BOOL wait(void*); + /* 80B5080C */ BOOL horseWait(void*); + /* 80B50A0C */ BOOL reminiscence(void*); + /* 80B50B60 */ BOOL talk(void*); + /* 80B52104 */ daNpc_Yelia_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) {} + /* 80B521E4 */ s32 getEyeballMaterialNo() { return 1; } + /* 80B521EC */ s32 getHeadJointNo() { return 4; } + /* 80B521F4 */ s32 getNeckJointNo() { return 3; } + /* 80B521FC */ s32 getBackboneJointNo() { return 1; } + /* 80B52204 */ BOOL checkChangeJoint(int i_jointNo) { return i_jointNo == 4; } + /* 80B52214 */ BOOL checkRemoveJoint(int i_jointNo) {return i_jointNo == 9; } + /* 80B52224 */ BOOL chkXYItems() { return true; } - static void* mCutNameList[6]; - static u8 mCutList[72]; + u32 getFlowNodeNo() { + u16 no = home.angle.x; + if (no == 0xffff) { + return -1; + } + return no; + } + + static char* mCutNameList[6]; + static int (daNpc_Yelia_c::*mCutList[6])(int); private: - /* 0x568 */ u8 field_0x568[0xff0 - 0x568]; + /* 0xE40 */ u8 field_0xe40[0xe44 - 0xe40]; + /* 0xE44 */ dCcD_Cyl mCcCyl; + /* 0xF80 */ u8 mType; + /* 0xF84 */ daNpcT_ActorMngr_c mActorMngr[4]; + /* 0xFA4 */ BOOL (daNpc_Yelia_c::*mpNextAction)(void*); + /* 0xFB0 */ BOOL (daNpc_Yelia_c::*mpAction)(void*); + /* 0xFBC */ daNpcT_Path_c mPath; + /* 0xFE4 */ fpc_ProcID mItemId; + /* 0xFE8 */ int mPendantTimer; + /* 0xFEC */ u8 field_0xfec; }; STATIC_ASSERT(sizeof(daNpc_Yelia_c) == 0xff0); class daNpc_Yelia_Param_c { public: - /* 80B5222C */ ~daNpc_Yelia_Param_c(); + struct param { + /* 0x00 */ f32 mAttnOffsetY; + /* 0x04 */ f32 mGravity; + /* 0x08 */ f32 mScale; + /* 0x0C */ f32 mShadowDepth; + /* 0x10 */ f32 mCcWeight; + /* 0x14 */ f32 mCylH; + /* 0x18 */ f32 mWallH; + /* 0x1C */ f32 mWallR; + /* 0x20 */ f32 mBodyUpAngle; + /* 0x24 */ f32 mBodyDownAngle; + /* 0x28 */ f32 mBodyLeftAngle; + /* 0x2C */ f32 mBodyRightAngle; + /* 0x30 */ f32 mHeadUpAngle; + /* 0x34 */ f32 mHeadDownAngle; + /* 0x38 */ f32 mHeadLeftAngle; + /* 0x3C */ f32 mHeadRightAngle; + /* 0x40 */ f32 mNeckAngleScl; + /* 0x44 */ f32 mMorfFrames; + /* 0x48 */ s16 mSpeakDistIdx; + /* 0x4A */ s16 mSpeakAngleIdx; + /* 0x4C */ s16 mTalkDistIdx; + /* 0x4E */ s16 mTalkAngleIdx; + /* 0x50 */ f32 mAttnFovY; + /* 0x54 */ f32 mAttnRadius; + /* 0x58 */ f32 mAttnUpperY; + /* 0x5C */ f32 mAttnLowerY; + /* 0x60 */ s16 field_0x60; + /* 0x62 */ s16 mDamageTimer; + /* 0x64 */ s16 mTestExpression; + /* 0x66 */ s16 mTestMotion; + /* 0x68 */ s16 mTestLookMode; + /* 0x6A */ bool mTest; + /* 0x6C */ f32 field_0x6c; + /* 0x70 */ f32 field_0x70; + /* 0x74 */ f32 field_0x74; + /* 0x78 */ f32 field_0x78; + /* 0x7C */ f32 field_0x7c; + /* 0x80 */ f32 field_0x80; + /* 0x84 */ f32 field_0x84; + /* 0x88 */ f32 field_0x88; + }; + + /* 80B5222C */ virtual ~daNpc_Yelia_Param_c() {} - static u8 const m[140]; + static param const m; }; #endif /* D_A_NPC_YELIA_H */ |
