tp/include/d/actor/d_a_obj_glowSphere.h

179 lines
3.7 KiB
C++

#ifndef D_A_OBJ_GLOWSPHERE_H
#define D_A_OBJ_GLOWSPHERE_H
#include "f_op/f_op_actor_mng.h"
#include "d/d_bg_s_acch.h"
#include "d/d_cc_d.h"
class daGlwSph_c;
class _GlSph_LstInfo_c{
public:
_GlSph_LstInfo_c() {
mpSph = NULL;
mIsSet = false;
}
~_GlSph_LstInfo_c() {}
void Set(daGlwSph_c* i_sph) {
if (!mIsSet && i_sph != NULL) {
mpSph = i_sph;
mIsSet = true;
}
}
void Remove() {
mpSph = NULL;
mIsSet = false;
}
bool isSet() { return mIsSet; }
daGlwSph_c* getpSph() { return mpSph; }
private:
/* 0x0 */ daGlwSph_c* mpSph;
/* 0x4 */ s8 mIsSet;
};
class _GlSph_Mng_c {
public:
_GlSph_Mng_c() {
field_0x0 = 0;
}
~_GlSph_Mng_c() {
reset();
}
void _clrLstBuf();
int entry(daGlwSph_c*);
void remove(daGlwSph_c*);
int _setting_main();
BOOL _chkAllGet_main();
void SphSeProc();
static void clrSphSe();
static u16 getSphSe();
static void incSphSe();
void setting() {
_setting_main();
}
BOOL isAllGet() {
return _chkAllGet_main();
}
void reset() {
field_0x0 = 0;
_clrLstBuf();
}
static u16 mSphSe;
static s16 mSeClrTmr;
/* 0x0 */ int field_0x0;
/* 0x4 */ _GlSph_LstInfo_c mListBuf[120];
};
/**
* @ingroup actors-objects
* @class daGlwSph_c
* @brief STAR Game Glow Sphere
*
* @details
*
*/
class daGlwSph_c : public fopAc_ac_c {
public:
enum COLOR_e {
COLOR_GRAY_e,
COLOR_RED_e,
COLOR_YELLOW_e,
COLOR_BLUE_e,
COLOR_DEFAULT_e = 0xFF,
};
enum ACTION_e {
ACTION_WAIT_e,
ACTION_GET_e,
ACTION_MOVE_e,
};
static _GlSph_Mng_c& getSphMng();
void setBaseMtx();
static int createHeapCallBack(fopAc_ac_c*);
int CreateHeap();
int create();
int execute();
void actionMain();
void effectSet();
void getSE();
void getVibe();
void actionWaitInit();
void actionWait();
void actionGetInit();
void actionGet();
void actionMoveInit();
void actionMove();
int draw();
int _delete();
int getSw() { return fopAcM_GetParamBit(this, 0, 8); }
u8 getArg0() { return fopAcM_GetParamBit(this, 8, 8); }
u8 getColor() { return fopAcM_GetParamBit(this, 0x10, 8); }
void onGetFlag() { mGetFlag = true; }
void offGetFlag() { mGetFlag = false; }
void saveGetFlag() { field_0x951 = mGetFlag; }
bool is_getted() { return mGetFlag == true; }
void reset() {
current.pos = home.pos;
mSphCollider.OnCoSetBit();
offGetFlag();
saveGetFlag();
}
static const dCcD_SrcGObjInf mCcDObjInfo;
static dCcD_SrcSph mCcDSph;
static _GlSph_Mng_c mSphMng;
/* 0x568 */ request_of_phase_process_class mPhase;
/* 0x570 */ J3DModel* mpModel;
/* 0x574 */ mDoExt_btkAnm mBtk;
/* 0x58C */ mDoExt_brkAnm mBrk;
/* 0x5A4 */ dBgS_ObjAcch mAcch;
/* 0x77C */ dBgS_AcchCir mAcchCir;
/* 0x7BC */ dCcD_Stts mColliderStts;
/* 0x7F8 */ dCcD_Sph mSphCollider;
/* 0x930 */ LIGHT_INFLUENCE mLight;
/* 0x950 */ u8 mGetFlag;
/* 0x951 */ u8 field_0x951;
/* 0x952 */ u8 mAction;
/* 0x953 */ u8 mIsNoMoveHome;
/* 0x954 */ u8 mColor;
/* 0x955 */ u8 mMoveTimer;
/* 0x958 */ f32 mMoveSpeed;
/* 0x95C */ cXyz mMoveVec;
/* 0x968 */ cXyz field_0x968;
/* 0x974 */ cXyz field_0x974;
/* 0x980 */ s16 field_0x980;
/* 0x984 */ u32 mEmitterIDs[2];
};
STATIC_ASSERT(sizeof(daGlwSph_c) == 0x98C);
class daGlwSph_HIO_c : public fOpAcm_HIO_entry_c {
public:
daGlwSph_HIO_c();
virtual ~daGlwSph_HIO_c() {}
void genMessage(JORMContext*);
/* 0x4 */ f32 speed;
/* 0x8 */ f32 speed2;
};
#endif /* D_A_OBJ_GLOWSPHERE_H */