tp/include/d/actor/d_a_obj_pillar.h

110 lines
2.8 KiB
C++

#ifndef D_A_OBJ_PILLAR_H
#define D_A_OBJ_PILLAR_H
#include "f_op/f_op_actor_mng.h"
#include "d/d_bg_s_movebg_actor.h"
#include "d/d_cc_d.h"
/**
* @ingroup actors-objects
* @class daPillar_c
* @brief Forest Temple Totem Pole
*
* @details
*
*/
class daPillar_c : public dBgS_MoveBgActor {
public:
enum shake_e {
SHAKE_CRASH,
SHAKE_STRONG,
SHAKE_WEAK,
SHAKE_CRASH_LV1,
SHAKE_IRONBALL,
SHAKE_NONE = 0xFF,
};
struct sdata_t {
/* 0x0 */ u8 mPower;
/* 0x1 */ u8 field_0x1;
/* 0x2 */ s16 mInitAngleX;
/* 0x4 */ s16 mTime;
/* 0x6 */ s16 mSpeedY;
/* 0x8 */ s16 mMaxChangeX;
/* 0xA */ s16 mMinChangeX;
};
void setBaseMtx();
int create1st();
bool checkAttacked();
void on_switch();
int checkShake();
void setShake_rcrash();
void setShake_strong();
void setShake_weak();
void switch_proc_call();
void actionSwOnWait();
void actionSwOn();
void actionEnd();
virtual int CreateHeap();
virtual int Create();
virtual int Execute(Mtx**);
virtual int Draw();
virtual int Delete();
u16 getTimer() { return fopAcM_GetParamBit(this, 0x18, 8); }
u8 checkShadow() { return fopAcM_GetParamBit(this, 8, 8); }
u8 getSwbit() { return fopAcM_GetParamBit(this, 0, 8); }
u8 getType() { return fopAcM_GetParamBit(this, 0x10, 8); }
u8 getMdlType() { return field_0x73e & 0xF; }
bool checkRollAttack() { return mIsRollAttack == true; }
void setShake(int i_shake) { mShake = i_shake; }
void setAction(u8 i_action) { mAction = i_action; }
/* 0x5A0 */ request_of_phase_process_class mPhase;
/* 0x5A8 */ J3DModel* mpModel;
/* 0x5AC */ dCcD_Stts mColliderStts;
/* 0x5E8 */ dCcD_Cyl mCylCollider;
/* 0x724 */ J3DModel* mpShadowModel;
/* 0x728 */ u8 field_0x728[0x72D - 0x728];
/* 0x72D */ u8 mIsPrmInit;
/* 0x72E */ s16 mRotY;
/* 0x730 */ u8 field_0x730[0x732 - 0x730];
/* 0x732 */ u8 mIsRollAttack;
/* 0x733 */ u8 mAction;
/* 0x734 */ s16 field_0x734;
/* 0x736 */ s16 mTimer;
/* 0x738 */ int mShake;
/* 0x73C */ s16 field_0x73c;
/* 0x73E */ u16 field_0x73e;
/* 0x740 */ u8 mMdlType;
/* 0x741 */ u8 mShakeMode;
/* 0x742 */ sdata_t mShakeData;
/* 0x74E */ s16 mQuakeTimer;
};
STATIC_ASSERT(sizeof(daPillar_c) == 0x750);
class daPillar_HIO_c : public mDoHIO_entry_c {
public:
daPillar_HIO_c();
virtual ~daPillar_HIO_c() {}
void genMessage(JORMContext*);
/* 0x04 */ daPillar_c::sdata_t mShakeData;
/* 0x10 */ u8 field_0x10[0x1C - 0x10];
/* 0x1C */ f32 field_0x1c;
/* 0x20 */ f32 field_0x20;
/* 0x24 */ u8 field_0x24;
/* 0x25 */ u8 field_0x25;
/* 0x26 */ u8 field_0x26;
/* 0x27 */ u8 mIsAdjust;
};
#endif /* D_A_OBJ_PILLAR_H */