tp/include/d/actor/d_a_nbomb.h

141 lines
4.5 KiB
C++

#ifndef D_A_NBOMB_H
#define D_A_NBOMB_H
#include "d/d_bomb.h"
#include "d/d_bg_s_acch.h"
#include "d/d_cc_d.h"
#include "d/actor/d_a_player.h"
/**
* @ingroup actors-unsorted
* @class daNbomb_c
* @brief Bomb
*
* @details Multi-purpose bomb actor. Used for normal bombs, water bombs and bomblings.
*
*/
class daNbomb_c : public dBomb_c {
public:
enum daNbomb_FLG0 {
FLG0_PLAYER_MAKE = 0x1,
FLG0_BOMB_HIT = 0x4,
FLG0_WATER_BOMB = 0x10,
FLG0_UNDERWATER = 0x20,
FLG0_UNK_40 = 0x40,
FLG0_NO_HIT_PLAYER = 0x80,
FLG0_CARGO_CARRY = 0x100,
FLG0_FROZEN = 0x200,
FLG0_INSECT_BOMB = 0x400,
FLG0_UNK_800 = 0x800,
FLG0_DELETE_BOMB = 0x1000,
FLG0_UNK_2000 = 0x2000,
FLG0_SET_HOOKSHOT_OFFSET = 0x4000,
FLG0_UNK_8000 = 0x8000,
FLG0_UNK_10000 = 0x10000,
FLG0_UNK_20000 = 0x20000,
};
enum daNbomb_TYPE {
TYPE_NORMAL_PLAYER,
TYPE_WATER_PLAYER,
TYPE_INSECT_PLAYER,
TYPE_FLOWER,
TYPE_INSECT_ENEMY,
TYPE_WATER_ENEMY,
};
/* 804C6DCC */ void coHitCallback(fopAc_ac_c*);
/* 804C6E34 */ void tgHitCallback(dCcD_GObjInf*);
/* 804C6FD8 */ int searchEnemy(fopAc_ac_c*);
/* 804C7114 */ int createHeap();
/* 804C7324 */ int create();
/* 804C7B44 */ daNbomb_c();
/* 804C7EB4 */ ~daNbomb_c();
/* 804C8294 */ bool checkTimerStop();
/* 804C82D8 */ BOOL checkExplode();
/* 804C8430 */ void setRoomInfo();
/* 804C84D8 */ void setSmokePos();
/* 804C8588 */ void setEffect();
/* 804C87F0 */ void setHookshotOffset();
/* 804C88CC */ void setFreeze();
/* 804C88F0 */ BOOL checkWaterIn();
/* 804C8928 */ BOOL insectLineCheck();
/* 804C8A88 */ void setHitPolygon(int);
/* 804C8CF8 */ BOOL procExplodeInit();
/* 804C9118 */ BOOL procExplode();
/* 804C93E0 */ BOOL procCarryInit();
/* 804C955C */ BOOL procCarry();
/* 804C9930 */ BOOL procWaitInit();
/* 804C9984 */ BOOL procWait();
/* 804CA268 */ BOOL procFlowerWaitInit();
/* 804CA2EC */ BOOL procFlowerWait();
/* 804CA3B8 */ BOOL procBoomerangMoveInit(dCcD_GObjInf*);
/* 804CA4E0 */ BOOL procBoomerangMove();
/* 804CA688 */ BOOL procInsectMoveInit();
/* 804CA780 */ BOOL procInsectMove();
/* 804CAEE8 */ int execute();
/* 804CBC60 */ int draw();
virtual u8 checkExplodeNow() { return field_0xb51 != 0; }
virtual void deleteBombAndEffect() {
fopAcM_delete(this);
onStateFlg0(FLG0_UNK_40);
}
virtual void setCargoBombExplode() { onStateFlg0(FLG0_BOMB_HIT); }
void onStateFlg0(daNbomb_FLG0 i_flag) { mStateFlg0 |= i_flag; }
void offStateFlg0(daNbomb_FLG0 i_flag) { mStateFlg0 &= ~i_flag; }
u32 checkStateFlg0(daNbomb_FLG0 i_flag) const { return mStateFlg0 & i_flag; }
u32 checkWaterBomb() const { return checkStateFlg0(FLG0_WATER_BOMB); }
u32 checkPlayerMake() const { return checkStateFlg0(FLG0_PLAYER_MAKE); }
s16 getExTime() { return mExTime; }
static const char* m_arcNameList[6];
/* 0x56C */ request_of_phase_process_class mPhase;
/* 0x574 */ J3DModel* mpModel;
/* 0x578 */ dBgS_BombAcch mAcch;
/* 0x750 */ dBgS_AcchCir mAcchCir;
/* 0x790 */ dCcD_Stts mCcStts;
/* 0x7CC */ dCcD_Sph mCcSph;
/* 0x904 */ dCcD_Sph mSph2;
/* 0xA3C */ mDoExt_bckAnm* mpBck;
/* 0xA40 */ Mtx field_0xa40;
/* 0xA70 */ Mtx field_0xa70;
/* 0xAA0 */ dBgS_BombLinChk mLineChk;
/* 0xB10 */ cBgS_PolyInfo mInsectHitPolyInfo;
/* 0xB20 */ Z2SoundObjSimple mSound;
/* 0xB40 */ daPy_boomerangMove_c mBoomerangMove;
/* 0xB4C */ u32 mStateFlg0;
/* 0xB50 */ u8 mExplodeMode;
/* 0xB51 */ u8 field_0xb51;
/* 0xB52 */ u8 mNoHitPlayerTimer;
/* 0xB53 */ s8 mSoundReverb;
/* 0xB54 */ u8 mType;
/* 0xB55 */ u8 field_0xB55[0xB58 - 0xB55];
/* 0xB58 */ s16 mExTime;
/* 0xB5A */ s16 field_0xb5a;
/* 0xB5C */ s16 field_0xb5c;
/* 0xB5E */ s16 mFreezeTimer;
/* 0xB60 */ LIGHT_INFLUENCE mLightInfluence;
/* 0xB80 */ WIND_INFLUENCE mWindInfluence;
/* 0xBAC */ f32 mExplosionStrength;
/* 0xBB0 */ f32 field_0xbb0;
/* 0xBB4 */ u32 mPolySound;
/* 0xBB8 */ u32 mEffectEmitterIDs[5];
/* 0xBCC */ cXyz mEffectPosition;
/* 0xBD8 */ cXyz mEffectLastPosition;
/* 0xBE4 */ cXyz field_0xbe4;
/* 0xBF0 */ cXyz field_0xbf0;
/* 0xBFC */ cXyz field_0xbfc;
/* 0xC08 */ cXyz field_0xc08;
/* 0xC14 */ cXyz field_0xc14;
/* 0xC20 */ cXyz field_0xc20;
/* 0xC2C */ cXyz field_0xc2c;
/* 0xC38 */ BOOL (daNbomb_c::*mProcFunc)();
};
#endif /* D_A_NBOMB_H */