Files
tp/include/d/actor/d_a_obj_pillar.h
T

110 lines
3.1 KiB
C++
Raw Normal View History

2021-03-28 22:49:05 +02:00
#ifndef D_A_OBJ_PILLAR_H
#define D_A_OBJ_PILLAR_H
2024-05-29 01:49:10 -06:00
#include "f_op/f_op_actor_mng.h"
2024-11-30 02:08:38 -08:00
#include "d/d_bg_s_movebg_actor.h"
#include "d/d_cc_d.h"
2024-05-29 01:49:10 -06:00
/**
* @ingroup actors-objects
* @class daPillar_c
* @brief Forest Temple Totem Pole
*
* @details
*
*/
2024-11-30 02:08:38 -08:00
class daPillar_c : public dBgS_MoveBgActor {
2024-05-29 01:49:10 -06:00
public:
2024-11-30 02:08:38 -08:00
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;
};
2024-05-29 01:49:10 -06:00
/* 80CAF4B4 */ void setBaseMtx();
2024-11-30 02:08:38 -08:00
/* 80CAF8A4 */ int create1st();
/* 80CAFB44 */ bool checkAttacked();
2024-05-29 01:49:10 -06:00
/* 80CAFC08 */ void on_switch();
2024-11-30 02:08:38 -08:00
/* 80CAFD64 */ int checkShake();
2024-05-29 01:49:10 -06:00
/* 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();
2024-11-30 02:08:38 -08:00
/* 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); }
2024-05-29 01:49:10 -06:00
2024-11-22 13:32:01 -08:00
u8 getMdlType() { return field_0x73e & 0xF; }
2024-11-30 02:08:38 -08:00
bool checkRollAttack() { return mIsRollAttack == true; }
void setShake(int i_shake) { mShake = i_shake; }
void setAction(u8 i_action) { mAction = i_action; }
2024-11-22 13:32:01 -08:00
2024-11-30 02:08:38 -08:00
/* 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;
2024-11-22 13:32:01 -08:00
/* 0x73E */ u16 field_0x73e;
2024-11-30 02:08:38 -08:00
/* 0x740 */ u8 mMdlType;
/* 0x741 */ u8 mShakeMode;
/* 0x742 */ sdata_t mShakeData;
/* 0x74E */ s16 mQuakeTimer;
2024-05-29 01:49:10 -06:00
};
2024-06-10 01:34:52 -06:00
2024-05-29 01:49:10 -06:00
STATIC_ASSERT(sizeof(daPillar_c) == 0x750);
2024-11-30 02:08:38 -08:00
class daPillar_HIO_c : public mDoHIO_entry_c {
2024-05-29 01:49:10 -06:00
public:
/* 80CAF32C */ daPillar_HIO_c();
2024-11-30 02:08:38 -08:00
/* 80CB0928 */ virtual ~daPillar_HIO_c() {}
void genMessage(JORMContext*);
2024-11-30 02:08:38 -08:00
/* 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;
2024-05-29 01:49:10 -06:00
};
2021-03-28 22:49:05 +02:00
#endif /* D_A_OBJ_PILLAR_H */