mirror of https://github.com/zeldaret/tp.git
74 lines
1.5 KiB
C++
74 lines
1.5 KiB
C++
#ifndef D_A_OBJ_CATDOOR_H
|
|
#define D_A_OBJ_CATDOOR_H
|
|
|
|
#include "f_op/f_op_actor_mng.h"
|
|
#include "d/d_bg_w.h"
|
|
|
|
class daObjCatDoor_Door_c {
|
|
public:
|
|
/* 0x00 */ J3DModel* pmodel;
|
|
/* 0x04 */ dBgW bgw;
|
|
/* 0xe0 */ Mtx mtx;
|
|
/* 0xf4 */ s16 angle;
|
|
};
|
|
|
|
/**
|
|
* @ingroup actors-objects
|
|
* @class daObjCatDoor_c
|
|
* @brief Cat Door
|
|
*
|
|
* @details
|
|
*
|
|
*/
|
|
class daObjCatDoor_c : public fopAc_ac_c {
|
|
public:
|
|
inline ~daObjCatDoor_c();
|
|
|
|
const s16* attr() const;
|
|
void initBaseMtx();
|
|
void setBaseMtx();
|
|
void calcOpen();
|
|
|
|
u8 getSwitchNo() { return fopAcM_GetParam(this); }
|
|
|
|
inline int createHeap();
|
|
inline int draw();
|
|
inline int execute();
|
|
inline int create();
|
|
inline void create_init();
|
|
|
|
void _toDoorOpened() {
|
|
mDoor1.angle = 0x8800;
|
|
mDoor2.angle = 0x7800;
|
|
setBaseMtx();
|
|
fopAcM_onSwitch(this, getSwitchNo());
|
|
}
|
|
|
|
void setDoorOpen() {
|
|
mRotSpeed = attr()[1];
|
|
dBgW* bgw1 = &mDoor1.bgw;
|
|
if (bgw1->ChkUsed()) {
|
|
dComIfG_Bgsp().Release(bgw1);
|
|
}
|
|
|
|
dBgW* bgw2 = &mDoor2.bgw;
|
|
if (bgw2->ChkUsed()) {
|
|
dComIfG_Bgsp().Release(bgw2);
|
|
}
|
|
|
|
Z2GetAudioMgr()->seStart(Z2SE_OBJ_GZ_NE_DOOR_OP, ¤t.pos, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
|
|
}
|
|
|
|
private:
|
|
/* 0x568 */ request_of_phase_process_class mPhaseReq;
|
|
/* 0x570 */ daObjCatDoor_Door_c mDoor1;
|
|
/* 0x660 */ daObjCatDoor_Door_c mDoor2;
|
|
/* 0x760 */ Mtx mMtx;
|
|
/* 0x790 */ s16 mRotSpeed;
|
|
|
|
public:
|
|
static u32 const M_attr;
|
|
};
|
|
|
|
#endif /* D_A_OBJ_CATDOOR_H */
|