mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-06-01 09:17:15 -04:00
128 lines
4.3 KiB
C++
128 lines
4.3 KiB
C++
#ifndef D_A_NPC_KAKASHI_H
|
|
#define D_A_NPC_KAKASHI_H
|
|
|
|
#include "d/actor/d_a_npc.h"
|
|
|
|
/**
|
|
* @ingroup actors-npcs
|
|
* @class daNpc_Kakashi_c
|
|
* @brief Scarecrow
|
|
*
|
|
* @details
|
|
*
|
|
*/
|
|
class daNpc_Kakashi_c : public daNpcT_c {
|
|
public:
|
|
typedef int (daNpc_Kakashi_c::*ActionFunc)(void*);
|
|
|
|
/* 8054B4E8 */ int create();
|
|
/* 8054B7D8 */ int CreateHeap();
|
|
/* 8054B908 */ int Delete();
|
|
/* 8054B93C */ int Execute();
|
|
/* 8054B994 */ int Draw();
|
|
/* 8054BB34 */ static int createHeapCallBack(fopAc_ac_c*);
|
|
/* 8054BB54 */ static int ctrlJointCallBack(J3DJoint*, int);
|
|
/* 8054BBAC */ int getType();
|
|
/* 8054BC10 */ int isDelete();
|
|
/* 8054BC98 */ void reset();
|
|
/* 8054BF88 */ void srchActors();
|
|
/* 8054C92C */ int selectAction();
|
|
/* 8054CA1C */ BOOL chkAction(ActionFunc);
|
|
/* 8054CA48 */ int setAction(ActionFunc);
|
|
/* 8054CAF0 */ fopAc_ac_c* hitChk();
|
|
/* 8054CEA0 */ void setStaggerParam(fopAc_ac_c*);
|
|
/* 8054D26C */ void setPrtcls(int);
|
|
/* 8054D374 */ int judgeSwdTutorial();
|
|
/* 8054D490 */ int cutSwdTutorial(int);
|
|
/* 8054D57C */ int cutGetWoodSwd(int);
|
|
/* 8054D604 */ int cutMarosWhisper(int);
|
|
/* 8054D668 */ int wait(void*);
|
|
/* 8054D694 */ int swdTutorial(void*);
|
|
/* 8054D8BC */ int talk(void*);
|
|
|
|
/* 8054E804 */ daNpc_Kakashi_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)
|
|
{
|
|
OS_REPORT("|%06d:%x|daNpc_Kakashi_c -> コンストラクト\n", g_Counter.mCounter0, this);
|
|
}
|
|
|
|
/* 8054B36C */ virtual ~daNpc_Kakashi_c();
|
|
/* 8054B9D8 */ virtual int ctrlJoint(J3DJoint*, J3DModel*);
|
|
/* 8054BEA8 */ virtual void setParam();
|
|
/* 8054BF8C */ virtual BOOL checkChangeEvt();
|
|
/* 8054C034 */ virtual BOOL evtTalk();
|
|
/* 8054C0D4 */ virtual BOOL evtEndProc();
|
|
/* 8054C0E8 */ virtual BOOL evtCutProc();
|
|
/* 8054C1B0 */ virtual void action();
|
|
/* 8054C268 */ virtual void beforeMove();
|
|
/* 8054C2E0 */ virtual void setAttnPos();
|
|
/* 8054C584 */ virtual void setCollision();
|
|
/* 8054C924 */ virtual int drawDbgInfo();
|
|
|
|
int getFlowNodeNo() {
|
|
u16 prm = home.angle.x;
|
|
return prm == 0xFFFF ? -1 : prm;
|
|
}
|
|
|
|
u8 getTalkPattern() {
|
|
u8 var_r31 = (fopAcM_GetParam(this) & 0xF0000000) >> 0x1C;
|
|
if (var_r31 == 15) {
|
|
var_r31 = 0;
|
|
}
|
|
return var_r31;
|
|
}
|
|
|
|
u8 getBitSW() { return (fopAcM_GetParam(this) & 0xFF00) >> 8; }
|
|
u8 getBitSW2() { return (fopAcM_GetParam(this) & 0xFF0000) >> 16; }
|
|
|
|
static char* mCutNameList[4];
|
|
static int (daNpc_Kakashi_c::*mCutList[])(int);
|
|
|
|
private:
|
|
/* 0x0E40 */ u8 field_0xE40[0xE44 - 0xE40];
|
|
/* 0x0E44 */ Z2SoundObjSimple mSound;
|
|
/* 0x0E64 */ dCcD_Cyl mCcCyl;
|
|
/* 0x0FA0 */ dCcD_Sph mCcSph[3];
|
|
/* 0x1348 */ u8 mType;
|
|
/* 0x134C */ ActionFunc mSelectAction;
|
|
/* 0x1358 */ ActionFunc mAction;
|
|
/* 0x1364 */ csXyz field_0x1364[3];
|
|
/* 0x1378 */ f32 field_0x1378[3];
|
|
/* 0x1384 */ s16 field_0x1384[3];
|
|
/* 0x138A */ u8 field_0x138A[0x138C - 0x138A];
|
|
/* 0x138C */ s16 field_0x138c;
|
|
/* 0x138E */ u8 field_0x138e;
|
|
/* 0x138F */ u8 field_0x138f;
|
|
/* 0x1390 */ u8 field_0x1390;
|
|
/* 0x1391 */ u8 field_0x1391;
|
|
/* 0x1392 */ u8 field_0x1392;
|
|
/* 0x1393 */ u8 field_0x1393;
|
|
/* 0x1394 */ u8 field_0x1394;
|
|
};
|
|
|
|
STATIC_ASSERT(sizeof(daNpc_Kakashi_c) == 0x1398);
|
|
|
|
struct daNpc_Kakashi_HIOParam {
|
|
/* 0x00 */ daNpcT_HIOParam common;
|
|
/* 0x8C */ f32 field_0x8c;
|
|
/* 0x90 */ f32 field_0x90;
|
|
/* 0x94 */ f32 field_0x94;
|
|
};
|
|
|
|
class daNpc_Kakashi_Param_c {
|
|
public:
|
|
/* 8054EA58 */ virtual ~daNpc_Kakashi_Param_c() {}
|
|
|
|
static const daNpc_Kakashi_HIOParam m;
|
|
};
|
|
|
|
|
|
#endif /* D_A_NPC_KAKASHI_H */
|