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

104 lines
2.6 KiB
C++
Raw Normal View History

2021-03-28 22:49:05 +02:00
#ifndef D_A_OBJ_SWHANG_H
#define D_A_OBJ_SWHANG_H
2023-03-01 14:13:22 -08:00
#include "SSystem/SComponent/c_phase.h"
2024-10-10 07:29:58 -07:00
#include "d/d_bg_s_movebg_actor.h"
#include "d/d_cc_d.h"
#include "d/d_event_lib.h"
2024-12-31 04:20:31 +02:00
#include "f_op/f_op_actor_mng.h"
2023-03-01 14:13:22 -08:00
2024-05-29 01:49:10 -06:00
/**
* @ingroup actors-objects
* @class daObjSwHang_c
* @brief Dangle A
*
* @details
*
*/
2024-12-31 04:20:31 +02:00
class daObjSwHang_c : public dBgS_MoveBgActor, public dEvLib_callback_c {
2023-03-01 14:13:22 -08:00
public:
2024-12-31 04:20:31 +02:00
typedef void (daObjSwHang_c::*modeFunc)();
enum Type {
TYPE_0,
TYPE_1,
TYPE_2,
TYPE_3,
TYPE_4,
};
enum Flags {
/* 0x01 */ FLAGS_1 = 1 << 0,
/* 0x02 */ FLAGS_2 = 1 << 1,
};
enum Mode {
MODE_OFF_WAIT,
MODE_ON_WAIT,
};
2025-11-30 14:23:42 -08:00
void initBaseMtx();
void setBaseMtx();
int create1st();
void calcHangPos();
BOOL checkDown();
void changeOnStatus();
void changeOffStatus();
void action();
void checkDownSw();
void init_modeOffWait();
void modeOffWait();
void init_modeOnWait();
void modeOnWait();
2024-12-31 04:20:31 +02:00
daObjSwHang_c() : dEvLib_callback_c(this) {}
2023-03-01 14:13:22 -08:00
2025-11-30 14:23:42 -08:00
virtual int CreateHeap();
virtual int Create();
virtual int Execute(Mtx**);
virtual int Draw();
virtual int Delete();
2023-03-01 14:13:22 -08:00
2025-11-30 14:23:42 -08:00
virtual bool eventStart();
virtual ~daObjSwHang_c() {}
2024-07-06 07:33:37 -07:00
cXyz getHangPos() { return mHangPos; }
2023-03-02 04:13:22 -08:00
void setHangPlayer() { mHangPlayer = 1; }
2024-12-31 04:20:31 +02:00
u8 getType() { return mType; }
u8 getType_private() { return fopAcM_GetParamBit(this, 28, 4); }
u8 checkType() { return fopAcM_GetParamBit(this, 25, 1); }
u8 getSwNo() { return fopAcM_GetParamBit(this, 0, 8); }
u8 getKind() { return fopAcM_GetParamBit(this, 26, 2); }
u8 getEvId() { return fopAcM_GetParamBit(this, 8, 8); }
int getTotteJointNo() { return mTotteJointNo; }
f32 getHangLength() { return mHangLength; }
void clrFlag() { mFlags = 0; }
void onFlag(u16 flag) { mFlags |= flag; }
u16 checkFlag(u16 flag) { return mFlags & flag; }
2023-03-02 04:13:22 -08:00
2024-05-29 01:49:10 -06:00
private:
2023-03-01 14:13:22 -08:00
/* 0x5B0 */ request_of_phase_process_class mPhase;
/* 0x5B8 */ J3DModel* mpModel;
/* 0x5BC */ dCcD_Stts mCcStts;
/* 0x5F8 */ dCcD_Sph mCcSph;
2024-12-31 04:20:31 +02:00
/* 0x730 */ u8 mType;
/* 0x731 */ u8 mMode;
2023-03-01 14:13:22 -08:00
/* 0x734 */ dBgW* mpBgW;
/* 0x738 */ Mtx field_0x738;
/* 0x768 */ int mTotteJointNo;
/* 0x76C */ f32 mHangLength;
/* 0x770 */ cXyz mHangPos;
/* 0x77C */ u8 mHangPlayer;
/* 0x77D */ u8 field_0x77d;
/* 0x77E */ u8 field_0x77e;
/* 0x780 */ u16 mFlags;
/* 0x784 */ f32 field_0x784;
/* 0x788 */ f32 field_0x788;
/* 0x78C */ s16 field_0x78c;
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(daObjSwHang_c) == 0x790);
2021-03-28 22:49:05 +02:00
#endif /* D_A_OBJ_SWHANG_H */