mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-09-05 01:26:17 -04:00
work on d_a_npc_the and d_a_npc (#2120)
This commit is contained in:
@@ -9,7 +9,7 @@ typedef struct _GXColorS10 GXColorS10;
|
||||
class J3DMatColorAnm {
|
||||
public:
|
||||
/* 8003B2B8 */ ~J3DMatColorAnm() {};
|
||||
/* 8003B2F4 */ J3DMatColorAnm() {};
|
||||
/* 8003B2F4 */ J3DMatColorAnm() : field_0x0(0), mAnmFlag(1), mAnmColor(NULL) {};
|
||||
J3DMatColorAnm(u16 param_1, J3DAnmColor* param_2) {
|
||||
field_0x0 = param_1;
|
||||
mAnmFlag = 1;
|
||||
@@ -35,7 +35,7 @@ private:
|
||||
class J3DTexNoAnm {
|
||||
public:
|
||||
/* 8003B1F8 */ ~J3DTexNoAnm() {};
|
||||
/* 8003B240 */ J3DTexNoAnm() {};
|
||||
/* 8003B240 */ J3DTexNoAnm() : field_0x4(0), mAnmFlag(1), mAnmTexPattern(NULL) {};
|
||||
J3DTexNoAnm(u16 param_1, J3DAnmTexPattern* param_2) {
|
||||
field_0x4 = param_1;
|
||||
mAnmFlag = 1;
|
||||
@@ -62,7 +62,7 @@ private:
|
||||
class J3DTexMtxAnm {
|
||||
public:
|
||||
/* 8003B264 */ ~J3DTexMtxAnm() {};
|
||||
/* 8003B2A0 */ J3DTexMtxAnm() {};
|
||||
/* 8003B2A0 */ J3DTexMtxAnm() : field_0x0(0), mAnmFlag(1), mAnmTransform(NULL) {};
|
||||
J3DTexMtxAnm(u16 param_1, J3DAnmTextureSRTKey* param_2) {
|
||||
field_0x0 = param_1;
|
||||
mAnmFlag = 1;
|
||||
@@ -90,7 +90,7 @@ private:
|
||||
class J3DTevKColorAnm {
|
||||
public:
|
||||
/* 8003B150 */ ~J3DTevKColorAnm() {}
|
||||
/* 8003B18C */ J3DTevKColorAnm() {}
|
||||
/* 8003B18C */ J3DTevKColorAnm() : field_0x0(0), mAnmFlag(1), mAnmTevReg(NULL) {}
|
||||
J3DTevKColorAnm(u16 param_1, J3DAnmTevRegKey* param_2) {
|
||||
field_0x0 = param_1;
|
||||
mAnmFlag = 1;
|
||||
@@ -116,7 +116,7 @@ private:
|
||||
class J3DTevColorAnm {
|
||||
public:
|
||||
/* 8003B1A4 */ ~J3DTevColorAnm() {}
|
||||
/* 8003B1E0 */ J3DTevColorAnm() {}
|
||||
/* 8003B1E0 */ J3DTevColorAnm() : field_0x0(0), mAnmFlag(1), mAnmTevReg(NULL) {}
|
||||
J3DTevColorAnm(u16 param_1, J3DAnmTevRegKey* param_2) {
|
||||
field_0x0 = param_1;
|
||||
mAnmFlag = 1;
|
||||
|
||||
@@ -12,38 +12,39 @@ struct TAngleConstant_<f32> {
|
||||
static inline f32 RADIAN_DEG360() { return 6.2831855f; }
|
||||
};
|
||||
|
||||
template<int N, typename T>
|
||||
struct TSinCosTable {
|
||||
std::pair<f32, f32> table[0x2000];
|
||||
std::pair<T, T> table[1 << N];
|
||||
|
||||
f32 sinShort(s16 v) const { return table[(u16)v >> 3U].first; }
|
||||
f32 cosShort(s16 v) const { return table[(u16)v >> 3U].second; }
|
||||
T sinShort(s16 v) const { return table[(u16)v >> (16U - N)].first; }
|
||||
T cosShort(s16 v) const { return table[(u16)v >> (16U - N)].second; }
|
||||
|
||||
inline f32 sinLap(f32 v) {
|
||||
if (v < 0.0f) {
|
||||
return -table[(u16)(-8192.0f * v) & 0x1fff].first;
|
||||
inline T sinLap(T v) {
|
||||
if (v < (T)0.0) {
|
||||
return -table[(u16)(-(T)(1 << N) * v) & ((1 << N) - 1)].first;
|
||||
}
|
||||
return table[(u16)(8192.0f * v) & 0x1fff].first;
|
||||
return table[(u16)((T)(1 << N) * v) & ((1 << N) - 1)].first;
|
||||
}
|
||||
|
||||
inline f32 sinDegree(f32 degree) {
|
||||
if (degree < 0.0f) {
|
||||
return -table[(u16)(-22.755556106567383f * degree) & 0x1fffU].first;
|
||||
inline T sinDegree(T degree) {
|
||||
if (degree < (T)0.0) {
|
||||
return -table[(u16)(((T)(1 << N) / 360.0) * degree) & ((1 << N) - 1)].first;
|
||||
}
|
||||
return table[(u16)(22.755556106567383f * degree) & 0x1fffU].first;
|
||||
return table[(u16)(((T)(1 << N) / 360.0) * degree) & ((1 << N) - 1)].first;
|
||||
}
|
||||
|
||||
inline f32 cosDegree(f32 degree) {
|
||||
if (degree < 0.0f) {
|
||||
inline T cosDegree(T degree) {
|
||||
if (degree < (T)0.0) {
|
||||
degree = -degree;
|
||||
}
|
||||
return table[(u16)(22.755556106567383f * degree) & 0x1fffU].second;
|
||||
return table[(u16)(((T)(1 << N) / 360.0) * degree) & ((1 << N) - 1)].second;
|
||||
}
|
||||
|
||||
inline f32 sinRadian(f32 radian) {
|
||||
if (radian < 0.0f) {
|
||||
return -table[(u16)(-8192.0f / TAngleConstant_<f32>::RADIAN_DEG360() * radian) & 0x1fffU].first;
|
||||
inline T sinRadian(T radian) {
|
||||
if (radian < (T)0.0) {
|
||||
return -table[(u16)(-(T)(1 << N) / TAngleConstant_<T>::RADIAN_DEG360() * radian) & ((1 << N) - 1)].first;
|
||||
}
|
||||
return table[(u16)(8192.0f / TAngleConstant_<f32>::RADIAN_DEG360() * radian) & 0x1fffU].first;
|
||||
return table[(u16)((T)(1 << N) / TAngleConstant_<T>::RADIAN_DEG360() * radian) & ((1 << N) - 1)].first;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -58,7 +59,7 @@ struct TAsinAcosTable {
|
||||
};
|
||||
|
||||
namespace JMath {
|
||||
extern TSinCosTable sincosTable_;
|
||||
extern TSinCosTable<13, f32> sincosTable_;
|
||||
extern TAtanTable atanTable_;
|
||||
extern TAsinAcosTable asinAcosTable_;
|
||||
}; // namespace JMath
|
||||
|
||||
@@ -95,7 +95,7 @@ struct cXyz : Vec {
|
||||
f32 getYDiff(const Vec* other) const { return y - other->y; }
|
||||
f32 getZDiff(const Vec* other) const { return z - other->z; }
|
||||
|
||||
void setAll(f32 f) { set(f, f, f); }
|
||||
void setall(f32 f) { set(f, f, f); }
|
||||
|
||||
void setMin(const cXyz& other) {
|
||||
if (x > other.x) {
|
||||
|
||||
+34
-39
@@ -10,22 +10,15 @@
|
||||
#include "d/particle/d_particle_copoly.h"
|
||||
#include "global.h"
|
||||
|
||||
struct bckGetParam {
|
||||
/* 0x00 */ int bckIdx;
|
||||
/* 0x04 */ int bckAttr;
|
||||
/* 0x08 */ int arcIdx;
|
||||
struct daNpc_GetParam1 { // name unknown
|
||||
/* 0x0 */ int fileIdx;
|
||||
/* 0x4 */ int arcIdx;
|
||||
};
|
||||
|
||||
struct btpGetParam {
|
||||
/* 0x00 */ int btpIdx;
|
||||
/* 0x04 */ int btpAttr;
|
||||
/* 0x08 */ int arcIdx;
|
||||
};
|
||||
|
||||
struct btkGetParam {
|
||||
/* 0x00 */ int btkIdx;
|
||||
/* 0x04 */ int btkAttr;
|
||||
/* 0x08 */ int arcIdx;
|
||||
struct daNpc_GetParam2 { // name unknown
|
||||
/* 0x0 */ int fileIdx;
|
||||
/* 0x4 */ int attr;
|
||||
/* 0x8 */ int arcIdx;
|
||||
};
|
||||
|
||||
struct dPnt {};
|
||||
@@ -216,7 +209,7 @@ public:
|
||||
/* 0x56C */ daNpcT_motionAnmData_c* field_0x56c;
|
||||
/* 0x570 */ daNpcT_evtData_c* field_0x570;
|
||||
/* 0x574 */ char** field_0x574;
|
||||
/* 0x578 */ mDoExt_McaMorfSO* mMcaMorfAnm[2];
|
||||
/* 0x578 */ mDoExt_McaMorfSO* mpMorf[2];
|
||||
/* 0x580 */ Z2Creature field_0x580;
|
||||
/* 0x610 */ mDoExt_bckAnm mBckAnm;
|
||||
/* 0x62C */ mDoExt_btpAnm mBtpAnm;
|
||||
@@ -449,16 +442,16 @@ public:
|
||||
|
||||
class daNpcF_c : public fopAc_ac_c {
|
||||
protected:
|
||||
/* 0x568 */ mDoExt_McaMorfSO* mMcaMorf;
|
||||
/* 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 mStts;
|
||||
/* 0x7A8 */ dCcD_Stts mCcStts;
|
||||
/* 0x7E4 */ dBgS_AcchCir mAcchCir;
|
||||
/* 0x824 */ daNpcF_ActorMngr_c field_0x824;
|
||||
/* 0x82C */ daNpcF_ActorMngr_c field_0x82c[5];
|
||||
/* 0x82C */ daNpcF_ActorMngr_c mAttnActor[5];
|
||||
/* 0x854 */ cXyz mLookatPos[3];
|
||||
/* 0x878 */ cXyz mLookPos;
|
||||
/* 0x884 */ cXyz field_0x884;
|
||||
@@ -472,17 +465,17 @@ protected:
|
||||
/* 0x8E4 */ cXyz mHeadPos;
|
||||
/* 0x8F0 */ csXyz field_0x8f0;
|
||||
/* 0x8F6 */ csXyz field_0x8f6;
|
||||
/* 0x8FC */ csXyz field_0x8fc;
|
||||
/* 0x902 */ csXyz field_0x902;
|
||||
/* 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 field_0x934; // index in 0x93c to not decrement timer (if 0x938 is nonzero)
|
||||
/* 0x938 */ int field_0x938; // controls whether to use field 0x934
|
||||
/* 0x93C */ int field_0x93c[5]; // timers for removing actors from 0x82c
|
||||
/* 0x934 */ int mAttnIdx;
|
||||
/* 0x938 */ int mAttnChangeTimer;
|
||||
/* 0x93C */ int mAttnActorTimer[5];
|
||||
/* 0x950 */ int field_0x950;
|
||||
/* 0x954 */ int field_0x954; // a timer
|
||||
/* 0x954 */ int field_0x954;
|
||||
/* 0x958 */ int field_0x958;
|
||||
/* 0x95C */ int field_0x95c;
|
||||
/* 0x960 */ int field_0x960;
|
||||
@@ -502,15 +495,15 @@ protected:
|
||||
/* 0x998 */ u16 field_0x998;
|
||||
/* 0x99C */ u32 mAnmFlags;
|
||||
/* 0x9A0 */ u32 field_0x9a0;
|
||||
/* 0x9A4 */ profile_method_class* field_0x9a4;
|
||||
/* 0x9A8 */ int field_0x9a8[2];
|
||||
/* 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 field_0x9d4;
|
||||
/* 0x9D4 */ s16 mEventIdx;
|
||||
/* 0x9D6 */ s16 mExpressionPhase;
|
||||
/* 0x9D8 */ s16 mExpressionPrevPhase;
|
||||
/* 0x9DA */ s16 mMotionPhase;
|
||||
@@ -523,16 +516,16 @@ protected:
|
||||
/* 0x9E8 */ s8 field_0x9e8;
|
||||
/* 0x9E9 */ u8 field_0x9e9;
|
||||
/* 0x9EA */ u8 field_0x9ea;
|
||||
/* 0x9EB */ u8 field_0x9eb;
|
||||
/* 0x9EB */ bool field_0x9eb;
|
||||
/* 0x9EC */ u8 field_0x9ec;
|
||||
/* 0x9ED */ u8 field_0x9ed;
|
||||
/* 0x9EE */ u8 field_0x9ee;
|
||||
/* 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 field_0x9f4; // controls whether setHitodamaPrtcl is called
|
||||
/* 0x9F4 */ bool mTwilight;
|
||||
/* 0x9F5 */ u8 field_0x9f5;
|
||||
/* 0x9F6 */ u8 field_0x9f6;
|
||||
/* 0x9F8 */ dMsgFlow_c mFlow;
|
||||
@@ -572,8 +565,8 @@ public:
|
||||
/* 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 */ void srchAttnActor1(void*, void*);
|
||||
/* 801526E8 */ void* srchActor(void*, void*);
|
||||
/* 80152654 */ static void* srchAttnActor1(void*, void*);
|
||||
/* 801526E8 */ static void* srchActor(void*, void*);
|
||||
|
||||
/* 801528C8 */ void initialize();
|
||||
/* 80152B2C */ J3DAnmTransformKey* getTrnsfrmKeyAnmP(char*, int);
|
||||
@@ -607,19 +600,19 @@ public:
|
||||
/* 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*, int, fopAc_ac_c**);
|
||||
/* 80153D84 */ BOOL talkProc(int*, BOOL, fopAc_ac_c**);
|
||||
/* 80153EF4 */ BOOL turn(s16, f32, int);
|
||||
/* 801540A4 */ void step(s16, int, int, 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, void* (*)(void*, void*), f32, f32, f32, f32, s16,
|
||||
/* 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 */ void chkFindPlayer2(int, s16);
|
||||
/* 801549E0 */ BOOL chkFindPlayer2(int, s16);
|
||||
/* 80154BD8 */ void setHitodamaPrtcl();
|
||||
|
||||
/* 80155BF4 */ virtual ~daNpcF_c();
|
||||
@@ -651,7 +644,7 @@ public:
|
||||
BOOL chkPlayerInTalkArea(fopAc_ac_c* i_actor) {
|
||||
return chkActorInTalkArea(daPy_getPlayerActorClass(), i_actor);
|
||||
}
|
||||
BOOL checkHide() { return mHide || (field_0x9f4 && !dComIfGs_wolfeye_effect_check()); }
|
||||
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; }
|
||||
@@ -744,7 +737,7 @@ private:
|
||||
/* 0x568 */ void* vtable;
|
||||
/* 0x56C */ dBgS_Acch field_0x56c;
|
||||
/* 0x744 */ u8 field_0x744[16];
|
||||
/* 0x754 */ mDoExt_McaMorfSO* mMcaMorfAnm[2];
|
||||
/* 0x754 */ mDoExt_McaMorfSO* mpMorf[2];
|
||||
/* 0x758 */ Z2Creature mCreature;
|
||||
/* 0x7EC */ mDoExt_bckAnm mBckAnm;
|
||||
/* 0x808 */ mDoExt_btpAnm mBtpAnm;
|
||||
@@ -855,6 +848,7 @@ public:
|
||||
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 {
|
||||
@@ -934,6 +928,7 @@ public:
|
||||
/* 80151B68 */ void calcMoveDisAngle(int, cXyz*, csXyz*, cXyz, int, int);
|
||||
/* 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; }
|
||||
|
||||
@@ -162,6 +162,7 @@ public:
|
||||
int getSelectNum() { return query005(NULL, NULL, 0); }
|
||||
s16 getChoiceNo() { return mChoiceNo; }
|
||||
void setMsg(u32 msg) { mMsg = msg; }
|
||||
bool checkEndFlow() { return field_0x26 == 1; }
|
||||
|
||||
static queryFunc mQueryList[53];
|
||||
static eventFunc mEventList[43];
|
||||
|
||||
@@ -112,11 +112,9 @@ public:
|
||||
/* 80237F10 */ void setTalkActorLocal(fopAc_ac_c*);
|
||||
/* 8023800C */ static void readMessageGroup(mDoDvdThd_mountXArchive_c**);
|
||||
/* 8023803C */ static void changeFlowGroup(s32);
|
||||
/* 8023806C */ void demoMessageGroup();
|
||||
/* 8023806C */ static void demoMessageGroup();
|
||||
/* 80238098 */ static void endFlowGroup();
|
||||
/* 802380C4 */ static void changeGroup(s16);
|
||||
/* 8023806C */ static void demoMessageGroup();
|
||||
/* 80238098 */ void endFlowGroup();
|
||||
/* 802380F4 */ static bool getString(u32, J2DTextBox*, J2DTextBox*, JUTFont*, COutFont_c*,
|
||||
char*, char*, char*, s16*);
|
||||
/* 80238174 */ static u8* getMsgDtPtr();
|
||||
@@ -129,8 +127,8 @@ public:
|
||||
/* 8023822C */ static u16 getStatus();
|
||||
/* 80238258 */ static dMsgScrnBase_c* getScrnDrawPtr();
|
||||
/* 8023826C */ static void setTalkActor(fopAc_ac_c*);
|
||||
/* 8023829C */ void onMsgSendControl();
|
||||
/* 802382C8 */ void offMsgSendControl();
|
||||
/* 8023829C */ static void onMsgSendControl();
|
||||
/* 802382C8 */ static void offMsgSendControl();
|
||||
/* 802382F4 */ static int isMsgSendControl();
|
||||
/* 80238320 */ static void onMsgSend();
|
||||
/* 8023834C */ void offMsgSend();
|
||||
|
||||
@@ -94,7 +94,7 @@ public:
|
||||
/* 0x04 */ f32 mGravity;
|
||||
/* 0x08 */ f32 m08;
|
||||
/* 0x0C */ f32 mShadow;
|
||||
/* 0x10 */ f32 mSttsWeight;
|
||||
/* 0x10 */ f32 mCcSttsWeight;
|
||||
/* 0x14 */ f32 m14;
|
||||
/* 0x18 */ f32 m18;
|
||||
/* 0x1C */ f32 m1C;
|
||||
|
||||
@@ -1,6 +1,186 @@
|
||||
#ifndef D_A_NPC_THE_H
|
||||
#define D_A_NPC_THE_H
|
||||
|
||||
#include "dolphin/types.h"
|
||||
#include "d/a/d_a_npc.h"
|
||||
#include "f_op/f_op_actor_mng.h"
|
||||
|
||||
// #define NONMATCHING
|
||||
|
||||
class daNpcThe_c : public daNpcF_c {
|
||||
public:
|
||||
typedef BOOL (daNpcThe_c::*ActionFn)(void*);
|
||||
typedef BOOL (daNpcThe_c::*EventFn)(int);
|
||||
|
||||
/* 80AF76CC */ daNpcThe_c();
|
||||
/* 80AF78E0 */ ~daNpcThe_c();
|
||||
/* inline */ inline BOOL CreateHeap();
|
||||
/* 80AF7AE0 */ BOOL ctrlJoint(J3DJoint*, J3DModel*);
|
||||
/* 80AF7CB0 */ static BOOL createHeapCallBack(fopAc_ac_c*);
|
||||
/* 80AF8114 */ static BOOL ctrlJointCallBack(J3DJoint*, int);
|
||||
/* 80AF8160 */ bool setExpressionAnm(int, bool);
|
||||
/* 80AF841C */ bool setExpressionBtp(int);
|
||||
/* 80AF8564 */ void setMotionAnm(int, f32);
|
||||
/* 80AF8744 */ BOOL wait(void*);
|
||||
/* 80AF8B0C */ void setMotion(int, f32, int);
|
||||
/* 80AF8B50 */ void setExpression(int, f32);
|
||||
/* 80AF8B7C */ BOOL waitTW(void*);
|
||||
/* 80AF8CC4 */ BOOL talk(void*);
|
||||
/* 80AF912C */ BOOL test(void*);
|
||||
/* 80AF923C */ BOOL EvCut_TwResistance(int);
|
||||
/* 80AF9244 */ BOOL EvCut_Introduction(int);
|
||||
/* 80AF9358 */ cPhs__Step create();
|
||||
/* 80AF9748 */ void reset();
|
||||
/* inline */ inline int Draw();
|
||||
/* 80AF99F4 */ void setParam();
|
||||
/* 80AF9CF0 */ BOOL main();
|
||||
/* 80AF9F94 */ void playMotion();
|
||||
/* 80AFA338 */ void playExpression();
|
||||
/* inline */ inline void setExpressionTalkAfter();
|
||||
/* 80AFA6CC */ BOOL doEvent();
|
||||
/* 80AFADEC */ BOOL ctrlBtk();
|
||||
/* 80AFAEC8 */ void setAttnPos();
|
||||
/* 80AFB1C4 */ void lookat();
|
||||
/* 80AFB488 */ BOOL drawDbgInfo();
|
||||
/* 80AFBD9C */ void adjustShapeAngle();
|
||||
|
||||
u8 getTypeFromParam() {
|
||||
switch (fopAcM_GetParam(this) & 0xff) {
|
||||
case 0:
|
||||
return 0;
|
||||
case 1:
|
||||
return 1;
|
||||
case 2:
|
||||
return 2;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
bool isDelete() {
|
||||
if (mType == 0 || mType == 1 || mType == 2) {
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
void setLookMode(int i_lookMode) {
|
||||
if (i_lookMode >= 0 && i_lookMode < 6 && i_lookMode != mLookMode) {
|
||||
mLookMode = i_lookMode;
|
||||
}
|
||||
}
|
||||
|
||||
bool isSneaking() {
|
||||
if (!strcmp(dComIfGp_getStartStageName(), "R_SP116") && dComIfGp_getStartStageRoomNo() == 5
|
||||
&& dComIfG_play_c::getLayerNo(0) == 2) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool chkAction(ActionFn action) {
|
||||
return mpActionFn == action;
|
||||
}
|
||||
|
||||
BOOL setAction(ActionFn action) {
|
||||
if (mpActionFn != NULL) {
|
||||
mState = 3;
|
||||
(this->*mpActionFn)(NULL);
|
||||
}
|
||||
if (action != NULL) {
|
||||
mpActionFn = action;
|
||||
mState = 0;
|
||||
(this->*mpActionFn)(NULL);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void doNormalAction() {
|
||||
mOrderEvtNo = 0;
|
||||
if (mpNextActionFn != NULL) {
|
||||
if (mpNextActionFn == mpActionFn) {
|
||||
(this->*mpActionFn)(NULL);
|
||||
} else {
|
||||
ActionFn action = mpNextActionFn;
|
||||
setAction(action);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 0xB48 */ Z2Creature mSound;
|
||||
/* 0xBD8 */ daNpcF_MatAnm_c* mpMatAnm;
|
||||
/* 0xBDC */ daNpcF_Lookat_c mLookat;
|
||||
/* 0xC78 */ daNpcF_ActorMngr_c mActorMngr[3];
|
||||
/* 0xC90 */ u8 field_0xc90[4];
|
||||
/* 0xC94 */ dCcD_Cyl mColCyl;
|
||||
/* 0xDD0 */ ActionFn mpNextActionFn;
|
||||
/* 0xDDC */ ActionFn mpActionFn;
|
||||
/* 0xDE8 */ request_of_phase_process_class mPhase[2];
|
||||
/* 0xDF8 */ u8 field_0xdf8[8];
|
||||
/* 0xE00 */ u32 mItemID;
|
||||
/* 0xE04 */ u32 field_0xe04;
|
||||
/* 0xE08 */ u32 field_0xe08;
|
||||
/* 0xE0C */ u32 field_0xe0c;
|
||||
/* 0xE10 */ u32 field_0xe10;
|
||||
/* 0xE14 */ int mFlowID;
|
||||
/* 0xE18 */ s16 mLookMode;
|
||||
/* 0xE1A */ u16 mState;
|
||||
/* 0xE1C */ bool field_0xe1c;
|
||||
/* 0xE1D */ bool field_0xe1d;
|
||||
/* 0xE1E */ u8 mType;
|
||||
|
||||
static char* mEvtCutNameList[4];
|
||||
#ifdef NONMATCHING
|
||||
static EventFn mEvtCutList[4];
|
||||
#else
|
||||
static u8 mEvtCutList[48];
|
||||
#endif
|
||||
};
|
||||
|
||||
STATIC_ASSERT(sizeof(daNpcThe_c) == 0xE20);
|
||||
|
||||
class daNpcThe_Param_c {
|
||||
public:
|
||||
struct param {
|
||||
/* 0x00 */ f32 field_0x00;
|
||||
/* 0x04 */ f32 mGravity;
|
||||
/* 0x08 */ f32 mScale;
|
||||
/* 0x0C */ f32 field_0x0c;
|
||||
/* 0x10 */ f32 field_0x10;
|
||||
/* 0x14 */ f32 mCylH;
|
||||
/* 0x18 */ f32 mWallH;
|
||||
/* 0x1C */ f32 mWallR;
|
||||
/* 0x20 */ f32 field_0x20;
|
||||
/* 0x24 */ f32 field_0x24;
|
||||
/* 0x28 */ f32 field_0x28;
|
||||
/* 0x2C */ f32 field_0x2c;
|
||||
/* 0x30 */ f32 field_0x30;
|
||||
/* 0x34 */ f32 field_0x34;
|
||||
/* 0x38 */ f32 field_0x38;
|
||||
/* 0x3C */ f32 field_0x3c;
|
||||
/* 0x40 */ f32 mLookatScl;
|
||||
/* 0x44 */ f32 field_0x44;
|
||||
/* 0x48 */ s16 field_0x48;
|
||||
/* 0x4A */ s16 field_0x4a;
|
||||
/* 0x4C */ s16 field_0x4c;
|
||||
/* 0x4E */ s16 field_0x4e;
|
||||
/* 0x50 */ f32 field_0x50;
|
||||
/* 0x54 */ f32 field_0x54;
|
||||
/* 0x58 */ f32 field_0x58;
|
||||
/* 0x5C */ f32 field_0x5c;
|
||||
/* 0x60 */ s16 field_0x60;
|
||||
/* 0x62 */ s16 field_0x62;
|
||||
/* 0x64 */ s16 mTestExpression;
|
||||
/* 0x66 */ s16 mTestMotion;
|
||||
/* 0x68 */ s16 mTestLookMode;
|
||||
/* 0x6A */ bool mTest;
|
||||
};
|
||||
|
||||
/* 80AFBDA0 */ virtual ~daNpcThe_Param_c();
|
||||
|
||||
static daNpcThe_Param_c::param const m;
|
||||
};
|
||||
|
||||
STATIC_ASSERT(sizeof(daNpcThe_Param_c::param) == 0x6C);
|
||||
|
||||
#endif /* D_A_NPC_THE_H */
|
||||
|
||||
@@ -18,7 +18,16 @@ public:
|
||||
}
|
||||
/* 8048CD68 */ virtual ~daTag_EvtArea_c() {}
|
||||
|
||||
inline s32 getType();
|
||||
inline s32 getType() {
|
||||
u8 type = (u8)shape_angle.z;
|
||||
return type == 0xff ? 0 : type;
|
||||
}
|
||||
|
||||
inline s32 getNo() {
|
||||
u16 no = (shape_angle.z & 0xff00) >> 8;
|
||||
return no == 0xff ? 0 : no;
|
||||
}
|
||||
|
||||
inline u32 getOnEvtBit();
|
||||
inline u32 getOffEvtBit();
|
||||
inline u8 getBitSW();
|
||||
|
||||
Reference in New Issue
Block a user