mirror of https://github.com/zeldaret/tp
151 lines
4.0 KiB
C++
151 lines
4.0 KiB
C++
#ifndef D_A_D_A_ITEM_STATIC_H
|
|
#define D_A_D_A_ITEM_STATIC_H
|
|
|
|
#include "SSystem/SComponent/c_lib.h"
|
|
#include "d/actor/d_a_itembase.h"
|
|
#include "d/d_particle.h"
|
|
#include "d/actor/d_a_player.h"
|
|
|
|
class daItem_c;
|
|
typedef void (daItem_c::*procFunc)();
|
|
|
|
class daItem_c : public daItemBase_c {
|
|
public:
|
|
enum Type_e {
|
|
TYPE_LAUNCH_e,
|
|
TYPE_FIXED_PLACE_e,
|
|
TYPE_UNK2_e,
|
|
TYPE_WAIT_e,
|
|
TYPE_SIMPLE_GET_e,
|
|
TYPE_BOOM_HIT_e,
|
|
TYPE_LAUNCH_NO_RND_e,
|
|
TYPE_FORCE_GET_e,
|
|
TYPE_LAUNCH_SMALL_e,
|
|
TYPE_LAUNCH_FROM_PLAYER_e,
|
|
};
|
|
|
|
enum Flag_e {
|
|
FLAG_UNK_2_e = (1 << 1),
|
|
FLAG_NO_MOVE_e = (1 << 2),
|
|
FLAG_NO_TIMER_e = (1 << 3),
|
|
FLAG_INIT_GET_ITEM_e = (1 << 4),
|
|
FLAG_DELETE_ITEM_e = (1 << 5),
|
|
};
|
|
|
|
enum Mode_e {
|
|
MODE_WAIT_e,
|
|
MODE_WATER_e,
|
|
};
|
|
|
|
enum Status_e {
|
|
STATUS_NORMAL_e,
|
|
STATUS_ENEMY_CARRY_e,
|
|
STATUS_SIMPLE_GET_DEMO_e,
|
|
STATUS_WAIT_GET_DEMO_EVENT_e,
|
|
STATUS_GET_DEMO_EVENT_e,
|
|
STATUS_BOOMERANG_CARRY_e,
|
|
STATUS_SW_ON_WAIT_e,
|
|
STATUS_BOOM_HIT_WAIT_e,
|
|
STATUS_FORCE_GET_e,
|
|
};
|
|
|
|
daItem_c() : mSparkleEmtr(0, 0) {}
|
|
void initBaseMtx();
|
|
void setBaseMtx();
|
|
void setBaseMtx_0();
|
|
void setBaseMtx_1();
|
|
void CreateInit();
|
|
void setCullInfo();
|
|
int _daItem_create();
|
|
int _daItem_execute();
|
|
int _daItem_draw();
|
|
int _daItem_delete();
|
|
void procInitNormal();
|
|
void procMainNormal();
|
|
void procMainEnemyCarry();
|
|
void procInitForceGet();
|
|
void procMainForceGet();
|
|
void procInitSimpleGetDemo();
|
|
void procMainSimpleGetDemo();
|
|
void procInitGetDemoEvent();
|
|
void procWaitGetDemoEvent();
|
|
void procMainGetDemoEvent();
|
|
void procInitBoomerangCarry();
|
|
void procMainBoomerangCarry();
|
|
void procInitSwOnWait();
|
|
void procMainSwOnWait();
|
|
void procInitBoomHitWait();
|
|
void procMainBoomHitWait();
|
|
void move_proc_call();
|
|
void mode_wait_init();
|
|
void mode_water_init();
|
|
void mode_wait();
|
|
void mode_water();
|
|
void itemGetNextExecute();
|
|
void itemGet();
|
|
BOOL checkCountTimer();
|
|
BOOL checkPlayerGet();
|
|
void checkYogan();
|
|
void deleteItem();
|
|
int itemActionForRupee();
|
|
int itemActionForHeart();
|
|
int itemActionForArrow();
|
|
int itemActionForBoomerang();
|
|
void bg_check();
|
|
void set_bound_se();
|
|
int CountTimer();
|
|
int initAction();
|
|
void initFlag();
|
|
void initScale();
|
|
void initSpeed(int);
|
|
void initAngle();
|
|
u32 startCtrl();
|
|
u32 startControl();
|
|
u32 endControl();
|
|
|
|
virtual void setTevStr();
|
|
|
|
void setStatus(u8 status) { mStatus = status; }
|
|
int getStatus() { return mStatus; }
|
|
|
|
void setFlag(u8 pFlag) { cLib_onBit(mFlag, pFlag); }
|
|
bool checkFlag(u8 flag) { return cLib_checkBit(mFlag, flag); }
|
|
void clrFlag(u8 flag) { cLib_offBit(mFlag, flag); }
|
|
|
|
bool checkBoomWindTgTimer() { return mBoomWindTgTimer == 0; }
|
|
|
|
static procFunc mFuncPtr[];
|
|
static dCcD_SrcCyl m_cyl_src;
|
|
static s32 m_timer_max;
|
|
|
|
/* 0x92C */ s16 field_0x92c;
|
|
/* 0x92E */ u16 field_0x92e;
|
|
/* 0x930 */ cXyz mItemScale;
|
|
/* 0x93C */ int mSwitchNo;
|
|
/* 0x940 */ u16 field_0x940;
|
|
/* 0x942 */ s16 mWaitTimer;
|
|
/* 0x944 */ s16 mDisappearTimer;
|
|
/* 0x946 */ s16 mSimpleExistTimer;
|
|
/* 0x948 */ u8 mFlag;
|
|
/* 0x949 */ u8 mMode;
|
|
/* 0x94A */ u8 mStatus;
|
|
/* 0x94B */ u8 field_0x94b;
|
|
/* 0x94C */ u32 m_item_id;
|
|
/* 0x950 */ cXyz field_0x950;
|
|
/* 0x95C */ u8 mSwOnWaitTimer;
|
|
/* 0x95D */ bool field_0x95d;
|
|
/* 0x95E */ u8 mBoomWindTgTimer;
|
|
/* 0x95F */ u8 field_0x95f;
|
|
/* 0x960 */ daPy_boomerangMove_c mBoomerangMove;
|
|
/* 0x96C */ cXyz mLastPos;
|
|
/* 0x978 */ Z2SoundObjSimple mSound;
|
|
/* 0x998 */ dPa_followEcallBack mSparkleEmtr;
|
|
/* 0x9AC */ cXyz mSparklePos;
|
|
/* 0x9B8 */ u32 field_0x9b8;
|
|
/* 0x9BC */ u8 field_0x9bc[4];
|
|
/* 0x9C0 */ u8 field_0x9c0;
|
|
/* 0x9C1 */ u8 field_0x9c1;
|
|
}; // Size: 0x9C4
|
|
|
|
#endif /* D_A_D_A_ITEM_STATIC_H */
|