tp/include/d/actor/d_a_e_fz.h

123 lines
6.0 KiB
C++

/**
* @file d_a_e_fz.h
* @brief Freezard header file.
*
* @details This header contains information about the Mini Freezard actor.
*
*/
#ifndef D_A_E_FZ_H
#define D_A_E_FZ_H
#include "SSystem/SComponent/c_phase.h"
#include "Z2AudioLib/Z2Creature.h"
#include "f_op/f_op_actor.h"
#include "d/d_bg_s_acch.h"
#include "d/d_cc_d.h"
#include "d/d_cc_uty.h"
#include "m_Do/m_Do_hostIO.h"
/**
* @enum daE_FZ_Action
* @brief Mini Freezard current action.
*
*/
enum daE_FZ_Action {
ACT_WAIT, /**< Mini Freezard is waiting. */
ACT_MOVE, /**< Mini Freezard is moving to attack. */
ACT_ATTACK, /**< Mini Freezard is attacking. */
ACT_DAMAGE, /**< Mini Freezard is damaged. */
ACT_ROLLMOVE /**< Mini Freezard is spinning around Blizzeta.
This action is only taken when actor is loaded in with parameter 3
(during the Blizzeta fight).*/
};
/**
* @ingroup actors-enemies
* @class daE_FZ_c
* @brief Mini Freezard
*
* @details Miniature Freezard enemy.
*
*/
class daE_FZ_c : public fopEn_enemy_c {
public:
s32 draw();
void setActionMode(int, int);
void setReflectAngle();
void mBoundSoundset();
void deadnextSet(bool);
void damage_check();
bool way_gake_check();
void executeWait();
void executeMove();
void executeAttack();
void executeDamage();
void executeRollMove();
void action();
void mtx_set();
void cc_set();
s32 execute();
void demoDelete();
s32 _delete();
s32 CreateHeap();
s32 create();
private:
/* 0x5AC */ request_of_phase_process_class mPhaseReq; /**< Phase request used when creating the actor. */
/* 0x5B4 */ J3DModel* mpModel; /**< Pointer to the Mini Freezard's model. */
/* 0x5B8 */ mDoExt_invisibleModel mInvisibleModel; /**< Invisible model used for the Mini Freezard. */
/* 0x5C0 */ Z2CreatureEnemy mCreature; /**< Z2CreatureEnemy class used for playing sound effects. */
/* 0x664 */ cXyz mUserWork; /**< ??? */
/* 0x670 */ cXyz field_0x670; /**< Appears unused. Set to current position on actor creation. */
/* 0x67C */ cXyz field_0x67c[4]; /**< ??? */
/* 0x6AC */ cXyz field_0x6ac[4]; /**< ??? */
/* 0x6DC */ cXyz field_0x6dc; /**< ??? */
/* 0x6E8 */ cXyz field_0x6e8; /**< ??? */
/* 0x6F4 */ s32 mActionMode; /**< Current action mode. */
/* 0x6F8 */ s32 mActionPhase; /**< Current phase of @ref mActionMode. */
/* 0x6FC */ f32 field_0x6fc; /**< ??? */
/* 0x700 */ f32 mRadiusBase; /**< Base radius value used by @ref mTgCoSph and @ref mAtSph. */
/* 0x704 */ s16 field_0x704; /**< ??? */
/* 0x706 */ s16 mAngleFromPlayer; /**< Angle the mini freezard is from the player. */
/* 0x708 */ s16 mLastWallHitAngle; /**< Angle of the last wall the mini freezard hit. */
/* 0x70C */ s32 field_0x70c; /**< ??? */
/* 0x710 */ u8 field_0x710; /**< ??? */
/* 0x711 */ u8 field_0x711; /**< ??? */
/* 0x712 */ u8 field_0x712; /**< ??? */
/* 0x713 */ u8 field_0x713; /**< ??? */
/* 0x714 */ u8 field_0x714; /**< ??? */
/* 0x715 */ u8 field_0x715; /**< ??? */
/* 0x716 */ u8 field_0x716; /**< ??? */
/* 0x717 */ u8 field_0x717; /**< ??? */
/* 0x718 */ fopAc_ac_c* mpBlizzetaActor; /**< Pointer to Blizzeta's actor (if used). Used to figure out what the mini freezard's angle and positioning should be when Blizzeta is attacking with them. */
/* 0x71C */ u32 mParticleSet[3]; /**< Particle set */
/* 0x728 */ u8 field_0x728[4]; /**< ??? */
/* 0x72C */ dBgS_AcchCir mAcchCir; /**< Checks for actor collision with background circles? */
/* 0x76C */ dBgS_ObjAcch mObjAcch; /**< Checks for actor collision with background objects. */
/* 0x944 */ dCcD_Stts mStts; /**< Track Mini Freezard collider status. */
/* 0x980 */ dCcD_Sph mTgCoSph; /**< Sphere collider used when Mini Freezard is attacked / pushed. */
/* 0xAB8 */ dCcD_Sph mAtSph; /**< Sphere collider used when Mini Freezard is attacking. */
/* 0xBF0 */ dCcU_AtInfo mAtInfo; /**< Tracks information when the Mini Freezard is attacked. */
/* 0xC14 */ u8 field_0xc14; /**< ??? */
/* 0xC15 */ u8 field_0xc15; /**< ??? */
/* 0xC16 */ u8 field_0xc16; /**< ??? */
/* 0xC17 */ u8 field_0xc17; /**< ??? */
/* 0xC18 */ u8 field_0xc18; /**< ??? */
/* 0xC19 */ u8 field_0xc19; /**< ??? */
/* 0xC1A */ u8 field_0xc1a; /**< ??? */
/* 0xC1B */ u8 field_0xc1b; /**< ??? */
/* 0xC1C */ u8 field_0xc1c; /**< ??? */
/* 0xC1D */ u8 field_0xc1d; /**< ??? */
/* 0xC1E */ u8 field_0xc1e; /**< ??? */
/* 0xC1F */ u8 field_0xc1f; /**< ??? */
/* 0xC20 */ u8 field_0xc20; /**< ??? */
/* 0xC21 */ u8 field_0xc21; /**< ??? */
/* 0xC22 */ u8 field_0xc22; /**< ??? */
/* 0xC23 */ u8 field_0xc23; /**< ??? */
};
STATIC_ASSERT(sizeof(daE_FZ_c) == 0xC24);
#endif /* D_A_E_FZ_H */