tp/include/d/actor/d_a_obj_swpush2.h

176 lines
5.2 KiB
C++

#ifndef D_A_OBJ_SWPUSH2_H
#define D_A_OBJ_SWPUSH2_H
#include "f_op/f_op_actor_mng.h"
#include "d/d_a_obj.h"
/**
* @ingroup actors-objects
* @class daObjSwpush2
* @brief Push Switch 2
*
* @details
*
*/
namespace daObjSwpush2 {
enum AttrFlag_e {
AttrFlag_UNK_0x1_e = 0x1,
AttrFlag_UNK_0x2_e = 0x2,
AttrFlag_REV_SW_e = 0x4,
AttrFlag_HEAVY_e = 0x8,
AttrFlag_UNK_0x10_e = 0x10,
AttrFlag_UNK_0x20_e = 0x20,
};
class Attr_c {
public:
/* 0x00 */ u32 heap_size;
/* 0x04 */ AttrFlag_e flags;
/* 0x08 */ f32 size;
/* 0x0C */ const char* arcname;
/* 0x10 */ f32 unk_0x10;
/* 0x14 */ f32 unk_0x14;
/* 0x18 */ f32 unk_0x18;
/* 0x1C */ f32 unk_0x1c;
/* 0x20 */ s16 unk_0x20;
/* 0x22 */ s16 ride_time;
/* 0x24 */ s16 heavy_ride_time;
/* 0x26 */ s16 field_0x26;
/* 0x28 */ f32 unk_0x28;
/* 0x2C */ f32 unk_0x2c;
/* 0x30 */ s16 demo_run_time;
/* 0x34 */ f32 effect_distance;
};
class Hio_c : public JORReflexible {
public:
void genMessage(JORMContext*);
void ct();
void dt();
void default_set();
/* 0x4 */ int field_0x4;
/* 0x8 */ Attr_c M_attr[4];
};
class Act_c : public fopAc_ac_c {
public:
enum Prm_e {
PRM_SAVESW_SHIFT_e = 0x8,
PRM_SAVESW_NBITS_e = 0x8,
PRM_EVID_SHIFT_e = 0x0,
PRM_EVID_NBITS_e = 0x8,
PRM_TYPE_SHIFT_e = 0x18,
PRM_TYPE_NBITS_e = 0x3,
};
const char* getArcName();
const char* getBmdName();
const char* getDzbName();
const char* getNmlBtkName();
const char* getNmlBrkName();
const char* getOnBtkName();
const char* getRunBpkName();
const char* getRunBrkName();
const char* getRunBtkName();
void prmZ_init();
bool is_switch2() const;
static int solidHeapCB(fopAc_ac_c*);
bool create_heap();
bool create_init();
int create_res_load();
int Mthd_Create();
int Mthd_Delete();
void set_mtx();
void init_mtx();
static void rideCB(dBgW*, fopAc_ac_c*, fopAc_ac_c*);
void calc_top_pos();
void set_push_flag();
void mode_upper_init();
void mode_upper();
void mode_u_l_init();
void mode_u_l();
void mode_lower_init();
void mode_lower();
void mode_l_u();
void demo_non_init();
void demo_non();
void demo_reqPause_init();
void demo_reqPause();
void demo_runPause_init(int);
void demo_runPause();
void demo_stop_puase();
void demo_reqSw_init();
void demo_reqSw();
void demo_runSw_init();
void demo_runSw();
int Mthd_Execute();
int Mthd_Draw();
const Attr_c& attr() const {
#if DEBUG
return M_hio.M_attr[mType];
#else
return M_attr[mType];
#endif
}
u8 prmZ_get_swSave2() const { return mPrmZ & 0xFF; }
int prm_get_swSave() const { return daObj::PrmAbstract(this, PRM_SAVESW_NBITS_e, PRM_SAVESW_SHIFT_e); }
u8 prm_get_evId() const { return daObj::PrmAbstract(this, PRM_EVID_NBITS_e, PRM_EVID_SHIFT_e); }
int prm_get_type() const { return daObj::PrmAbstract(this, PRM_TYPE_NBITS_e, PRM_TYPE_SHIFT_e); }
bool is_switch() const { return fopAcM_isSwitch(this, prm_get_swSave()); }
void on_switch() const { fopAcM_onSwitch(this, prm_get_swSave()); }
void off_switch() const { fopAcM_offSwitch(this, prm_get_swSave()); }
void rev_switch() const { fopAcM_revSwitch(this, prm_get_swSave()); }
static const char M_arcname[];
static const Attr_c M_attr[4];
#if DEBUG
static Hio_c M_hio;
#endif
/* 0x568 */ request_of_phase_process_class mPhase;
/* 0x570 */ dBgW* mpBgw;
/* 0x574 */ Mtx mBgMtx;
/* 0x5A4 */ J3DModel* mpModel;
/* 0x5A8 */ mDoExt_bpkAnm* mpRunBpk;
/* 0x5AC */ mDoExt_btkAnm* mpRunBtk;
/* 0x5B0 */ mDoExt_brkAnm* mpRunBrk;
/* 0x5B4 */ mDoExt_btkAnm* mpOnBtk;
/* 0x5B8 */ mDoExt_brkAnm* mpNmlBrk;
/* 0x5BC */ mDoExt_btkAnm* mpNmlBtk;
/* 0x5C0 */ int mType;
/* 0x5C4 */ int mModeProc;
/* 0x5C8 */ int mDemoProc;
/* 0x5CC */ s16 mDemoRunTime;
/* 0x5CE */ s16 mEventIdx;
/* 0x5D0 */ u16 mPrmZ;
/* 0x5D2 */ u8 mPrmInit;
/* 0x5D3 */ u8 mShockTimer;
/* 0x5D4 */ u8 mRideType;
/* 0x5D5 */ u8 mPrevRideType;
/* 0x5D6 */ s16 mRideTimer;
/* 0x5D8 */ u8 mPushFlag;
/* 0x5D9 */ u8 mIsPlayerRideHeavy;
/* 0x5DA */ u8 mPrevPlayerRideHeavy;
/* 0x5DC */ s16 mHeavyRideTimer;
/* 0x5DE */ u8 mHeavyPushFlag;
/* 0x5DF */ u8 field_0x5df;
/* 0x5E0 */ s16 mPauseDemoTimer;
/* 0x5E4 */ f32 mTopPos;
/* 0x5E8 */ f32 field_0x5e8;
/* 0x5EC */ f32 field_0x5ec;
/* 0x5F0 */ u8 field_0x5f0;
};
};
STATIC_ASSERT(sizeof(daObjSwpush2::Act_c) == 0x5f4);
#endif /* D_A_OBJ_SWPUSH2_H */