mirror of https://github.com/zeldaret/tp
202 lines
5.4 KiB
C++
202 lines
5.4 KiB
C++
#ifndef D_A_TBOX_H
|
|
#define D_A_TBOX_H
|
|
|
|
#include "SSystem/SComponent/c_lib.h"
|
|
#include "d/d_cc_d.h"
|
|
#include "d/d_bg_s_acch.h"
|
|
#include "d/d_bg_s_movebg_actor.h"
|
|
#include "d/d_kankyo.h"
|
|
#include "f_op/f_op_actor_mng.h"
|
|
#include "m_Do/m_Do_hostIO.h"
|
|
|
|
class dBgW;
|
|
|
|
class daTboxBase_c : public dBgS_MoveBgActor {
|
|
protected:
|
|
virtual BOOL checkSmallTbox() = 0;
|
|
|
|
/* 0x5A0 */ dCcD_Stts mStts;
|
|
/* 0x5DC */ dCcD_Cyl mCyl;
|
|
};
|
|
|
|
STATIC_ASSERT(sizeof(daTboxBase_c) == 0x718);
|
|
|
|
struct daTbox_ModelInfo {
|
|
/* 0x00 */ char* mArcName;
|
|
/* 0x04 */ int mModelResNo;
|
|
/* 0x08 */ int mBckResNo;
|
|
/* 0x0C */ int mClosedDzbResNo;
|
|
/* 0x10 */ int mOpenDzbResNo;
|
|
/* 0x14 */ int mEffectResNo;
|
|
/* 0x18 */ int mBrkResNo;
|
|
};
|
|
|
|
STATIC_ASSERT(sizeof(daTbox_ModelInfo) == 0x1C);
|
|
|
|
class daTbox_c;
|
|
typedef int (daTbox_c::*daTbox_actionFn)();
|
|
typedef void (daTbox_c::*daTbox_modeFn)();
|
|
|
|
/**
|
|
* @ingroup actors-unsorted
|
|
* @class daTbox_c
|
|
* @brief Treasure Box
|
|
*
|
|
* @details
|
|
*
|
|
*/
|
|
class daTbox_c : public daTboxBase_c {
|
|
public:
|
|
enum Shape {
|
|
SHAPE_SMALL = 0,
|
|
SHAPE_LARGE = 1,
|
|
SHAPE_BOSSKEY = 2,
|
|
};
|
|
|
|
enum Mode {
|
|
MODE_EXEC_WAIT = 0,
|
|
MODE_EXEC = 1,
|
|
};
|
|
|
|
daTbox_ModelInfo* getModelInfo();
|
|
cPhs__Step commonShapeSet();
|
|
cPhs__Step effectShapeSet();
|
|
cPhs__Step envShapeSet();
|
|
cPhs__Step bgCheckSet();
|
|
void lightReady();
|
|
void setLightPos();
|
|
int checkEnv();
|
|
int checkAppear();
|
|
int checkOpen();
|
|
void clrDzb();
|
|
void setDzb();
|
|
void surfaceProc();
|
|
int checkNormal();
|
|
int checkEnvEffectTbox();
|
|
u32 calcHeapSize();
|
|
int CreateHeap();
|
|
void CreateInit();
|
|
void initPos();
|
|
void initAnm();
|
|
int boxCheck();
|
|
void demoProcOpen();
|
|
void lightColorProc();
|
|
void environmentProc();
|
|
void lightUpProc();
|
|
void lightDownProc();
|
|
void dropProcInitCall();
|
|
void dropProcInit();
|
|
int calcJumpGoalAndAngle(cXyz*, s16*);
|
|
bool getDropSAngle(s16*);
|
|
int getDir();
|
|
void setRotAxis(cXyz const*, cXyz const*);
|
|
void dropProcInit2();
|
|
void dropProc();
|
|
void demoInitAppear();
|
|
void demoProcAppear();
|
|
int demoProc();
|
|
void OpenInit_com();
|
|
void OpenInit();
|
|
int actionWait();
|
|
int actionDemo();
|
|
int actionDemo2();
|
|
int actionDropDemo();
|
|
u8 getBombItemNo(u8, u8);
|
|
u8 getBombItemNo2(u8, u8, u8);
|
|
u8 getBombItemNo3(u8, u8, u8, u8);
|
|
u8 getBombItemNoMain(u8);
|
|
int setGetDemoItem();
|
|
int actionOpenWait();
|
|
int actionNotOpenDemo();
|
|
int checkDrop();
|
|
void settingDropDemoCamera();
|
|
int actionSwOnWait();
|
|
int actionSwOnWait2();
|
|
int actionDropWait();
|
|
int actionGenocide();
|
|
int actionDropWaitForWeb();
|
|
int actionDropForWeb();
|
|
void initBaseMtx();
|
|
void setBaseMtx();
|
|
void mode_proc_call();
|
|
void mode_exec_wait();
|
|
void mode_exec();
|
|
cPhs__Step create1st();
|
|
int Execute(Mtx**);
|
|
int Draw();
|
|
int Delete();
|
|
int Create() { return true; }
|
|
|
|
virtual BOOL checkSmallTbox() { return TRUE; }
|
|
|
|
u32 getEvent() { return fopAcM_GetParam(this) >> 24; }
|
|
int getShapeType() { return (fopAcM_GetParam(this) >> 20) & 0xf; }
|
|
int getSwNo() { return (fopAcM_GetParam(this) >> 12) & 0xff; }
|
|
int getTboxNo() { return (fopAcM_GetParam(this) >> 6) & 0x3f; }
|
|
int getFuncType() { return fopAcM_GetParam(this) & 0x3f; }
|
|
u32 getSwType() { return field_0x980 & 0xf; }
|
|
int getItemNo() { return (field_0x982 >> 8) & 0xff; }
|
|
int getPathId() { return field_0x982 & 0xff; }
|
|
void flagClr() { mFlags = 0; }
|
|
void flagOn(u16 i_flag) { mFlags |= i_flag; }
|
|
void flagOff(u16 i_flag) { mFlags &= ~i_flag; }
|
|
u16 flagCheck(u16 i_flag) { return mFlags & i_flag; }
|
|
void setAction(daTbox_actionFn i_actionFn) { mpActionFn = i_actionFn; }
|
|
void action() { (this->*mpActionFn)(); }
|
|
void setDrawMtx(Mtx i_mtx) {
|
|
MTXCopy(i_mtx, mDrawMtx);
|
|
field_0x9fc = 1;
|
|
}
|
|
|
|
private:
|
|
/* 0x718 */ u8 field_0x718;
|
|
/* 0x71C */ request_of_phase_process_class mPhase;
|
|
/* 0x724 */ J3DModel* mpModel;
|
|
/* 0x728 */ J3DModel* mpSlimeModel;
|
|
/* 0x72C */ mDoExt_bckAnm* mpAnm;
|
|
/* 0x730 */ J3DModel* mpEffectModel;
|
|
/* 0x734 */ mDoExt_brkAnm* mpEffectAnm;
|
|
/* 0x738 */ dBgW* mpOpenBgW;
|
|
/* 0x73C */ dBgW* mpBgCollision;
|
|
/* 0x740 */ daTbox_actionFn mpActionFn;
|
|
/* 0x74C */ int mStaffId;
|
|
/* 0x750 */ f32 field_0x750;
|
|
/* 0x754 */ u16 mFlags;
|
|
/* 0x756 */ u16 mDemoFrame;
|
|
/* 0x758 */ bool field_0x758;
|
|
/* 0x759 */ u8 field_0x759;
|
|
/* 0x75A */ u16 field_0x75a;
|
|
/* 0x75C */ u8 mTimer;
|
|
/* 0x760 */ dBgS_ObjAcch mAcch;
|
|
/* 0x938 */ dBgS_AcchCir mAcchCir;
|
|
/* 0x978 */ u8 mTboxNo;
|
|
/* 0x97A */ s16 mEventId;
|
|
/* 0x97C */ bool field_0x97c;
|
|
/* 0x97D */ bool field_0x97d;
|
|
/* 0x97E */ u8 field_0x97e;
|
|
/* 0x97F */ bool mParamsInit;
|
|
/* 0x980 */ u16 field_0x980;
|
|
/* 0x982 */ u16 field_0x982;
|
|
/* 0x984 */ s16 field_0x984;
|
|
/* 0x988 */ Mtx field_0x988;
|
|
/* 0x9B8 */ cXyz mRotAxis;
|
|
/* 0x9C4 */ s16 field_0x9c4;
|
|
/* 0x9C6 */ s16 field_0x9c6;
|
|
/* 0x9C8 */ u8 field_0x9c8;
|
|
/* 0x9C9 */ u8 field_0x9c9;
|
|
/* 0x9CA */ s16 field_0x9ca;
|
|
/* 0x9CC */ u8 field_0x9cc;
|
|
/* 0x9CD */ u8 mMode;
|
|
/* 0x9D0 */ LIGHT_INFLUENCE mLight;
|
|
/* 0x9F0 */ f32 mAllcolRatio;
|
|
/* 0x9F4 */ int field_0x9f4;
|
|
/* 0x9F8 */ u32 mOpenSeId;
|
|
/* 0x9FC */ u8 field_0x9fc;
|
|
/* 0x9FD */ u8 field_0x9fd;
|
|
/* 0xA00 */ Mtx mDrawMtx;
|
|
};
|
|
|
|
STATIC_ASSERT(sizeof(daTbox_c) == 0xA30);
|
|
|
|
#endif /* D_A_TBOX_H */
|