tp/include/d/actor/d_a_npc_tks.h

155 lines
4.5 KiB
C++

#ifndef D_A_NPC_TKS_H
#define D_A_NPC_TKS_H
#include "d/actor/d_a_npc4.h"
/**
* @ingroup actors-npcs
* @class daNpcTks_c
* @brief Ooccoo
*
* @details
*
*/
struct daNpcTks_HIOParam {
/* 0x00 */ daNpcF_HIOParam common;
/* 0x6C */ s32 hide_time_1; // Hide 時間 - Hide Time
/* 0x70 */ s32 hide_time_2; // Hide 時間 - Hide Time
/* 0x74 */ s32 show_up_wait_time_1; // ShowUpWait時間 - Show Up Wait Time
/* 0x78 */ s32 show_up_wait_time_2; // ShowUpWait時間 - Show Up Wait Time
/* 0x7C */ f32 area_a_dist; // エリアA距離 - Area A Distance
/* 0x80 */ f32 area_b_dist; // エリアB距離 - Area B Distance
/* 0x84 */ f32 jar_enter_exit_spd; // 壷出入り速度 - Jar Enter and Exit Speed
/* 0x88 */ f32 launch_spd; // 打ち上げ速度 - Launch Speed
/* 0x8C */ f32 movement_spd; // 移動速度 - Movement Speed
/* 0x90 */ f32 walk_spd; // 歩行速度 - Walk Speed
/* 0x94 */ f32 run_spd; // 走行速度 - Run Speed
};
class daNpcTks_HIO_c
#if DEBUG
: public mDoHIO_entry_c
#endif
{
/* 0x8 */ daNpcTks_HIOParam param;
};
class daNpcTks_Param_c {
public:
virtual ~daNpcTks_Param_c() {}
static daNpcTks_HIOParam const m;
};
class daNpcTksTsubo_c {
public:
/* 0x000 */ mDoExt_McaMorfSO* mpModelMorf;
/* 0x004 */ dKy_tevstr_c mTevStr;
/* 0x38C */ Z2Creature mSound;
/* 0x41C */ dCcD_Cyl mCyl;
/* 0x558 */ cBgS_PolyInfo polyBase;
/* 0x568 */ f32 mGroundH;
/* 0x56C */ u32 mShadowKey;
/* 0x570 */ u32 mAnmFlags;
/* 0x574 */ cXyz mPos;
/* 0x580 */ csXyz mAngle;
/* 0x586 */ u8 field_0x586;
/* 0x587 */ u8 mTsuboType;
};
class daNpcTks_c : public daNpcF_c {
public:
typedef void (daNpcTks_c::*actionFunc)();
daNpcTks_c();
~daNpcTks_c();
cPhs__Step Create();
int CreateHeap();
int Delete();
int Execute();
int Draw();
int ctrlJoint(J3DJoint*, J3DModel*);
static int createHeapCallBack(fopAc_ac_c*);
static int ctrlJointCallBack(J3DJoint*, int);
void setMtx();
bool setExpressionAnm(int, bool);
bool setExpressionBtp(int);
void setMotion(int, f32, int);
void reset();
inline BOOL setAction(actionFunc);
void wait();
void setMotionAnm(int, f32);
void waitNude();
void waitLv6();
void talk();
void setExpression(int, f32);
void hide();
void shake();
void showUp();
void showUpWait();
void lookAroundA();
void lookAroundB();
void in();
void damage();
void broken();
void demo_appear();
void demo_scannon();
void demo_Lv6Gate();
void demo_farewell();
void demo_warpBack();
void demo_walkBack();
void demo_Lv7Start();
void demo_Lv3PickUp();
void demo_Lv6PickUp();
inline void setParam();
inline BOOL main();
inline BOOL ctrlBtk();
inline void setAttnPos();
inline void lookat();
inline BOOL drawDbgInfo();
inline void drawOtherMdls();
u8 getType() { return fopAcM_GetParam(this) & 0xFF; }
u8 getSwitchNo() { return (fopAcM_GetParam(this) >> 8) & 0xFF; }
u8 getTsuboType() { return 1 - (fopAcM_GetParam(this) >> 24) == 0; }
int getMessageNo() { return shape_angle.x; }
u8 getTBoxNo() { return (fopAcM_GetParam(this) >> 16) & 0xFF; }
inline BOOL checkFindPlayer();
inline void setLookMode(int, fopAc_ac_c*);
inline void setTsuboMotionAnm(int, f32);
inline void setExpressionTalkAfter();
inline BOOL step(s16, int);
inline void playExpression();
inline void playMotion();
inline void playTsuboAnm();
inline int getPlayerArea();
private:
/* 0x0B48 */ Z2Creature mSound;
/* 0x0BD8 */ daNpcTksTsubo_c mTksTsubo;
/* 0x1160 */ daNpcF_MatAnm_c* mpMatAnm;
/* 0x1164 */ daNpcF_Lookat_c mLookat;
/* 0x1200 */ daNpcF_ActorMngr_c mActorMngr[1];
/* 0x1208 */ fopAc_ac_c* field_0x1208;
/* 0x120C */ daNpcTks_HIO_c* mHIO;
/* 0x1210 */ dCcD_Cyl mCyl;
/* 0x134C */ actionFunc mAction;
/* 0x1358 */ request_of_phase_process_class mPhases[2];
/* 0x1368 */ fpc_ProcID mItemID;
/* 0x136C */ f32 field_0x136c;
/* 0x1370 */ int field_0x1370;
/* 0x1374 */ int field_0x1374;
/* 0x1378 */ int mPlayerArea;
/* 0x137C */ u32 field_0x137c[2];
/* 0x1384 */ s16 mMessageNo;
/* 0x1386 */ s16 mLookMode;
/* 0x1388 */ u16 mMode;
/* 0x138A */ bool field_0x138a;
/* 0x138B */ bool field_0x138b;
};
STATIC_ASSERT(sizeof(daNpcTks_c) == 0x138c);
#endif /* D_A_NPC_TKS_H */