tp/include/d/actor/d_a_obj_bky_rock.h

83 lines
1.9 KiB
C++

#ifndef D_A_OBJ_BKY_ROCK_H
#define D_A_OBJ_BKY_ROCK_H
#include "d/d_cc_d.h"
#include "d/d_model.h"
#include "f_op/f_op_actor_mng.h"
/**
* @ingroup actors-objects
* @class daBkyRock_c
* @brief Bomb Shack Rock
*
* @details
*
*/
class daBkyRock_c : public fopAc_ac_c, public request_of_phase_process_class {
public:
struct _pieceData {
public:
/* 0x00 */ dMdl_obj_c mMdlObj;
/* 0x34 */ Vec position;
/* 0x40 */ f32 targetX;
/* 0x44 */ f32 targetZ;
/* 0x48 */ f32 scale;
/* 0x4C */ f32 speedY;
/* 0x50 */ s16 rotationX;
/* 0x52 */ s16 rotationZ;
/* 0x54 */ s16 rotationSpeed;
};
typedef void (daBkyRock_c::*exeProc)();
enum Mode {
MODE_0,
MODE_1,
MODE_2,
};
daBkyRock_c();
virtual ~daBkyRock_c();
int create();
int execute();
int draw();
int Delete();
void setModelMtx();
int createHeap();
void init();
void middleExe();
void exeModeNoDamage();
void exeModeDamage();
void exeModePiece();
bool chkHitBombArrow();
void initChangeModeBefore();
void initChangeModeAfter();
void pieceMove();
void pieceMoveInit();
void callBombEmt(int, u16 const*);
u8 getSwBit0() { return fopAcM_GetParamBit(this, 4, 8); }
u8 getSwBit1() { return fopAcM_GetParamBit(this, 12, 8); }
s8 getNameNo() { return fopAcM_GetParamBit(this, 0, 4); }
static dCcD_SrcCyl const s_CcDCyl;
static exeProc s_exeProc[3];
private:
/* 0x568 */ int mVibrationTimer;
/* 0x578 */ u8 mMode;
/* 0x579 */ bool field_0x579;
/* 0x57A */ bool field_0x57a;
/* 0x57B */ Mtx mMtx;
/* 0x5AC */ dBgW* mBgW;
/* 0x5B0 */ dCcD_Stts mStts;
/* 0x5EC */ dCcD_Cyl mCyls[2];
/* 0x864 */ J3DModel* mModels[3];
/* 0x870 */ _pieceData mPieces[20];
};
//STATIC_ASSERT(sizeof(daBkyRock_c) == 0xf50);
#endif /* D_A_OBJ_BKY_ROCK_H */