mirror of https://github.com/zeldaret/tp.git
1131 lines
39 KiB
C++
1131 lines
39 KiB
C++
#ifndef D_A_D_A_NPC_H
|
|
#define D_A_D_A_NPC_H
|
|
|
|
#include "JSystem/J3DGraphAnimator/J3DMaterialAnm.h"
|
|
#include "SSystem/SComponent/c_math.h"
|
|
#include "Z2AudioLib/Z2Creature.h"
|
|
#include "d/actor/d_a_player.h"
|
|
#include "d/d_path.h"
|
|
#include "d/d_msg_flow.h"
|
|
#include "d/d_particle_copoly.h"
|
|
#include "global.h"
|
|
|
|
struct daNpc_GetParam1 { // name unknown
|
|
/* 0x0 */ int fileIdx;
|
|
/* 0x4 */ int arcIdx;
|
|
};
|
|
|
|
struct daNpc_GetParam2 { // name unknown
|
|
/* 0x0 */ int fileIdx;
|
|
/* 0x4 */ int attr;
|
|
/* 0x8 */ int arcIdx;
|
|
};
|
|
|
|
struct dPnt : public dStage_dPnt_c {};
|
|
|
|
class daNpcT_ActorMngr_c {
|
|
private:
|
|
/* 0x0 */ u32 mActorID;
|
|
|
|
public:
|
|
/* 801456D4 */ void initialize();
|
|
/* 801456E0 */ void entry(fopAc_ac_c*);
|
|
/* 801456FC */ void remove();
|
|
/* 80145708 */ fopAc_ac_c* getActorP();
|
|
|
|
daNpcT_ActorMngr_c() { initialize(); };
|
|
|
|
/* 8014D108 */ virtual ~daNpcT_ActorMngr_c() {}
|
|
};
|
|
|
|
class daNpcT_MatAnm_c : public J3DMaterialAnm {
|
|
private:
|
|
/* 0x0F4 */ mutable f32 field_0xF4;
|
|
/* 0x0F8 */ mutable f32 field_0xF8;
|
|
/* 0x0FC */ f32 mTranslationX;
|
|
/* 0x100 */ f32 mTranslationY;
|
|
/* 0x104 */ u8 field_0x104;
|
|
/* 0x105 */ u8 field_0x105;
|
|
|
|
public:
|
|
daNpcT_MatAnm_c() { initialize(); }
|
|
/* 80145764 */ void initialize();
|
|
/* 80145788 */ virtual void calc(J3DMaterial*) const;
|
|
/* 8014D24C */ ~daNpcT_MatAnm_c();
|
|
};
|
|
|
|
class daNpcT_MotionSeqMngr_c {
|
|
public:
|
|
class sequenceStepData_c {
|
|
public:
|
|
s16 field_0x0;
|
|
s8 field_0x2;
|
|
s8 field_0x3;
|
|
}; // Size: 0x4?
|
|
|
|
/* 80145898 */ void initialize();
|
|
/* 801458C0 */ int play(u16, int*, f32*);
|
|
/* 80145A24 */ s32 checkEndSequence();
|
|
|
|
daNpcT_MotionSeqMngr_c(sequenceStepData_c const* param_1,int param_2) :
|
|
mpSeqData(param_1), field_0x4(param_2) {
|
|
initialize();
|
|
}
|
|
|
|
bool checkEntryNewMotion() { return mStepNo == 0 && field_0x14 == -1; }
|
|
int getNo() { return mNo; }
|
|
int getStepNo() { return mStepNo; }
|
|
void setNo(int param_1, f32 param_2, int param_3, int param_4) {
|
|
int newNo = param_4 + param_1;
|
|
if (param_1 >= 0 && (param_3 != 0 || newNo != mNo)) {
|
|
int offset = mOffset;
|
|
initialize();
|
|
mOffset = offset;
|
|
mNo = newNo;
|
|
field_0x18 = param_2;
|
|
}
|
|
}
|
|
|
|
private:
|
|
/* 0x00 */ sequenceStepData_c const* mpSeqData;
|
|
/* 0x04 */ int field_0x4;
|
|
/* 0x08 */ int mNo;
|
|
/* 0x0C */ int mOffset;
|
|
/* 0x10 */ int mStepNo;
|
|
/* 0x14 */ int field_0x14;
|
|
/* 0x18 */ f32 field_0x18;
|
|
/* 0x1C */ bool mEndSequence;
|
|
|
|
public:
|
|
/* 8014D0C0 */ virtual ~daNpcT_MotionSeqMngr_c() {}
|
|
};
|
|
|
|
class daNpcT_JntAnm_c {
|
|
private:
|
|
/* 0x000 */ daNpcT_ActorMngr_c mActrMngr;
|
|
/* 0x008 */ cXyz field_0x8;
|
|
/* 0x014 */ cXyz field_0x14;
|
|
/* 0x020 */ cXyz* field_0x20;
|
|
/* 0x024 */ cXyz field_0x24;
|
|
/* 0x030 */ cXyz field_0x30[3];
|
|
/* 0x054 */ cXyz field_0x54[3];
|
|
/* 0x078 */ cXyz field_0x78[3];
|
|
/* 0x09C */ cXyz field_0x9c[3];
|
|
/* 0x0C0 */ cXyz mRad[3];
|
|
/* 0x0E4 */ cXyz field_0xe4[3];
|
|
/* 0x108 */ cXyz field_0x108;
|
|
/* 0x114 */ cXyz field_0x114;
|
|
/* 0x120 */ cXyz field_0x120;
|
|
/* 0x12C */ csXyz mEyeAngle;
|
|
/* 0x132 */ csXyz field_0x132;
|
|
/* 0x138 */ int mMode;
|
|
/* 0x13C */ u8 field_0x13c[4];
|
|
/* 0x140 */ int field_0x140;
|
|
/* 0x144 */ u8 field_0x144[4];
|
|
/* 0x148 */ f32 field_0x148;
|
|
/* 0x14C */ f32 field_0x14c;
|
|
/* 0x150 */ csXyz field_0x150;
|
|
/* 0x156 */ u8 field_0x156;
|
|
/* 0x157 */ u8 mDirectFlag;
|
|
/* 0x158 */ u8 field_0x158;
|
|
|
|
public:
|
|
/* 80146C98 */ void initialize();
|
|
/* 80146CD8 */ void setParam(fopAc_ac_c*, J3DModel*, cXyz*, int, int, int, f32, f32, f32, f32,
|
|
f32, f32, f32, f32, f32, f32, cXyz*);
|
|
/* 80147858 */ void calc(f32);
|
|
/* 80147C38 */ void calcJntRad(f32, f32, f32);
|
|
void setEyeAngleX(cXyz param_1, f32 param_2, s16 param_3) {
|
|
cXyz cStack_50;
|
|
s16 sVar3 = 0;
|
|
if (field_0x20 != NULL) {
|
|
cStack_50 = *field_0x20 - param_1;
|
|
sVar3 = -cM_atan2s(cStack_50.y, cStack_50.absXZ());
|
|
sVar3 += param_3;
|
|
}
|
|
sVar3 += field_0x150.x;
|
|
mEyeAngle.x = field_0x132.x * (1.0f - 1.0f / param_2) +
|
|
sVar3 * (1.0f / param_2);
|
|
}
|
|
|
|
void setEyeAngleY(cXyz param_1, s16 param_2, int param_3, f32 param_4, s16 param_5) {
|
|
cXyz cStack_50;
|
|
s16 sVar3 = 0;
|
|
if (field_0x20 != NULL) {
|
|
cStack_50 = *field_0x20 - param_1;
|
|
sVar3 = cM_atan2s(cStack_50.x, cStack_50.z);
|
|
sVar3 -= param_2;
|
|
s16 diff = field_0x150.y - param_2;
|
|
sVar3 -= diff;
|
|
sVar3 += param_5;
|
|
}
|
|
if (param_3 != 0) {
|
|
sVar3 = -sVar3;
|
|
}
|
|
mEyeAngle.y = field_0x132.y * (1.0f - 1.0f / param_4) +
|
|
sVar3 * (1.0f / param_4);
|
|
}
|
|
|
|
daNpcT_JntAnm_c() {
|
|
initialize();
|
|
}
|
|
/* 8014D150 */ virtual ~daNpcT_JntAnm_c() {}
|
|
|
|
void clrDirectFlag() { mDirectFlag = 0; }
|
|
int getMode() { return mMode; }
|
|
|
|
int setMode(int mode, int param_2) {
|
|
if (mode >= 0 && (param_2 != 0 || mode != mMode)) {
|
|
mActrMngr.remove();
|
|
field_0x20 = NULL;
|
|
field_0x14c = 0.0f;
|
|
mDirectFlag = 0;
|
|
mMode = mode;
|
|
return 1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
void setDirect(u8 isDirect) {
|
|
if (isDirect != 0) {
|
|
mEyeAngle.x = 0;
|
|
mEyeAngle.y = 0;
|
|
}
|
|
mDirectFlag = isDirect;
|
|
}
|
|
|
|
void lookNone(u8 isDirect) {
|
|
setMode(0, 0);
|
|
setDirect(isDirect);
|
|
}
|
|
|
|
void lookPlayer(u8 isDirect) {
|
|
setMode(1, 0);
|
|
setDirect(isDirect);
|
|
}
|
|
|
|
void lookCamera(u8 isDirect) {
|
|
setMode(4, 0);
|
|
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)) {
|
|
mActrMngr.entry(param_1);
|
|
field_0x14c = param_2;
|
|
}
|
|
setDirect(isDirect);
|
|
}
|
|
};
|
|
|
|
class daNpcT_DmgStagger_c {
|
|
public:
|
|
/* 80147DCC */ void setParam(fopAc_ac_c*, fopAc_ac_c*, s16);
|
|
/* 80147E3C */ void calc(int);
|
|
|
|
void initialize() {
|
|
for (int i = 0; i < 2; i++) {
|
|
field_0x0[i].setall(0);
|
|
field_0xc[i] = 0.0f;
|
|
}
|
|
mStagger = 0;
|
|
field_0x16 = 0;
|
|
mRebirth = 0;
|
|
}
|
|
|
|
int checkStagger() { return mStagger != 0; }
|
|
|
|
s16 getAngleX(int idx) { return field_0x0[idx].x; }
|
|
s16 getAngleZ(int idx) { return field_0x0[idx].z; }
|
|
int checkRebirth() { return mRebirth; }
|
|
|
|
private:
|
|
/* 0x00 */ csXyz field_0x0[2];
|
|
/* 0x0C */ f32 field_0xc[2];
|
|
/* 0x14 */ s16 mStagger;
|
|
/* 0x16 */ s16 field_0x16;
|
|
/* 0x18 */ bool mRebirth;
|
|
};
|
|
|
|
struct daNpcT_evtData_c {
|
|
const char* eventName;
|
|
int num;
|
|
};
|
|
|
|
struct daNpcT_faceMotionAnmData_c {
|
|
u32 field_0x0[6];
|
|
u32 field_0x18;
|
|
};
|
|
|
|
struct daNpcT_pntData_c {};
|
|
|
|
struct daNpcT_motionAnmData_c {
|
|
u32 field_0x0[6];
|
|
u32 field_0x18;
|
|
};
|
|
|
|
class daNpcT_Hermite_c {
|
|
public:
|
|
/* 8014CBAC */ ~daNpcT_Hermite_c();
|
|
|
|
/* 0x00 */ f32 field_0x00;
|
|
/* 0x04 */ cXyz mPosition;
|
|
/* 0x10 */ f32 field_0x10;
|
|
};
|
|
|
|
class daNpcT_Path_c {
|
|
public:
|
|
/* 0x00 */ dPath* mpRoomPath;
|
|
/* 0x04 */ cXyz mPosition;
|
|
/* 0x10 */ f32 field_0x10;
|
|
/* 0x14 */ f32 field_0x14;
|
|
/* 0x18 */ f32 field_0x18;
|
|
/* 0x1C */ u16 mIdx;
|
|
/* 0x1E */ u16 field_0x1E;
|
|
/* 0x20 */ u8 mDirection;
|
|
/* 0x21 */ u8 mIsClosed;
|
|
|
|
/* 80145B7C */ void hermite(cXyz&, cXyz&, cXyz&, cXyz&, daNpcT_Hermite_c&, cXyz&);
|
|
/* 80145C40 */ void initialize();
|
|
/* 80145C74 */ int setPathInfo(u8, s8, u8);
|
|
/* 80145D2C */ int setNextPathInfo(s8, u8);
|
|
/* 80145DA0 */ void reverse();
|
|
/* 80145DD0 */ int setNextIdx(int);
|
|
/* 80145E38 */ int getDstPos(cXyz, cXyz*, int);
|
|
/* 80145FB4 */ int getDstPosH(cXyz, cXyz*, int, int);
|
|
/* 80146188 */ int chkPassed1(cXyz, int);
|
|
/* 801464D8 */ int chkPassed2(cXyz, cXyz*, int, int);
|
|
daNpcT_Path_c() {
|
|
initialize();
|
|
}
|
|
virtual ~daNpcT_Path_c() {}
|
|
|
|
inline Vec getPntPos(int i_idx) { return mpRoomPath->m_points[i_idx].m_position; }
|
|
|
|
int chkClose() {
|
|
int roomPath = dPath_ChkClose(mpRoomPath);
|
|
return roomPath;
|
|
}
|
|
|
|
bool chkReverse() { return mDirection == 1; }
|
|
|
|
u16 getNumPnts() {
|
|
dPath* path = mpRoomPath;
|
|
return path->m_num;
|
|
}
|
|
|
|
u16& getIdx() { return mIdx; }
|
|
};
|
|
|
|
class mDoExt_McaMorfSO;
|
|
|
|
class daNpcT_c : public fopAc_ac_c {
|
|
public:
|
|
/* 0x568 */ daNpcT_faceMotionAnmData_c const* field_0x568;
|
|
/* 0x56C */ daNpcT_motionAnmData_c const* field_0x56c;
|
|
/* 0x570 */ daNpcT_evtData_c const* field_0x570;
|
|
/* 0x574 */ char** field_0x574;
|
|
/* 0x578 */ mDoExt_McaMorfSO* mpMorf[2];
|
|
/* 0x580 */ Z2Creature field_0x580;
|
|
/* 0x610 */ mDoExt_bckAnm mBckAnm;
|
|
/* 0x62C */ mDoExt_btpAnm mBtpAnm;
|
|
/* 0x644 */ mDoExt_btkAnm mBtkAnm;
|
|
/* 0x65C */ mDoExt_brkAnm mBrkAnm;
|
|
/* 0x674 */ mDoExt_bpkAnm mBpkAnm;
|
|
/* 0x68C */ dBgS_ObjAcch field_0x68c;
|
|
/* 0x864 */ dCcD_Stts field_0x864;
|
|
/* 0x8A0 */ dBgS_AcchCir field_0x8a0;
|
|
/* 0x8E0 */ request_of_phase_process_class field_0x8e0[10];
|
|
/* 0x930 */ cBgS_GndChk field_0x930;
|
|
/* 0x96C */ daNpcT_MatAnm_c* field_0x96c;
|
|
/* 0x970 */ u8 field_0x970[4];
|
|
/* 0x974 */ dMsgFlow_c mFlow;
|
|
/* 0x9C0 */ dPaPoT_c field_0x9c0;
|
|
/* 0xA40 */ dCcD_Stts field_0xa40;
|
|
/* 0xA7C */ u32 field_0xa7c;
|
|
/* 0xA80 */ f32 field_0xa80;
|
|
/* 0xA84 */ f32 field_0xa84;
|
|
/* 0xA88 */ u8 field_0xa88;
|
|
/* 0xA89 */ u8 field_0xa89;
|
|
/* 0xA8C */ dBgS_GndChk field_0xa8c;
|
|
/* 0xAE0 */ dBgS_LinChk field_0xae0;
|
|
/* 0xB50 */ daNpcT_MotionSeqMngr_c field_0xb50;
|
|
/* 0xB74 */ daNpcT_MotionSeqMngr_c field_0xb74;
|
|
/* 0xB98 */ daNpcT_ActorMngr_c field_0xb98;
|
|
/* 0xBA0 */ daNpcT_ActorMngr_c field_0xba0;
|
|
/* 0xBA8 */ daNpcT_JntAnm_c field_0xba8;
|
|
/* 0xD08 */ daNpcT_DmgStagger_c field_0xd08;
|
|
/* 0xD24 */ cXyz field_0xd24;
|
|
/* 0xD30 */ cXyz field_0xd30;
|
|
/* 0xD3C */ cXyz field_0xd3c;
|
|
/* 0xD48 */ cXyz field_0xd48;
|
|
/* 0xD54 */ cXyz field_0xd54;
|
|
/* 0xD60 */ cXyz field_0xd60;
|
|
/* 0xD6C */ cXyz field_0xd6c;
|
|
/* 0xD78 */ csXyz field_0xd78;
|
|
/* 0xD7E */ csXyz field_0xd7e;
|
|
/* 0xD84 */ csXyz field_0xd84;
|
|
/* 0xD8A */ csXyz field_0xd8a;
|
|
/* 0xD90 */ u32 field_0xd90;
|
|
/* 0xD94 */ u32 field_0xd94;
|
|
/* 0xD98 */ u32 field_0xd98;
|
|
/* 0xD9C */ u32 mMsgId;
|
|
/* 0xDA0 */ u8 field_0xda0[8];
|
|
/* 0xDA8 */ u32 field_0xda8;
|
|
/* 0xDAC */ int field_0xdac;
|
|
/* 0xDB0 */ int mCutType;
|
|
/* 0xDB4 */ int field_0xdb4;
|
|
/* 0xDB8 */ int field_0xdb8;
|
|
/* 0xDBC */ int mTimer;
|
|
/* 0xDC0 */ int field_0xdc0;
|
|
/* 0xDC4 */ int field_0xdc4;
|
|
/* 0xDC8 */ s16 field_0xdc8;
|
|
/* 0xDCA */ s16 field_0xdca;
|
|
/* 0xDCC */ u8 field_0xdcc[10];
|
|
/* 0xDD4 */ s16 field_0xdd4;
|
|
/* 0xDD8 */ s16 mStepNo;
|
|
/* 0xDDA */ s16 field_0xdda;
|
|
/* 0xDDC */ f32 field_0xddc;
|
|
/* 0xDE0 */ f32 field_0xde0;
|
|
/* 0xDE4 */ f32 field_0xde4;
|
|
/* 0xDE8 */ f32 field_0xde8;
|
|
/* 0xDEC */ f32 field_0xdec;
|
|
/* 0xDF0 */ f32 field_0xdf0;
|
|
/* 0xDF4 */ f32 field_0xdf4;
|
|
/* 0xDF8 */ f32 field_0xdf8;
|
|
/* 0xDFC */ f32 field_0xdfc;
|
|
/* 0xE00 */ cXyz field_0xe00;
|
|
/* 0xE0C */ cXyz field_0xe0c;
|
|
/* 0xE18 */ s16 field_0xe18;
|
|
/* 0xE1A */ s16 field_0xe1a;
|
|
/* 0xE1C */ s16 field_0xe1c;
|
|
/* 0xE1E */ u16 field_0xe1e;
|
|
/* 0xE20 */ u16 field_0xe20;
|
|
/* 0xE22 */ u16 field_0xe22;
|
|
/* 0xE24 */ s8 field_0xe24;
|
|
/* 0xE25 */ u8 field_0xe25;
|
|
/* 0xE26 */ u8 field_0xe26;
|
|
/* 0xE27 */ u8 field_0xe27;
|
|
/* 0xE28 */ u8 field_0xe28;
|
|
/* 0xE29 */ u8 field_0xe29;
|
|
/* 0xE2A */ u8 field_0xe2a;
|
|
/* 0xE2B */ u8 field_0xe2b;
|
|
/* 0xE2C */ u8 field_0xe2c;
|
|
/* 0xE2D */ u8 field_0xe2d;
|
|
/* 0xE2E */ u8 field_0xe2e[2];
|
|
/* 0xE30 */ u16 field_0xe30;
|
|
/* 0xE32 */ u8 field_0xe32;
|
|
/* 0xE33 */ u8 field_0xe33;
|
|
/* 0xE34 */ u8 field_0xe34;
|
|
/* 0xE35 */ u8 field_0xe35;
|
|
/* 0xE36 */ u8 field_0xe36;
|
|
/* 0xE37 */ u8 field_0xe37;
|
|
/* 0xE38 */ u8 field_0xe38;
|
|
/* 0xE3C vtable */
|
|
|
|
public:
|
|
daNpcT_c(daNpcT_faceMotionAnmData_c const* param_1, daNpcT_motionAnmData_c const* param_2,
|
|
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* param_7,
|
|
char** param_8) :
|
|
field_0x568(param_1),
|
|
field_0x56c(param_2),
|
|
field_0x570(param_7),
|
|
field_0x574(param_8),
|
|
field_0xb50(param_3, param_4),
|
|
field_0xb74(param_5, param_6) {
|
|
initialize();
|
|
}
|
|
/* 80147FA4 */ static void tgHitCallBack(fopAc_ac_c*, dCcD_GObjInf*, fopAc_ac_c*, dCcD_GObjInf*);
|
|
/* 80147FD4 */ static int srchActor(void*, void*);
|
|
/* 80148058 */ J3DAnmTransform* getTrnsfrmAnmP(char const*, int);
|
|
/* 80148094 */ J3DAnmTransformKey* getTrnsfrmKeyAnmP(char const*, int);
|
|
/* 801480D0 */ J3DAnmTexPattern* getTexPtrnAnmP(char const*, int);
|
|
/* 8014810C */ J3DAnmTextureSRTKey* getTexSRTKeyAnmP(char const*, int);
|
|
/* 80148148 */ J3DAnmTevRegKey* getTevRegKeyAnmP(char const*, int);
|
|
/* 80148184 */ J3DAnmColor* getColorAnmP(char const*, int);
|
|
/* 801481C0 */ void setBckAnm(J3DAnmTransform*, f32, int, int, int, bool);
|
|
/* 80148204 */ int setMcaMorfAnm(J3DAnmTransformKey*, f32, f32, int, int, int);
|
|
/* 801482F8 */ void setBtpAnm(J3DAnmTexPattern*, J3DModelData*, f32, int);
|
|
/* 80148338 */ void setBtkAnm(J3DAnmTextureSRTKey*, J3DModelData*, f32, int);
|
|
/* 80148378 */ void setBrkAnm(J3DAnmTevRegKey*, J3DModelData*, f32, int);
|
|
/* 801483B8 */ void setBpkAnm(J3DAnmColor*, J3DModelData*, f32, int);
|
|
/* 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);
|
|
/* 80148C70 */ void setEnvTevColor();
|
|
/* 80148CCC */ void setRoomNo();
|
|
/* 80148D10 */ int checkEndAnm(f32);
|
|
/* 80148DD0 */ int checkEndAnm(J3DFrameCtrl*, f32);
|
|
/* 80148E4C */ void playAllAnm();
|
|
/* 80149190 */ void setMtx();
|
|
/* 8014924C */ void ctrlFaceMotion();
|
|
/* 80149300 */ void ctrlMotion();
|
|
/* 801493B8 */ int ctrlMsgAnm(int*, int*, fopAc_ac_c*, int);
|
|
/* 8014A224 */ void evtChange();
|
|
/* 8014A388 */ bool setFaceMotionAnm(int, bool);
|
|
/* 8014A908 */ void setPos(cXyz);
|
|
/* 8014AA18 */ void setAngle(s16);
|
|
/* 8014A99C */ void setAngle(csXyz);
|
|
/* 8014AA40 */ fopAc_ac_c* hitChk(dCcD_GObjInf*, u32);
|
|
/* 8014AAD0 */ void setDamage(int, int, int);
|
|
/* 8014ABD0 */ BOOL chkActorInSight(fopAc_ac_c*, f32, s16);
|
|
/* 8014ACF0 */ BOOL chkPointInArea(cXyz, cXyz, f32, f32, f32, s16);
|
|
/* 8014ADA0 */ BOOL chkPointInArea(cXyz, cXyz, cXyz, s16);
|
|
/* 8014AE1C */ void chkFindActor(fopAc_ac_c*, int, s16);
|
|
/* 8014B024 */ void chkWolfAction();
|
|
/* 8014B0C8 */ void chkFindWolf(s16, int, int, f32, f32, f32, f32, int);
|
|
/* 8014B338 */ BOOL srchPlayerActor();
|
|
/* 8014B3EC */ void getAttnPos(fopAc_ac_c*);
|
|
/* 8014B4A4 */ void turn(s16, int, int);
|
|
/* 8014B648 */ int step(s16, int, int, int, int);
|
|
/* 8014B808 */ void calcSpeedAndAngle(cXyz, int, s16, s16);
|
|
/* 8014BB00 */ void getActorDistance(fopAc_ac_c*, int, int);
|
|
/* 8014BBF0 */ int initTalk(int, fopAc_ac_c**);
|
|
/* 8014BC78 */ int talkProc(int*, int, fopAc_ac_c**, int);
|
|
/* 8014BE2C */ fopAc_ac_c* getNearestActorP(s16);
|
|
/* 8014BEE4 */ fopAc_ac_c* getEvtAreaTagP(int, int);
|
|
/* 8014BFB0 */ fopAc_ac_c* getShopItemTagP();
|
|
/* 8014C030 */ void setHitodamaPrtcl();
|
|
|
|
/* 8014CD20 */ virtual ~daNpcT_c();
|
|
/* 801490D4 */ virtual void ctrlBtk();
|
|
/* 8014CC14 */ virtual void ctrlSubFaceMotion(int) {}
|
|
/* 8014CC40 */ virtual int checkChangeJoint(int);
|
|
/* 8014CC38 */ virtual int checkRemoveJoint(int);
|
|
/* 8014CC5C */ virtual s32 getBackboneJointNo();
|
|
/* 8014CC54 */ virtual s32 getNeckJointNo();
|
|
/* 8014CC4C */ virtual s32 getHeadJointNo();
|
|
/* 8014CC90 */ virtual s32 getFootLJointNo();
|
|
/* 8014CC88 */ virtual s32 getFootRJointNo();
|
|
/* 8014D0A8 */ virtual int getEyeballLMaterialNo() { return 0; }
|
|
/* 8014D0B0 */ virtual bool getEyeballRMaterialNo() { return 0; }
|
|
/* 8014D0B8 */ virtual s32 getEyeballMaterialNo() { return 0; }
|
|
/* 8014951C */ virtual void ctrlJoint(J3DJoint*, J3DModel*);
|
|
/* 8014CC48 */ virtual void afterJntAnm(int);
|
|
/* 8014CC24 */ virtual void setParam();
|
|
/* 8014CC80 */ virtual bool checkChangeEvt();
|
|
/* 8014CC78 */ virtual bool evtTalk();
|
|
/* 8014CC70 */ virtual bool evtEndProc() { return true; }
|
|
/* 8014CC68 */ virtual bool evtCutProc();
|
|
/* 8014CC64 */ virtual void setAfterTalkMotion();
|
|
/* 8014997C */ virtual int evtProc();
|
|
/* 8014CC20 */ virtual void action();
|
|
/* 8014CC1C */ virtual void beforeMove();
|
|
/* 8014CC18 */ virtual void afterMoved();
|
|
/* 8014CC10 */ virtual void setAttnPos();
|
|
/* 80149BB4 */ virtual void setFootPos();
|
|
/* 8014CC0C */ virtual void setCollision();
|
|
/* 80149D7C */ virtual void setFootPrtcl(cXyz*, f32, f32);
|
|
/* 8014A05C */ virtual bool checkCullDraw();
|
|
/* 8014A064 */ virtual void twilight();
|
|
/* 8014CC98 */ virtual bool chkXYItems() { return false; }
|
|
/* 8014A0B0 */ virtual void evtOrder();
|
|
/* 8014CBF4 */ virtual void decTmr() {
|
|
if (mTimer != 0) {
|
|
mTimer--;
|
|
}
|
|
}
|
|
/* 8014A324 */ virtual void clrParam();
|
|
/* 8014CC30 */ virtual int drawDbgInfo();
|
|
/* 8014CC28 */ virtual void drawOtherMdl();
|
|
/* 8014CC2C */ virtual void drawGhost() {}
|
|
/* 8014CCA0 */ virtual bool afterSetFaceMotionAnm(int, int, f32, int) { return true; }
|
|
/* 8014CCE0 */ virtual bool afterSetMotionAnm(int, int, f32, int) { return true; }
|
|
/* 8014CCB0 */ virtual daNpcT_faceMotionAnmData_c getFaceMotionAnm(daNpcT_faceMotionAnmData_c param_1) { return param_1; }
|
|
/* 8014CCF0 */ virtual daNpcT_motionAnmData_c getMotionAnm(daNpcT_motionAnmData_c param_1) { return param_1; }
|
|
/* 8014CCEC */ virtual void changeAnm(int*, int*) {}
|
|
/* 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);
|
|
|
|
bool checkHide() { return field_0xe25 || (!dComIfGs_wolfeye_effect_check() && field_0xa89); }
|
|
s16 checkStep() { return mStepNo == 1; }
|
|
void setCommander(fopAc_ac_c* param_0) { field_0xba0.entry(param_0); }
|
|
|
|
void initialize() {
|
|
memset(&field_0xd24, 0, (u8*)&field_0xe38 - (u8*)&field_0xd24);
|
|
field_0xb50.initialize();
|
|
field_0xb74.initialize();
|
|
field_0xb98.initialize();
|
|
field_0xba0.initialize();
|
|
field_0xba8.initialize();
|
|
field_0xd08.initialize();
|
|
field_0xd90 = 0xffffffff;
|
|
field_0xe26 = 1;
|
|
field_0xe1a = cM_rndF(65536.0f);
|
|
field_0xde0 = 0.2f;
|
|
field_0xde4 = 0.2f;
|
|
}
|
|
|
|
static u8 const mCcDObjData[48];
|
|
static dCcD_SrcCyl mCcDCyl;
|
|
static dCcD_SrcSph mCcDSph;
|
|
static fopAc_ac_c* mFindActorPtrs[50];
|
|
static s16 mSrchName;
|
|
static s32 mFindCount;
|
|
};
|
|
|
|
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);
|
|
u8 daNpcT_getDistTableIdx(int param_0, int param_1);
|
|
BOOL daNpcT_chkDoBtnIsSpeak(fopAc_ac_c* i_ActorP);
|
|
void daNpcT_offTmpBit(u32 i_idx);
|
|
void daNpcT_onTmpBit(u32 i_idx);
|
|
void daNpcT_onEvtBit(u32 i_idx);
|
|
|
|
struct daBaseNpc_matAnm_c {
|
|
/* 8014D884 */ void calc(J3DMaterial*) const;
|
|
/* 80150444 */ ~daBaseNpc_matAnm_c();
|
|
};
|
|
|
|
class daBaseNpc_acMngr_c {
|
|
private:
|
|
/* 0x00 */ u8 field_0x00[4];
|
|
/* 0x04 */ u32 mActorId;
|
|
|
|
public:
|
|
/* 8014D804 */ daBaseNpc_acMngr_c();
|
|
/* 8014D81C */ void entry(fopAc_ac_c*);
|
|
/* 8014D838 */ fopAc_ac_c* getActor();
|
|
/* 80150524 */ ~daBaseNpc_acMngr_c();
|
|
};
|
|
|
|
class daBaseNpc_path_c {
|
|
private:
|
|
/* 0x000 */ f32 field_0x0;
|
|
/* 0x004 */ dPath* mpRoomPath;
|
|
/* 0x008 */ f32 field_0x8;
|
|
/* 0x010 */ u8 field_0xc[2562];
|
|
/* 0xA0E */ u16 field_0xa0e;
|
|
/* 0xA10 */ u16 mIdx;
|
|
/* 0xA12 */ s8 mDirection;
|
|
/* 0xA13 */ u8 field_0xa13[17];
|
|
|
|
public:
|
|
/* 8014D998 */ daBaseNpc_path_c();
|
|
/* 8014D9A8 */ BOOL isPath();
|
|
/* 8014D9BC */ int setPathInfo(u8, s8, s8);
|
|
/* 8014DA48 */ void reverseDir();
|
|
/* 8014DA64 */ s32 chkPnt(cXyz);
|
|
/* 8014DAC4 */ void setNextPnt();
|
|
/* 8014DB04 */ u16 getIdx();
|
|
/* 8014DB0C */ void setIdx(u16);
|
|
/* 8014DB14 */ Vec getPntPos(u16);
|
|
/* 801503FC */ ~daBaseNpc_path_c();
|
|
};
|
|
|
|
class daBaseNpc_lookat_c {
|
|
private:
|
|
/* 0x00 */ int field_0x00;
|
|
/* 0x04 */ csXyz mMaxJntLmt[2];
|
|
/* 0x10 */ u8 field_0x0A[12];
|
|
/* 0x1C */ csXyz mMinJntLmt[2];
|
|
/* 0x28 */ u8 field_0x28[12];
|
|
/* 0x34 */ cXyz mJntPos[3];
|
|
/* 0x4C */ u8 field_0x4C[24];
|
|
/* 0x64 */ csXyz mUnk[2];
|
|
/* 0x70 */ csXyz mRotation[2];
|
|
/* 0x7C */ csXyz mUnk2[2];
|
|
/* 0x88 */ u8 field_0x88[4];
|
|
/* 0x8C */ cXyz* mpAttnPos;
|
|
|
|
public:
|
|
/* 8014DB40 */ void limitter(s16, s16*, s16, s16);
|
|
/* 8014DBB4 */ void calc(fopAc_ac_c*, f32 (*)[4], s16);
|
|
/* 8014E634 */ void setMaxJntLmt(csXyz, int);
|
|
/* 8014E658 */ void setMinJntLmt(csXyz, int);
|
|
/* 8014E67C */ void setJntPos(cXyz, int);
|
|
/* 8014E6A0 */ int setAttnPos(cXyz*);
|
|
/* 8014E6AC */ csXyz getRot(int);
|
|
/* 801502EC */ ~daBaseNpc_lookat_c();
|
|
};
|
|
|
|
class daBaseNpc_c : public fopAc_ac_c {
|
|
public:
|
|
/* 8014E6C8 */ daBaseNpc_c();
|
|
/* 8014EE44 */ J3DAnmTransform* getTrnsfrmKeyAnmP(char*, int);
|
|
/* 8014EE80 */ void setMcaMorfAnm(J3DAnmTransformKey*, f32, f32, int, int, int);
|
|
/* 8014EEE4 */ void setBckAnm(J3DAnmTransform*, f32, int, int, int, bool);
|
|
/* 8014EF28 */ J3DAnmTransform* getTexPtrnAnmP(char*, int);
|
|
/* 8014EF64 */ void setBtpAnm(J3DAnmTexPattern*, J3DModelData*, f32, int);
|
|
/* 8014EFF4 */ void orderEvent(int, char*);
|
|
/* 8014F0A0 */ void setEnvTevColor();
|
|
/* 8014F0FC */ void setRoomNo();
|
|
/* 8014F148 */ int checkEndAnm(f32);
|
|
/* 8014F1C8 */ int checkEndAnm(J3DFrameCtrl*);
|
|
|
|
/* 8014E89C */ virtual ~daBaseNpc_c();
|
|
/* 8014EAD0 */ virtual void execute();
|
|
/* 8014EC50 */ virtual void draw(f32);
|
|
/* 8014EE3C */ virtual bool getResName();
|
|
/* 8014EFA4 */ virtual void attnSttsOn(int, int);
|
|
/* 8014EFF0 */ virtual void setParam();
|
|
/* 8014F09C */ virtual void mainProc();
|
|
/* 8014F140 */ virtual bool btkCtrl();
|
|
/* 8014F228 */ virtual void allAnmPlay();
|
|
/* 8014F38C */ virtual void adjustShapeAngle();
|
|
/* 8014F390 */ virtual void setMtx(int);
|
|
/* 8014F4A0 */ virtual void setCollisions();
|
|
/* 8014F4A4 */ virtual void setAttnPos();
|
|
/* 8014F4A8 */ virtual void drawOtherMdls();
|
|
/* 8014F4AC */ virtual bool dbgDraw();
|
|
|
|
static u8 const mCcDObj[48];
|
|
static dCcD_SrcCyl mCcDCyl;
|
|
static dCcD_SrcSph mCcDSph;
|
|
|
|
private:
|
|
/* 0x56C */ dBgS_Acch field_0x56c;
|
|
/* 0x744 */ u8 field_0x744[16];
|
|
/* 0x754 */ mDoExt_McaMorfSO* mpMorf[2];
|
|
/* 0x758 */ Z2Creature mCreature;
|
|
/* 0x7EC */ mDoExt_bckAnm mBckAnm;
|
|
/* 0x808 */ mDoExt_btpAnm mBtpAnm;
|
|
/* 0x820 */ u8 tmp2[28];
|
|
/* 0x83c */ u16* field_0x83c;
|
|
/* 0x840 */ u16 field_0x840;
|
|
/* 0x842 */ u8 field_0x842[6];
|
|
/* 0x848 */ s32 mUnk;
|
|
/* 0x84C */ dMsgFlow_c mMsg;
|
|
/* 0x898 */ u8 field_0x898[2];
|
|
/* 0x89A */ s16 mEvtIdx;
|
|
/* 0x89C */ u8 field_0x89C[34];
|
|
/* 0x8BE */ u8 mRoomId;
|
|
/* 0x8C0 */ u8 field_0x8C0[90];
|
|
/* 0x91A */ csXyz field_0x91a;
|
|
/* 0x920 */ csXyz field_0xd7e;
|
|
/* 0x926 */ csXyz field_0xd84;
|
|
/* 0x92C */ csXyz field_0xd8a;
|
|
/* 0x932 */ csXyz field_0x932;
|
|
/* 0x938 */ u8 field_0x938[4];
|
|
/* 0x93C */ csXyz field_0x93c;
|
|
/* 0x940 */ u8 field_0x940[18];
|
|
/* 0x954 */ cXyz field_0x954;
|
|
/* 0x960 */ u8 field_0x960[36];
|
|
/* 0x984 */ csXyz field_0x984;
|
|
/* 0x98A */ u8 field_0x98A[18];
|
|
/* 0x99C */ csXyz field_0x99c;
|
|
/* 0x9A2 */ u8 field_0x9a2[70];
|
|
/* 0x9E8 */ const cBgS_PolyInfo mBgSPolyInfo;
|
|
/* 0x9F9 */ u8 field_0x9f9[27];
|
|
};
|
|
|
|
class daBaseNpc_moveBgActor_c : public daBaseNpc_c {
|
|
private:
|
|
/* 0xA14 */ u32 field_0xa14;
|
|
|
|
public:
|
|
/* 8014F4B4 */ daBaseNpc_moveBgActor_c();
|
|
/* 8014F518 */ void MoveBGCreateHeap();
|
|
/* 8014F60C */ void
|
|
MoveBGCreate(char const*, int,
|
|
void (*)(dBgW*, void*, cBgS_PolyInfo const&, bool, cXyz*, csXyz*, csXyz*), u32);
|
|
/* 8014F6FC */ void MoveBGDelete();
|
|
/* 8014F770 */ void MoveBGExecute();
|
|
/* 801503BC */ bool CreateHeap();
|
|
/* 801503C4 */ bool Create();
|
|
/* 801503CC */ bool Delete();
|
|
/* 801503D4 */ bool Execute(f32 (**)[3][4]);
|
|
/* 801503DC */ bool Draw();
|
|
/* 801503E4 */ bool IsDelete();
|
|
/* 801503EC */ bool ToFore();
|
|
/* 801503F4 */ bool ToBack();
|
|
/* 80155FB0 */ ~daBaseNpc_moveBgActor_c();
|
|
|
|
static u8 m_name[4];
|
|
static u8 m_dzb_id[4];
|
|
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 mStaffID;
|
|
/* 0x930 */ int mCutType;
|
|
/* 0x934 */ int mAttnIdx;
|
|
/* 0x938 */ int mAttnChangeTimer;
|
|
/* 0x93C */ int mAttnActorTimer[5];
|
|
/* 0x950 */ int mMsgTimer;
|
|
/* 0x954 */ int mDamageTimer;
|
|
/* 0x958 */ int mTotalDamageTimer;
|
|
/* 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 */ bool mIsDamaged;
|
|
/* 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 */ int 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 */ BOOL hitChk2(dCcD_Cyl*, BOOL, BOOL);
|
|
/* 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 bool 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.distances[fopAc_attn_SPEAK_e]);
|
|
}
|
|
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.distances[fopAc_attn_TALK_e]);
|
|
}
|
|
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 setCutType(int i_cutType) { mCutType = i_cutType; }
|
|
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;
|
|
/* 0x0F8 */ mutable f32 field_0xF8;
|
|
/* 0x0FC */ f32 mNowOffsetX;
|
|
/* 0x100 */ f32 mNowOffsetY;
|
|
/* 0x104 */ u8 mEyeMoveFlag;
|
|
/* 0x105 */ u8 field_0x105;
|
|
|
|
public:
|
|
daNpcF_MatAnm_c() { initialize(); }
|
|
/* 80150738 */ void initialize();
|
|
/* 8015075C */ void calc(J3DMaterial*) const;
|
|
/* 80155ED0 */ ~daNpcF_MatAnm_c();
|
|
void setNowOffsetX(float i_nowOffsetX) { mNowOffsetX = i_nowOffsetX; }
|
|
void setNowOffsetY(float i_nowOffsetY) { mNowOffsetY = i_nowOffsetY; }
|
|
void onEyeMoveFlag() { mEyeMoveFlag = 1; }
|
|
void offEyeMoveFlag() { mEyeMoveFlag = 0; }
|
|
};
|
|
|
|
class daNpcF_SPCurve_c {
|
|
private:
|
|
/* 0x00 */ u16 mNurbs;
|
|
/* 0x02 */ u16 field_0x02;
|
|
/* 0x04 */ bool mIsReversed;
|
|
/* 0x05 */ bool mIsClosed;
|
|
/* 0x08 */ dStage_dPnt_c mPoints[96];
|
|
|
|
public:
|
|
/* 80150870 */ void initialize(dPath*, int);
|
|
|
|
daNpcF_SPCurve_c() {
|
|
initialize(NULL, 0);
|
|
}
|
|
|
|
virtual ~daNpcF_SPCurve_c() {}
|
|
}; // Size: 0x60C
|
|
|
|
class daNpcF_Path_c {
|
|
protected:
|
|
/* 0x00 */ u16 mIdx;
|
|
/* 0x02 */ u8 mIsReversed;
|
|
/* 0x03 */ bool mIsClosed;
|
|
/* 0x04 */ dPath* mpRoomPath;
|
|
/* 0x08 */ f32 mRange;
|
|
/* 0x0C */ f32 mPosDst;
|
|
/* 0x10 */ f32 field_0x10;
|
|
/* 0x14 */ cXyz mPosition;
|
|
/* 0x20 */ daNpcF_SPCurve_c mSPCurve;
|
|
|
|
public:
|
|
/* 80150900 */ void initialize();
|
|
/* 8015095C */ int setPathInfo(u8, s8, u8);
|
|
/* 80150A24 */ BOOL chkPassed(cXyz);
|
|
/* 80150A7C */ BOOL chkPassedDst(cXyz);
|
|
/* 80150BBC */ void reverse();
|
|
/* 80150BE0 */ BOOL setNextIdx();
|
|
/* 80150C18 */ int getNextIdx();
|
|
/* 80150C60 */ int getBeforeIdx();
|
|
/* 80150CA8 */ BOOL getBeforePos(cXyz&);
|
|
/* 80150D44 */ BOOL getNextPos(cXyz&);
|
|
/* 80150DE0 */ BOOL getDstPos(cXyz, cXyz&);
|
|
/* 80150EB4 */ void setNextIdxDst(cXyz);
|
|
|
|
daNpcF_Path_c() {
|
|
initialize();
|
|
}
|
|
|
|
virtual ~daNpcF_Path_c() {}
|
|
|
|
int getIdx() { return mIdx; };
|
|
void setIdx(int i_idx) { mIdx = i_idx; }
|
|
int getArg0() { return mpRoomPath->m_points[mIdx].mArg0; }
|
|
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; }
|
|
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 mJointPos[4];
|
|
/* 0x30 */ cXyz* mAttnPos;
|
|
/* 0x34 */ csXyz mAngularMoveDis[4];
|
|
/* 0x4C */ csXyz mMinAngle[4];
|
|
/* 0x64 */ csXyz mMaxAngle[4];
|
|
/* 0x7C */ csXyz mRotAngle[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*, Mtx, csXyz**, BOOL, int, BOOL);
|
|
/* 801515D4 */ void adjustMoveDisAngle(s16&, s16, s16, s16);
|
|
/* 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, BOOL);
|
|
/* 80151F54 */ void setRotAngle();
|
|
/* 80151FE0 */ void clrRotAngle();
|
|
daNpcF_Lookat_c() { initialize(); }
|
|
virtual ~daNpcF_Lookat_c() {}
|
|
cXyz* getAttnPos() { return mAttnPos; }
|
|
void setAttnPos(cXyz* i_attnPos) { mAttnPos = i_attnPos; }
|
|
};
|
|
|
|
class daNpcF_MoveBgActor_c : public daNpcF_c {
|
|
private:
|
|
public:
|
|
/* 80155B54 */ ~daNpcF_MoveBgActor_c();
|
|
/* 80155E88 */ virtual bool CreateHeap();
|
|
/* 80155E90 */ virtual bool Create();
|
|
/* 80155EA0 */ virtual bool Execute(f32 (**)[3][4]);
|
|
/* 80155EA8 */ virtual bool Draw();
|
|
/* 80155E98 */ virtual bool Delete();
|
|
/* 80155EB0 */ virtual bool IsDelete();
|
|
/* 80155EB8 */ virtual bool ToFore();
|
|
/* 80155EC0 */ virtual bool ToBack();
|
|
};
|
|
|
|
#endif /* D_A_D_A_NPC_H */
|