tp/include/d/actor/d_a_npc_guard.h

92 lines
2.3 KiB
C++

#ifndef D_A_NPC_GUARD_H
#define D_A_NPC_GUARD_H
#include "d/actor/d_a_npc.h"
#include "d/actor/d_a_npc_cd2.h"
/**
* @ingroup actors-npcs
* @class daNpcGuard_c
* @brief Guard (Hyrule Castle Town Guard?)
*
* @details
*
*/
class daNpcGuard_c : public daNpcCd2_c {
public:
typedef void (daNpcGuard_c::*actionFunc)();
enum Mode_e {
/* 0 */ MODE_PATH_e,
/* 1 */ MODE_RUN_e,
/* 2 */ MODE_FIGHT_WAIT_e,
/* 3 */ MODE_FIGHT_STEP_e,
/* 4 */ MODE_FIGHT_MENACE_e,
/* 5 */ MODE_FEAR_e,
/* 6 */ MODE_MAX_e, // Escape
};
void setAction(daNpcGuard_c::Mode_e);
void callInit();
void callExecute();
void initPath();
void executePath();
void initRun();
void executeRun();
void initFightWait();
void executeFightWait();
void initFightStep();
void executeFightStep();
void initFightMenace();
void executeFightMenace();
void initFear();
void executeFear();
void initEscape();
void executeEscape();
void setAngle();
inline void setSpeed(f32, f32, f32*, int);
void pathMoveF();
int create();
inline void create_init();
inline void setMtx();
inline void lookat();
inline virtual ~daNpcGuard_c();
int execute();
inline int createHeap();
inline int draw();
inline void setCollision();
inline void initCollision();
u32 getPathID() { return fopAcM_GetParam(this) >> 0x10 & 0xFF; }
static actionFunc ActionTable[7][2];
private:
/* 0xAC8 */ J3DModel* mpModel;
/* 0xACC */ J3DModel* mpModel2;
/* 0xAD0 */ J3DAnmTransformKey* mpAnmKey;
/* 0xAD4 */ J3DAnmTransformKey* mpAnmKey2;
/* 0xAD8 */ PathTrace_c m_path;
/* 0xB00 */ daNpcT_ActorMngr_c mActorMngr;
/* 0xB08 */ daNpcGuard_c::actionFunc* mAction;
/* 0xB0C */ Mode_e mActionIdx;
/* 0xB10 */ Mode_e mPrevActionIdx;
/* 0xB14 */ dCcD_Sph mSpheres[2];
/* 0xD84 */ int mObjNum;
/* 0xD88 */ int field_0xd88;
/* 0xD8C */ f32 field_0xd8c;
/* 0xD90 */ f32 field_0xd90;
/* 0xD94 */ f32 field_0xd94;
/* 0xD98 */ f32 field_0xd98;
/* 0xD9C */ u32 field_0xd9c;
/* 0xDA0 */ s16 field_0xda0;
/* 0xDA2 */ u8 field_0xda2;
/* 0xDA3 */ u8 field_0xda3[0xDA5 - 0xDA3];
/* 0xDA5 */ u8 field_0xda5;
};
STATIC_ASSERT(sizeof(daNpcGuard_c) == 0xda8);
#endif /* D_A_NPC_GUARD_H */