mirror of https://github.com/zeldaret/tp.git
110 lines
3.1 KiB
C++
110 lines
3.1 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;
|
|
};
|
|
|
|
/* 80CAF4B4 */ void setBaseMtx();
|
|
/* 80CAF8A4 */ int create1st();
|
|
/* 80CAFB44 */ bool checkAttacked();
|
|
/* 80CAFC08 */ void on_switch();
|
|
/* 80CAFD64 */ int checkShake();
|
|
/* 80CAFF60 */ void setShake_rcrash();
|
|
/* 80CB01E0 */ void setShake_strong();
|
|
/* 80CB022C */ void setShake_weak();
|
|
/* 80CB0278 */ void switch_proc_call();
|
|
/* 80CB031C */ void actionSwOnWait();
|
|
/* 80CB0378 */ void actionSwOn();
|
|
/* 80CB03CC */ void actionEnd();
|
|
|
|
/* 80CAF7A8 */ virtual int CreateHeap();
|
|
/* 80CAF5EC */ virtual int Create();
|
|
/* 80CB03D0 */ virtual int Execute(Mtx**);
|
|
/* 80CB0658 */ virtual int Draw();
|
|
/* 80CB0740 */ 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:
|
|
/* 80CAF32C */ daPillar_HIO_c();
|
|
/* 80CB0928 */ 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 */
|