d_a_npc_zra mostly done, misc npc work (#2140)

This commit is contained in:
Caroline Madsen
2024-04-26 22:20:26 -04:00
committed by GitHub
parent c163dc9ed3
commit 669c7d920b
61 changed files with 9187 additions and 3971 deletions
+289 -265
View File
@@ -20,7 +20,7 @@ struct daNpc_GetParam2 { // name unknown
/* 0x8 */ int arcIdx;
};
struct dPnt {};
struct dPnt : public dStage_dPnt_c {};
class daNpcT_ActorMngr_c {
private:
@@ -421,248 +421,6 @@ STATIC_ASSERT(sizeof(daNpcT_c) == 0xE40);
BOOL daNpcT_chkEvtBit(u32 i_idx);
BOOL daNpcT_chkPointInArea(cXyz param_0, cXyz param_1, cXyz param_2, s16 param_3, int param_4);
BOOL daNpcF_chkPointInArea(cXyz, cXyz, cXyz, s16);
class daNpcF_ActorMngr_c {
private:
/* 0x0 */ u32 mActorID;
public:
daNpcF_ActorMngr_c() { initialize(); }
/* 801506B0 */ void initialize();
/* 801506D8 */ void entry(unsigned int);
/* 801506BC */ void entry(fopAc_ac_c*);
/* 801506E0 */ void remove();
/* 801506EC */ fopAc_ac_c* getActorP();
/* 80155E40 */ virtual ~daNpcF_ActorMngr_c();
};
class daNpcF_c : public fopAc_ac_c {
protected:
/* 0x568 */ mDoExt_McaMorfSO* mpMorf;
/* 0x56C */ mDoExt_bckAnm mBckAnm;
/* 0x588 */ mDoExt_btpAnm mBtpAnm;
/* 0x5A0 */ mDoExt_btkAnm mBtkAnm;
/* 0x5B8 */ mDoExt_brkAnm mBrkAnm;
/* 0x5D0 */ dBgS_ObjAcch mAcch;
/* 0x7A8 */ dCcD_Stts mCcStts;
/* 0x7E4 */ dBgS_AcchCir mAcchCir;
/* 0x824 */ daNpcF_ActorMngr_c field_0x824;
/* 0x82C */ daNpcF_ActorMngr_c mAttnActor[5];
/* 0x854 */ cXyz mLookatPos[3];
/* 0x878 */ cXyz mLookPos;
/* 0x884 */ cXyz field_0x884;
/* 0x890 */ cXyz field_0x890;
/* 0x89C */ cXyz field_0x89c;
/* 0x8A8 */ cXyz field_0x8a8;
/* 0x8B4 */ cXyz field_0x8b4;
/* 0x8C0 */ cXyz field_0x8c0;
/* 0x8CC */ cXyz field_0x8cc;
/* 0x8D8 */ cXyz field_0x8d8;
/* 0x8E4 */ cXyz mHeadPos;
/* 0x8F0 */ csXyz field_0x8f0;
/* 0x8F6 */ csXyz field_0x8f6;
/* 0x8FC */ csXyz mEyeAngle;
/* 0x902 */ csXyz mHeadAngle;
/* 0x908 */ csXyz field_0x908[3];
/* 0x91A */ csXyz field_0x91a[3];
/* 0x92C */ int mCutIndex;
/* 0x930 */ u32 field_0x930;
/* 0x934 */ int mAttnIdx;
/* 0x938 */ int mAttnChangeTimer;
/* 0x93C */ int mAttnActorTimer[5];
/* 0x950 */ int field_0x950;
/* 0x954 */ int field_0x954;
/* 0x958 */ int field_0x958;
/* 0x95C */ int field_0x95c;
/* 0x960 */ int field_0x960;
/* 0x964 */ int field_0x964;
/* 0x968 */ int field_0x968;
/* 0x96C */ int field_0x96c;
/* 0x970 */ f32 field_0x970;
/* 0x974 */ f32 mExpressionMorfOverride;
/* 0x978 */ f32 mExpressionMorf;
/* 0x97C */ f32 mMotionMorfOverride;
/* 0x980 */ f32 field_0x980;
/* 0x984 */ f32 field_0x984[3];
/* 0x990 */ u16 field_0x990;
/* 0x992 */ u16 field_0x992;
/* 0x994 */ u16 field_0x994;
/* 0x996 */ s16 field_0x996;
/* 0x998 */ u16 field_0x998;
/* 0x99C */ u32 mAnmFlags;
/* 0x9A0 */ u32 field_0x9a0;
/* 0x9A4 */ u32 field_0x9a4;
/* 0x9A8 */ u32 mHitodamaParticleKey[2];
/* 0x9B0 */ u32 field_0x9b0;
/* 0x9B4 */ int mFlowNodeNo;
/* 0x9B8 */ cXyz field_0x9b8;
/* 0x9C4 */ cXyz field_0x9c4;
/* 0x9D0 */ s16 field_0x9d0;
/* 0x9D2 */ s16 field_0x9d2;
/* 0x9D4 */ s16 mEventIdx;
/* 0x9D6 */ s16 mExpressionPhase;
/* 0x9D8 */ s16 mExpressionPrevPhase;
/* 0x9DA */ s16 mMotionPhase;
/* 0x9DC */ s16 mMotionPrevPhase;
/* 0x9DE */ s16 mExpression;
/* 0x9E0 */ s16 mMotion;
/* 0x9E2 */ u16 mMotionLoops;
/* 0x9E4 */ u16 mExpressionLoops;
/* 0x9E6 */ u16 mOrderEvtNo;
/* 0x9E8 */ s8 field_0x9e8;
/* 0x9E9 */ u8 field_0x9e9;
/* 0x9EA */ u8 field_0x9ea;
/* 0x9EB */ bool field_0x9eb;
/* 0x9EC */ u8 field_0x9ec;
/* 0x9ED */ bool field_0x9ed;
/* 0x9EE */ bool field_0x9ee;
/* 0x9EF */ u8 field_0x9ef;
/* 0x9F0 */ u8 field_0x9f0;
/* 0x9F1 */ u8 field_0x9f1;
/* 0x9F2 */ bool mHide;
/* 0x9f3 */ u8 field_0x9f3;
/* 0x9F4 */ bool mTwilight;
/* 0x9F5 */ u8 field_0x9f5;
/* 0x9F6 */ u8 field_0x9f6;
/* 0x9F8 */ dMsgFlow_c mFlow;
/* 0xA44 */ cBgS_GndChk field_0xa44;
/* 0xA80 */ dBgS_GndChk field_0xa80;
/* 0xAD4 */ dBgS_LinChk field_0xad4;
public:
struct daNpcF_anmPlayData {
u16 idx;
f32 morf;
s32 numLoops;
};
enum AnmFlags {
ANM_PAUSE_MORF = 0x0001,
ANM_PAUSE_BTK = 0x0002,
ANM_PAUSE_BRK = 0x0004,
ANM_PLAY_MORF = 0x0008,
ANM_PLAY_BTK = 0x0010,
ANM_PLAY_BRK = 0x0020,
ANM_PAUSE_BCK = 0x0040,
ANM_PAUSE_BTP = 0x0080,
ANM_PLAY_BCK = 0x0100,
ANM_PLAY_BTP = 0x0200,
ANM_FLAG_400 = 0x0400,
ANM_FLAG_800 = 0x0800,
ANM_PAUSE_EXPRESSION = 0x1000,
ANM_MOTION_FLAGS = ANM_PAUSE_MORF | ANM_PAUSE_BTK | ANM_PAUSE_BRK | ANM_PLAY_MORF |
ANM_PLAY_BTK | ANM_PLAY_BRK,
ANM_EXPRESSION_FLAGS = ANM_PAUSE_BCK | ANM_PAUSE_BTP | ANM_PLAY_BCK | ANM_PLAY_BTP |
ANM_FLAG_400 | ANM_FLAG_800 | ANM_PAUSE_EXPRESSION,
ANM_PAUSE_ALL = ANM_PAUSE_MORF | ANM_PAUSE_BTK | ANM_PAUSE_BRK | ANM_PAUSE_BCK |
ANM_PAUSE_BTP | ANM_PAUSE_EXPRESSION,
};
/* 80152014 */ BOOL execute();
/* 801522AC */ BOOL draw(int, int, f32, _GXColorS10*, int);
/* 80152614 */ void tgHitCallBack(fopAc_ac_c*, dCcD_GObjInf*, fopAc_ac_c*, dCcD_GObjInf*);
/* 80152654 */ static void* srchAttnActor1(void*, void*);
/* 801526E8 */ static void* srchActor(void*, void*);
/* 801528C8 */ void initialize();
/* 80152B2C */ J3DAnmTransformKey* getTrnsfrmKeyAnmP(char*, int);
/* 80152B68 */ J3DAnmTexPattern* getTexPtrnAnmP(char*, int);
/* 80152BA4 */ J3DAnmTextureSRTKey* getTexSRTKeyAnmP(char*, int);
/* 80152BE0 */ J3DAnmTevRegKey* getTevRegKeyAnmP(char*, int);
/* 80152C1C */ BOOL setMcaMorfAnm(J3DAnmTransformKey* i_anm, f32 i_rate, f32 i_morf, int i_attr,
int i_start, int i_end);
/* 80152C80 */ BOOL setBckAnm(J3DAnmTransform* i_bck, f32 i_rate, int i_attr, int i_start,
int i_end, bool i_modify);
/* 80152CC4 */ BOOL setBtpAnm(J3DAnmTexPattern* i_btp, J3DModelData* i_modelData, f32 i_rate,
int i_attr);
/* 80152D04 */ BOOL setBtkAnm(J3DAnmTextureSRTKey* i_btk, J3DModelData* i_modelData, f32 i_rate,
int i_attr);
/* 80152D44 */ BOOL setBrkAnm(J3DAnmTevRegKey* i_brk, J3DModelData* i_modelData, f32 i_rate,
int i_attr);
/* 80152D84 */ void setEnvTevColor();
/* 80152DE0 */ void setRoomNo();
/* 80152E24 */ BOOL chkEndAnm(f32);
/* 80152EC4 */ BOOL chkEndAnm(J3DFrameCtrl*, f32);
/* 80152F40 */ BOOL playAllAnm();
/* 80153150 */ void playExpressionAnm(daNpcF_c::daNpcF_anmPlayData***);
/* 80153264 */ void playMotionAnm(daNpcF_c::daNpcF_anmPlayData***);
/* 8015337C */ void setLookatMtx(int, int*, f32);
/* 80153578 */ void hitChk2(dCcD_Cyl*, int, int);
/* 80153658 */ void setDamage(int, int, int);
/* 80153718 */ int ctrlMsgAnm(int&, int&, fopAc_ac_c*, int);
/* 8015387C */ void orderEvent(int, char*, u16, u16, u8, u16);
/* 80153954 */ void changeEvent(char*, char*, u16, u16);
/* 801539F0 */ BOOL chkActorInSight(fopAc_ac_c*, f32);
/* 80153A78 */ BOOL chkActorInArea(fopAc_ac_c*, cXyz, cXyz, s16);
/* 80153BDC */ BOOL chkActorInAttnArea(fopAc_ac_c*, fopAc_ac_c*, int);
/* 80153D1C */ int initTalk(int, fopAc_ac_c**);
/* 80153D84 */ BOOL talkProc(int*, BOOL, fopAc_ac_c**);
/* 80153EF4 */ BOOL turn(s16, f32, int);
/* 801540A4 */ BOOL step(s16, int, int, int);
/* 80154250 */ void setAngle(s16);
/* 80154278 */ u8 getDistTableIdx(int, int);
/* 801542A0 */ fopAc_ac_c* getEvtAreaTagP(int, int);
/* 8015436C */ fopAc_ac_c* getAttnActorP(int, fpcLyIt_JudgeFunc, f32, f32, f32, f32, s16,
int, int);
/* 80154730 */ BOOL chkActorInSight2(fopAc_ac_c*, f32, s16);
/* 80154834 */ BOOL chkPointInArea(cXyz, cXyz, f32, f32, f32, s16);
/* 801548F4 */ BOOL chkPointInArea(cXyz, cXyz, cXyz, s16);
/* 8015496C */ cXyz getAttentionPos(fopAc_ac_c*);
/* 801549E0 */ BOOL chkFindPlayer2(int, s16);
/* 80154BD8 */ void setHitodamaPrtcl();
/* 80155BF4 */ virtual ~daNpcF_c();
/* 80155BC8 */ virtual void setParam();
/* 80155BC0 */ virtual BOOL main();
/* 80155BD8 */ virtual BOOL ctrlBtk();
/* 80155BBC */ virtual void adjustShapeAngle();
/* 8015276C */ virtual void setMtx();
/* 801527FC */ virtual void setMtx2();
/* 80155BB8 */ virtual void setAttnPos();
/* 80155BB4 */ virtual void setCollisions();
/* 80155BE0 */ virtual bool setExpressionAnm(int i_idx, bool i_modify);
/* 80155EC8 */ virtual bool setExpressionBtp(int i_idx);
/* 80155BF0 */ virtual void setExpression(int i_expression, f32 i_morf);
/* 80155BE8 */ virtual void setMotionAnm(int i_idx, f32 i_morf);
/* 80155BEC */ virtual void setMotion(int i_motion, f32 i_morf, int i_restart);
/* 80155BD0 */ virtual BOOL drawDbgInfo();
/* 80155BCC */ virtual void drawOtherMdls();
BOOL chkActorInSpeakArea(fopAc_ac_c* i_actorCheck, fopAc_ac_c* i_actorArea) {
return chkActorInAttnArea(i_actorCheck, i_actorArea, attention_info.field_0x0[3]);
}
BOOL chkPlayerInSpeakArea(fopAc_ac_c* i_actor) {
return chkActorInSpeakArea(daPy_getPlayerActorClass(), i_actor);
}
BOOL chkActorInTalkArea(fopAc_ac_c* i_actorCheck, fopAc_ac_c* i_actorArea) {
return chkActorInAttnArea(i_actorCheck, i_actorArea, attention_info.field_0x0[1]);
}
BOOL chkPlayerInTalkArea(fopAc_ac_c* i_actor) {
return chkActorInTalkArea(daPy_getPlayerActorClass(), i_actor);
}
BOOL checkHide() { return mHide || (mTwilight && !dComIfGs_wolfeye_effect_check()); }
void setIntDemander(fopAc_ac_c* i_actor) { field_0x824.entry(i_actor); }
void setIntFlowNodeNo(int i_flowNodeNo) { mFlowNodeNo = i_flowNodeNo; }
void onInterrupt(u8 param_0) { field_0x9ef = param_0; }
static u8 const mCcDObjInfo[48];
static dCcD_SrcCyl mCcDCyl;
static dCcD_SrcSph mCcDSph;
static fopAc_ac_c* mFindActorPList[100];
static s32 mFindCount;
static s16 mSrchActorName;
};
STATIC_ASSERT(sizeof(daNpcF_c) == 0xB48);
BOOL daNpcF_chkEvtBit(u32 i_idx);
BOOL daNpcF_chkTmpBit(u32 i_idx);
void daNpcF_offTmpBit(u32 i_idx);
int daNpcF_getPlayerInfoFromPlayerList(int param_0, int i_roomNo, cXyz& param_2, csXyz& param_3);
s16 daNpcF_getGroundAngle(cBgS_PolyInfo*, s16);
struct daBaseNpc_matAnm_c {
/* 8014D884 */ void calc(J3DMaterial*) const;
@@ -830,6 +588,266 @@ public:
static u8 m_set_func[4];
};
class daNpcF_ActorMngr_c {
private:
/* 0x0 */ u32 mActorID;
public:
daNpcF_ActorMngr_c() { initialize(); }
/* 801506B0 */ void initialize();
/* 801506D8 */ void entry(unsigned int);
/* 801506BC */ void entry(fopAc_ac_c*);
/* 801506E0 */ void remove();
/* 801506EC */ fopAc_ac_c* getActorP();
/* 80155E40 */ virtual ~daNpcF_ActorMngr_c();
};
class daNpcF_c : public fopAc_ac_c {
protected:
/* 0x568 */ mDoExt_McaMorfSO* mpMorf;
/* 0x56C */ mDoExt_bckAnm mBckAnm;
/* 0x588 */ mDoExt_btpAnm mBtpAnm;
/* 0x5A0 */ mDoExt_btkAnm mBtkAnm;
/* 0x5B8 */ mDoExt_brkAnm mBrkAnm;
/* 0x5D0 */ dBgS_ObjAcch mAcch;
/* 0x7A8 */ dCcD_Stts mCcStts;
/* 0x7E4 */ dBgS_AcchCir mAcchCir;
/* 0x824 */ daNpcF_ActorMngr_c field_0x824;
/* 0x82C */ daNpcF_ActorMngr_c mAttnActor[5];
/* 0x854 */ cXyz mLookatPos[3];
/* 0x878 */ cXyz mLookPos;
/* 0x884 */ cXyz field_0x884;
/* 0x890 */ cXyz field_0x890;
/* 0x89C */ cXyz field_0x89c;
/* 0x8A8 */ cXyz field_0x8a8;
/* 0x8B4 */ cXyz field_0x8b4;
/* 0x8C0 */ cXyz field_0x8c0;
/* 0x8CC */ cXyz field_0x8cc;
/* 0x8D8 */ cXyz field_0x8d8;
/* 0x8E4 */ cXyz mHeadPos;
/* 0x8F0 */ csXyz mCurAngle;
/* 0x8F6 */ csXyz mOldAngle;
/* 0x8FC */ csXyz mEyeAngle;
/* 0x902 */ csXyz mHeadAngle;
/* 0x908 */ csXyz field_0x908[3];
/* 0x91A */ csXyz mLookatAngle[3];
/* 0x92C */ int mCutIndex;
/* 0x930 */ u32 field_0x930;
/* 0x934 */ int mAttnIdx;
/* 0x938 */ int mAttnChangeTimer;
/* 0x93C */ int mAttnActorTimer[5];
/* 0x950 */ int mMsgTimer;
/* 0x954 */ int field_0x954;
/* 0x958 */ int field_0x958;
/* 0x95C */ int field_0x95c;
/* 0x960 */ int mEventTimer;
/* 0x964 */ int mBtpTimer;
/* 0x968 */ int mTurnAmount;
/* 0x96C */ int mTurnMode;
/* 0x970 */ f32 mTurnStepNum;
/* 0x974 */ f32 mExpressionMorfOverride;
/* 0x978 */ f32 mExpressionMorf;
/* 0x97C */ f32 mMotionMorfOverride;
/* 0x980 */ f32 mGroundH;
/* 0x984 */ f32 field_0x984[3];
/* 0x990 */ s16 field_0x990;
/* 0x992 */ s16 field_0x992;
/* 0x994 */ s16 mTurnStartAngle;
/* 0x996 */ s16 mTurnTargetAngle;
/* 0x998 */ u16 field_0x998;
/* 0x99C */ u32 mAnmFlags;
/* 0x9A0 */ u32 mShadowKey;
/* 0x9A4 */ u32 field_0x9a4;
/* 0x9A8 */ u32 mHitodamaParticleKey[2];
/* 0x9B0 */ u32 mPolySound;
/* 0x9B4 */ int mFlowNodeNo;
/* 0x9B8 */ cXyz field_0x9b8;
/* 0x9C4 */ cXyz field_0x9c4;
/* 0x9D0 */ s16 field_0x9d0;
/* 0x9D2 */ s16 field_0x9d2;
/* 0x9D4 */ s16 mEventIdx;
/* 0x9D6 */ s16 mExpressionPhase;
/* 0x9D8 */ s16 mExpressionPrevPhase;
/* 0x9DA */ s16 mMotionPhase;
/* 0x9DC */ s16 mMotionPrevPhase;
/* 0x9DE */ s16 mExpression;
/* 0x9E0 */ s16 mMotion;
/* 0x9E2 */ u16 mMotionLoops;
/* 0x9E4 */ u16 mExpressionLoops;
/* 0x9E6 */ u16 mOrderEvtNo;
/* 0x9E8 */ s8 mReverb;
/* 0x9E9 */ bool mOrderSpeakEvt;
/* 0x9EA */ bool field_0x9ea;
/* 0x9EB */ bool field_0x9eb;
/* 0x9EC */ bool field_0x9ec;
/* 0x9ED */ bool mOrderNewEvt;
/* 0x9EE */ bool field_0x9ee;
/* 0x9EF */ u8 field_0x9ef;
/* 0x9F0 */ u8 field_0x9f0;
/* 0x9F1 */ u8 field_0x9f1;
/* 0x9F2 */ bool mHide;
/* 0x9f3 */ u8 field_0x9f3;
/* 0x9F4 */ bool mTwilight;
/* 0x9F5 */ u8 field_0x9f5;
/* 0x9F6 */ u8 field_0x9f6;
/* 0x9F8 */ dMsgFlow_c mFlow;
/* 0xA44 */ cBgS_GndChk mGndChk;
/* 0xA80 */ dBgS_GndChk field_0xa80;
/* 0xAD4 */ dBgS_LinChk field_0xad4;
public:
struct daNpcF_anmPlayData {
u16 idx;
f32 morf;
s32 numLoops;
};
enum AnmFlags {
ANM_PAUSE_MORF = 0x0001,
ANM_PAUSE_BTK = 0x0002,
ANM_PAUSE_BRK = 0x0004,
ANM_PLAY_MORF = 0x0008,
ANM_PLAY_BTK = 0x0010,
ANM_PLAY_BRK = 0x0020,
ANM_PAUSE_BCK = 0x0040,
ANM_PAUSE_BTP = 0x0080,
ANM_PLAY_BCK = 0x0100,
ANM_PLAY_BTP = 0x0200,
ANM_FLAG_400 = 0x0400,
ANM_FLAG_800 = 0x0800,
ANM_PAUSE_EXPRESSION = 0x1000,
ANM_PAUSE_BPK = 0x2000,
ANM_PLAY_BPK = 0x4000,
ANM_MOTION_FLAGS = ANM_PAUSE_MORF | ANM_PAUSE_BTK | ANM_PAUSE_BRK | ANM_PLAY_MORF |
ANM_PLAY_BTK | ANM_PLAY_BRK,
ANM_EXPRESSION_FLAGS = ANM_PAUSE_BCK | ANM_PAUSE_BTP | ANM_PLAY_BCK | ANM_PLAY_BTP |
ANM_FLAG_400 | ANM_FLAG_800 | ANM_PAUSE_EXPRESSION,
ANM_PAUSE_ALL = ANM_PAUSE_MORF | ANM_PAUSE_BTK | ANM_PAUSE_BRK | ANM_PAUSE_BCK |
ANM_PAUSE_BTP | ANM_PAUSE_EXPRESSION,
};
enum LookMode {
/* 0 */ LOOK_NONE,
/* 1 */ LOOK_RESET,
/* 2 */ LOOK_PLAYER,
/* 3 */ LOOK_PLAYER_TALK,
/* 4 */ LOOK_ACTOR,
/* 5 */ LOOK_ATTN,
};
/* 80152014 */ BOOL execute();
/* 801522AC */ BOOL draw(BOOL, BOOL, f32, _GXColorS10*, BOOL);
/* 80152614 */ static void tgHitCallBack(fopAc_ac_c*, dCcD_GObjInf*, fopAc_ac_c*,
dCcD_GObjInf*);
/* 80152654 */ static void* srchAttnActor1(void*, void*);
/* 801526E8 */ static void* srchActor(void*, void*);
/* 801528C8 */ void initialize();
/* 80152B2C */ J3DAnmTransformKey* getTrnsfrmKeyAnmP(char*, int);
/* 80152B68 */ J3DAnmTexPattern* getTexPtrnAnmP(char*, int);
/* 80152BA4 */ J3DAnmTextureSRTKey* getTexSRTKeyAnmP(char*, int);
/* 80152BE0 */ J3DAnmTevRegKey* getTevRegKeyAnmP(char*, int);
/* 80152C1C */ BOOL setMcaMorfAnm(J3DAnmTransformKey* i_anm, f32 i_rate, f32 i_morf, int i_attr,
int i_start, int i_end);
/* 80152C80 */ BOOL setBckAnm(J3DAnmTransform* i_bck, f32 i_rate, int i_attr, int i_start,
int i_end, bool i_modify);
/* 80152CC4 */ BOOL setBtpAnm(J3DAnmTexPattern* i_btp, J3DModelData* i_modelData, f32 i_rate,
int i_attr);
/* 80152D04 */ BOOL setBtkAnm(J3DAnmTextureSRTKey* i_btk, J3DModelData* i_modelData, f32 i_rate,
int i_attr);
/* 80152D44 */ BOOL setBrkAnm(J3DAnmTevRegKey* i_brk, J3DModelData* i_modelData, f32 i_rate,
int i_attr);
/* 80152D84 */ void setEnvTevColor();
/* 80152DE0 */ void setRoomNo();
/* 80152E24 */ BOOL chkEndAnm(f32);
/* 80152EC4 */ BOOL chkEndAnm(J3DFrameCtrl*, f32);
/* 80152F40 */ BOOL playAllAnm();
/* 80153150 */ void playExpressionAnm(daNpcF_c::daNpcF_anmPlayData***);
/* 80153264 */ void playMotionAnm(daNpcF_c::daNpcF_anmPlayData***);
/* 8015337C */ void setLookatMtx(int, int*, f32);
/* 80153578 */ void hitChk2(dCcD_Cyl*, int, int);
/* 80153658 */ void setDamage(int, int, int);
/* 80153718 */ int ctrlMsgAnm(int&, int&, fopAc_ac_c*, BOOL);
/* 8015387C */ void orderEvent(int, char*, u16, u16, u8, u16);
/* 80153954 */ void changeEvent(char*, char*, u16, u16);
/* 801539F0 */ BOOL chkActorInSight(fopAc_ac_c*, f32);
/* 80153A78 */ BOOL chkActorInArea(fopAc_ac_c*, cXyz, cXyz, s16);
/* 80153BDC */ BOOL chkActorInAttnArea(fopAc_ac_c*, fopAc_ac_c*, int);
/* 80153D1C */ BOOL initTalk(int, fopAc_ac_c**);
/* 80153D84 */ BOOL talkProc(int*, BOOL, fopAc_ac_c**);
/* 80153EF4 */ BOOL turn(s16, f32, int);
/* 801540A4 */ BOOL step(s16, int, int, int);
/* 80154250 */ void setAngle(s16);
/* 80154278 */ u8 getDistTableIdx(int, int);
/* 801542A0 */ fopAc_ac_c* getEvtAreaTagP(int, int);
/* 8015436C */ fopAc_ac_c* getAttnActorP(BOOL, fpcLyIt_JudgeFunc, f32, f32, f32, f32, s16,
int, BOOL);
/* 80154730 */ BOOL chkActorInSight2(fopAc_ac_c*, f32, s16);
/* 80154834 */ BOOL chkPointInArea(cXyz, cXyz, f32, f32, f32, s16);
/* 801548F4 */ BOOL chkPointInArea(cXyz, cXyz, cXyz, s16);
/* 8015496C */ cXyz getAttentionPos(fopAc_ac_c*);
/* 801549E0 */ BOOL chkFindPlayer2(BOOL, s16);
/* 80154BD8 */ void setHitodamaPrtcl();
/* 80155BF4 */ virtual ~daNpcF_c();
/* 80155BC8 */ virtual void setParam();
/* 80155BC0 */ virtual BOOL main();
/* 80155BD8 */ virtual BOOL ctrlBtk();
/* 80155BBC */ virtual void adjustShapeAngle();
/* 8015276C */ virtual void setMtx();
/* 801527FC */ virtual void setMtx2();
/* 80155BB8 */ virtual void setAttnPos();
/* 80155BB4 */ virtual void setCollisions();
/* 80155BE0 */ virtual bool setExpressionAnm(int i_idx, bool i_modify);
/* 80155EC8 */ virtual bool setExpressionBtp(int i_idx);
/* 80155BF0 */ virtual void setExpression(int i_expression, f32 i_morf);
/* 80155BE8 */ virtual void setMotionAnm(int i_idx, f32 i_morf);
/* 80155BEC */ virtual void setMotion(int i_motion, f32 i_morf, int i_restart);
/* 80155BD0 */ virtual BOOL drawDbgInfo();
/* 80155BCC */ virtual void drawOtherMdls();
BOOL chkActorInSpeakArea(fopAc_ac_c* i_actorCheck, fopAc_ac_c* i_actorArea) {
return chkActorInAttnArea(i_actorCheck, i_actorArea, attention_info.field_0x0[3]);
}
BOOL chkPlayerInSpeakArea(fopAc_ac_c* i_actor) {
return chkActorInSpeakArea(daPy_getPlayerActorClass(), i_actor);
}
BOOL chkActorInTalkArea(fopAc_ac_c* i_actorCheck, fopAc_ac_c* i_actorArea) {
return chkActorInAttnArea(i_actorCheck, i_actorArea, attention_info.field_0x0[1]);
}
BOOL chkPlayerInTalkArea(fopAc_ac_c* i_actor) {
return chkActorInTalkArea(daPy_getPlayerActorClass(), i_actor);
}
BOOL checkHide() { return mHide || (mTwilight && !dComIfGs_wolfeye_effect_check()); }
void setIntDemander(fopAc_ac_c* i_actor) { field_0x824.entry(i_actor); }
void setIntFlowNodeNo(int i_flowNodeNo) { mFlowNodeNo = i_flowNodeNo; }
void onInterrupt(u8 param_0) { field_0x9ef = param_0; }
static u8 const mCcDObjInfo[48];
static dCcD_SrcCyl mCcDCyl;
static dCcD_SrcSph mCcDSph;
static fopAc_ac_c* mFindActorPList[100];
static s32 mFindCount;
static s16 mSrchActorName;
};
STATIC_ASSERT(sizeof(daNpcF_c) == 0xB48);
BOOL daNpcF_chkEvtBit(u32 i_idx);
void daNpcF_onEvtBit(u32 i_idx);
BOOL daNpcF_chkTmpBit(u32 i_idx);
void daNpcF_offTmpBit(u32 i_idx);
BOOL daNpcF_chkPointInArea(cXyz, cXyz, cXyz, s16);
int daNpcF_getPlayerInfoFromPlayerList(int param_0, int i_roomNo, cXyz& param_2, csXyz& param_3);
s16 daNpcF_getGroundAngle(cBgS_PolyInfo*, s16);
BOOL daNpcF_pntVsLineSegmentLengthSquare2D(f32 i_pntX, f32 i_pntZ, f32 i_startX, f32 i_startZ,
f32 i_endX, f32 i_endZ, f32* o_projX, f32* o_projZ,
f32* o_dist2);
BOOL daNpcF_chkPassed(cXyz i_pos, dPnt* i_points, u16 i_idx, u16 i_num, BOOL i_isClosed,
BOOL i_isReversed);
class daNpcF_MatAnm_c : public J3DMaterialAnm {
private:
/* 0x0F4 */ mutable f32 field_0xF4;
@@ -854,7 +872,7 @@ class daNpcF_SPCurve_c {
private:
/* 0x00 */ u16 mNurbs;
/* 0x02 */ u16 field_0x02;
/* 0x04 */ u8 field_0x04;
/* 0x04 */ bool mIsReversed;
/* 0x05 */ bool mIsClosed;
/* 0x08 */ dStage_dPnt_c mPoints[96];
@@ -869,13 +887,13 @@ public:
}; // Size: 0x60C
class daNpcF_Path_c {
private:
protected:
/* 0x00 */ u16 mIdx;
/* 0x02 */ u8 field_0x02;
/* 0x03 */ u8 mIsClosed;
/* 0x02 */ u8 mIsReversed;
/* 0x03 */ bool mIsClosed;
/* 0x04 */ dPath* mpRoomPath;
/* 0x08 */ f32 field_0x08;
/* 0x0C */ f32 field_0x0C;
/* 0x08 */ f32 mRange;
/* 0x0C */ f32 mPosDst;
/* 0x10 */ f32 field_0x10;
/* 0x14 */ cXyz mPosition;
/* 0x20 */ daNpcF_SPCurve_c mSPCurve;
@@ -883,15 +901,15 @@ private:
public:
/* 80150900 */ void initialize();
/* 8015095C */ int setPathInfo(u8, s8, u8);
/* 80150A24 */ int chkPassed(cXyz);
/* 80150A7C */ void chkPassedDst(cXyz);
/* 80150A24 */ BOOL chkPassed(cXyz);
/* 80150A7C */ BOOL chkPassedDst(cXyz);
/* 80150BBC */ void reverse();
/* 80150BE0 */ int setNextIdx();
/* 80150BE0 */ BOOL setNextIdx();
/* 80150C18 */ int getNextIdx();
/* 80150C60 */ u16 getBeforeIdx();
/* 80150CA8 */ int getBeforePos(cXyz&);
/* 80150D44 */ int getNextPos(cXyz&);
/* 80150DE0 */ int getDstPos(cXyz, cXyz&);
/* 80150C60 */ int getBeforeIdx();
/* 80150CA8 */ BOOL getBeforePos(cXyz&);
/* 80150D44 */ BOOL getNextPos(cXyz&);
/* 80150DE0 */ BOOL getDstPos(cXyz, cXyz&);
/* 80150EB4 */ void setNextIdxDst(cXyz);
daNpcF_Path_c() {
@@ -901,30 +919,36 @@ public:
virtual ~daNpcF_Path_c() {}
int getIdx() { return mIdx; };
void setIdx(int i_idx) { mIdx = i_idx; }
u8 getArg0(int i_idx) { return mpRoomPath->m_points[i_idx].mArg0; }
Vec getPntPos(int i_idx) { return mpRoomPath->m_points[i_idx].m_position; }
int chkClose() { return dPath_ChkClose(mpRoomPath); }
BOOL chkClose() { return dPath_ChkClose(mpRoomPath); }
BOOL chkReverse() { return mIsReversed == true; }
void onReverse() { mIsReversed = true; }
dPath* getPathInfo() { return mpRoomPath; }
void setRange(f32 i_range) { mRange = i_range; }
}; // Size: 0x630
class daNpcF_Lookat_c {
private:
/* 0x00 */ cXyz field_0x00[4];
/* 0x00 */ cXyz mJointPos[4];
/* 0x30 */ cXyz* mAttnPos;
/* 0x34 */ csXyz field_0x34[4];
/* 0x4C */ csXyz field_0x4c[4];
/* 0x64 */ csXyz field_0x64[4];
/* 0x34 */ csXyz mAngularMoveDis[4];
/* 0x4C */ csXyz mMinAngle[4];
/* 0x64 */ csXyz mMaxAngle[4];
/* 0x7C */ csXyz mRotAngle[4];
/* 0x94 */ u8 field_0x94[4];
/* 0x94 */ bool field_0x94[4];
/* 0x98 vtable */
public:
/* 80151038 */ void initialize();
/* 801510B8 */ void setParam(f32, f32, f32, f32, f32, f32, f32, f32, f32, f32, f32, f32, s16,
cXyz*);
/* 80151350 */ void calc(fopAc_ac_c*, f32 (*)[4], csXyz**, int, int, int);
/* 80151350 */ void calc(fopAc_ac_c*, Mtx, csXyz**, BOOL, int, BOOL);
/* 801515D4 */ void adjustMoveDisAngle(s16&, s16, s16, s16);
/* 80151648 */ void initCalc(fopAc_ac_c*, f32 (*)[4], cXyz*, csXyz*, f32*, cXyz&, int);
/* 80151648 */ void initCalc(fopAc_ac_c*, Mtx, cXyz*, csXyz*, f32*, cXyz&, BOOL);
/* 80151A54 */ void update(cXyz*, csXyz*, f32*);
/* 80151B68 */ void calcMoveDisAngle(int, cXyz*, csXyz*, cXyz, int, int);
/* 80151B68 */ void calcMoveDisAngle(int, cXyz*, csXyz*, cXyz, int, BOOL);
/* 80151F54 */ void setRotAngle();
/* 80151FE0 */ void clrRotAngle();
daNpcF_Lookat_c() { initialize(); }
+8
View File
@@ -753,6 +753,14 @@ public:
void onFogFade() { onNoResetFlg2(FLG2_UNK_4000); }
BOOL checkStickArrowReset() const { return checkResetFlg0(RFLG0_UNK_1); }
void setCanoeSlider() { mSpecialMode = 0x2D; }
void offCanoeSlider() {
if (checkCanoeSlider()) {
mSpecialMode = 0;
}
}
void offCargoCarry() {
if (checkCargoCarry()) {
mSpecialMode = 0;
+4
View File
@@ -3676,6 +3676,10 @@ inline int dComIfGd_setSimpleShadow(cXyz* pos, f32 param_1, f32 param_2, cXyz* p
param_5, tex);
}
inline bool dComIfGd_addRealShadow(u32 key, J3DModel* model) {
return g_dComIfG_gameInfo.drawlist.addRealShadow(key, model);
}
inline void dComIfGd_drawListItem3d() {
g_dComIfG_gameInfo.drawlist.drawOpaListItem3d();
g_dComIfG_gameInfo.drawlist.drawXluListItem3d();
+7 -7
View File
@@ -141,13 +141,13 @@ public:
};
struct dist_entry {
f32 field_0x0;
f32 field_0x4;
f32 field_0x8;
f32 field_0xc;
f32 field_0x10;
f32 field_0x14;
u32 field_0x18;
/* 0x00 */ f32 mRadius1;
/* 0x04 */ f32 mRadius2;
/* 0x08 */ f32 mDistanceAdjust;
/* 0x0C */ f32 mUpperY;
/* 0x10 */ f32 mLowerY;
/* 0x14 */ f32 mWeight;
/* 0x18 */ u32 mAngleSelect;
}; // Size: 0x1C
struct type_tbl_entry {
+4
View File
@@ -369,6 +369,10 @@ public:
param_6);
}
bool addRealShadow(u32 key, J3DModel* model) {
return mShadowControl.addReal(key, model);
}
void newPeekZdata(s16 param_0, s16 param_1, u32* param_2) {
mPeekZ.newData(param_0, param_1, param_2);
}
+2 -2
View File
@@ -11,12 +11,12 @@ struct dPath {
/* 0x0 */ u16 m_num;
/* 0x2 */ u16 m_nextID;
/* 0x4 */ u8 field_0x4;
/* 0x5 */ u8 m_closed;
/* 0x5 */ bool m_closed;
/* 0x6 */ u8 field_0x6;
/* 0x8 */ dStage_dPnt_c* m_points;
};
inline int dPath_ChkClose(dPath* i_path) { return (i_path->m_closed & 1); }
inline BOOL dPath_ChkClose(dPath* i_path) { return i_path->m_closed & 1; }
dPath* dPath_GetRoomPath(int path_index, int room_no);
dPath* dPath_GetNextRoomPath(dPath const* i_path, int room_no);
+1 -1
View File
@@ -290,7 +290,7 @@ struct dStage_dPnt_c {
/* 0x0 */ u8 field_0x0;
/* 0x1 */ u8 field_0x1;
/* 0x2 */ u8 field_0x2;
/* 0x3 */ u8 field_0x3;
/* 0x3 */ u8 mArg0;
/* 0x4 */ Vec m_position;
}; // Size: 0x10
+4 -4
View File
@@ -154,8 +154,8 @@ public:
void setMsgTimeMs(u32 msgTime) { mMsgTimeMs = msgTime; }
void setTimeMs(s32 i_time) { mTimeMs = i_time; }
u32 getTimeMs() { return mTimeMs; }
u8 getNowCount() { return mNowCount; }
u8 getMaxCount() { return mMaxCount; }
int getNowCount() { return mNowCount; }
int getMaxCount() { return mMaxCount; }
void setScopeZoomPointer(u8 param_0) { mScopeZoomPointer = param_0; }
u8 getItemExplainWindowStatus() { return mItemExplainWindowStatus; }
void setItemExplainWindowStatus(u8 i_value) { mItemExplainWindowStatus = i_value; }
@@ -611,11 +611,11 @@ inline void dMeter2Info_setTimeMs(s32 i_time) {
g_meter2_info.setTimeMs(i_time);
}
inline u8 dMeter2Info_getNowCount() {
inline int dMeter2Info_getNowCount() {
return g_meter2_info.getNowCount();
}
inline u8 dMeter2Info_getMaxCount() {
inline int dMeter2Info_getMaxCount() {
return g_meter2_info.getMaxCount();
}