tp/include/d/actor/d_a_door_shutter.h

175 lines
4.4 KiB
C++

#ifndef D_A_DOOR_SHUTTER_H
#define D_A_DOOR_SHUTTER_H
#include "dolphin/types.h"
#include "f_op/f_op_actor.h"
#include "SSystem/SComponent/c_phase.h"
#include "d/d_bg_w.h"
#include "d/d_msg_flow.h"
#include "d/d_bg_s_acch.h"
struct daDoor20_c;
class dDoor_stop_c {
public:
void calcMtx(daDoor20_c*);
void closeInit(daDoor20_c*);
int closeProc(daDoor20_c*);
void openInit(daDoor20_c*);
int openProc(daDoor20_c*);
int create(daDoor20_c*);
void draw(daDoor20_c*);
J3DModel* field_0x0;
f32 field_0x4;
u8 field_0x8;
u8 field_0x9;
u8 field_0xa;
u8 field_0xb;
};
/**
* @ingroup actors-doors
* @class daDoor20_c
* @brief Sliding Door
*
* @details Multi-purpose door actor. This actor is used for vertical sliding doors in the game.
*
*/
class daDoor20_c : public fopAc_ac_c {
public:
enum ActionType {
ACTION_INIT,
ACTION_WAIT,
ACTION_STOP_CLOSE,
ACTION_DEMO,
};
char* getStopBmdName();
J3DModelData* getStopModelData();
char* getAlwaysArcName();
char* getArcName();
char* getBmdName();
char* getBtk();
J3DModelData* getModelData();
f32 getSize2X();
int CreateHeap();
void setEventPrm();
int checkOpenMsgDoor(int*);
int adjustmentAngle();
int adjustmentProc();
void setAngle();
void openInit_0();
void openInit_1();
int openInit(int);
int openProc(int);
void openEnd_0();
void openEnd_1();
int openEnd(int);
void closeInit_0();
void closeInit_1();
int closeInit(int);
int closeProc(int);
void closeEnd_0();
void closeEnd_1();
int closeEnd(int);
void openInit2();
void closeEnd2();
void calcMtx_2();
void calcMtx();
int CreateInit();
void setKey();
int create();
int demoProc();
int orderStopEvent();
int actionWait();
int actionStopClose();
int actionDemo();
int actionInit();
int execute();
int draw();
void setDoorAngleSpec();
int _delete();
int createKey();
int deleteKey();
int adjoinPlayer();
int frontCheckOld();
int frontCheck();
int drawCheck(int);
int checkExecute();
void startDemoProc();
void makeEventId();
void initProc();
void initOpenDemo(int);
int checkArea(f32, f32, f32);
void openInitCom(int);
void closeEndCom();
void getRestartPos(cXyz*);
void setGoal();
int chkMakeStop();
int chkStopF();
int chkStopB();
void setStopDemo();
int chkStopClose();
void setStop();
int chkStopOpen();
int chkMakeKey();
virtual char* getDzbName();
virtual int getDemoAction();
void onFlag(u16 flag) { field_0x68e |= flag; }
void offFlag(u16 flag) { field_0x68e &= ~flag; }
bool checkFlag(u16 flag) { return field_0x68e & flag; }
void setAction(u8 action) { mAction = action; }
private:
/* 0x56C */ request_of_phase_process_class mPhase1;
/* 0x574 */ request_of_phase_process_class mPhase2;
/* 0x57C */ J3DModel* mModel1;
/* 0x580 */ J3DModel* mModel2;
/* 0x584 */ mDoExt_bckAnm field_0x584;
/* 0x5A0 */ mDoExt_bckAnm field_0x5a0;
/* 0x5BC */ J3DModel* field_0x5bc;
/* 0x5C0 */ mDoExt_btkAnm* field_0x5c0;
/* 0x5C4 */ dBgW* field_0x5c4;
/* 0x5C8 */ s8 field_0x5c8;
/* 0x5C9 */ bool field_0x5c9;
/* 0x5CA */ u8 field_0x5ca[0x5dd - 0x5ca];
/* 0x5DD */ u8 field_0x5dd;
/* 0x5E0 */ cXyz field_0x5e0;
/* 0x5EC */ u32 field_0x5ec;
/* 0x5F0 */ bool field_0x5f0;
/* 0x5F1 */ u8 field_0x5f1;
/* 0x5F4 */ Mtx field_0x5f4;
/* 0x624 */ dMsgFlow_c field_0x624;
/* 0x670 */ s16 field_0x670;
/* 0x672 */ bool field_0x672;
/* 0x673 */ u8 field_0x673;
/* 0x674 */ u8 field_0x674;
/* 0x678 */ int field_0x678;
/* 0x67C */ u8 field_0x67c;
/* 0x67D */ s8 field_0x67d;
/* 0x67E */ u8 field_0x67e;
/* 0x67F */ u8 field_0x67f;
/* 0x680 */ cXyz field_0x680;
/* 0x68C */ u8 field_0x68c;
/* 0x68D */ u8 field_0x68d;
/* 0x68E */ u16 field_0x68e;
/* 0x690 */ u8 mAction;
/* 0x691 */ u8 field_0x691;
/* 0x692 */ s16 field_0x692[19];
/* 0x6B8 */ u8 field_0x6b8[19];
/* 0x6CB */ u8 field_0x6cb;
/* 0x6CC */ u32 field_0x6cc;
/* 0x6D0 */ dDoor_stop_c mDoorStop;
/* 0x6DC */ s16 field_0x6dc;
/* 0x6DE */ dBgS_ObjAcch field_0x6de;
/* 0x8B8 */ dBgS_AcchCir field_0x8b8;
/* 0x8F8 */ u32 field_0x8f8;
};
STATIC_ASSERT(sizeof(daDoor20_c) == 0x8FC);
#endif /* D_A_DOOR_SHUTTER_H */