mirror of
https://github.com/zeldaret/tp
synced 2026-05-24 23:22:01 -04:00
4dc0cd9d09
* Fix missing arg to JUT_ASSERT * Fix some MWCC version diff errors * Compile m_Do_ext, d_demo, actor_mng * Add VSCode task to quickly switch between versions * Unlink magLift for debug * Update the hash of the debug dol The old cbea5fa... hash here was for the dol generated by the alf2dol.py script, which produces incorrect alignment. The dol with the new hash can be obtained by using `dtk elf2dol` to convert the debug .alf file to a dol. The DOL now builds OK. * Fix all debug REL dtor splits All RELs now also build OK, meaning `ninja build/ShieldD/ok` now succeeds. * Add genMessage declarations to all HIO subclasses * Fixing more compilation errors * m_Do_mtx 100% on debug Cannot be linked due to weak function name mangling? * Improve various matches * Fix all remaining compilation errors * Fix new compilation errors from main * Fix retail regression * Link f_pc_profile_lst
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 */
|