#ifndef D_A_E_SM2_H #define D_A_E_SM2_H #include "f_op/f_op_actor_mng.h" #include "Z2AudioLib/Z2Creature.h" #include "d/d_bg_s_acch.h" #include "d/d_cc_d.h" #include "d/d_cc_uty.h" enum daE_SM2_TYPE { TYPE_GREEN, TYPE_RED, TYPE_BLUE, TYPE_YELLOW, TYPE_PURPLE, TYPE_RARE, TYPE_BLACK, TYPE_RANDOM, }; enum daE_SM2_ACTION { ACTION_NORMAL_MOVE, ACTION_ATTACK, ACTION_COMBINE, ACTION_ROOF = 10, ACTION_WATER, ACTION_FAIL = 20, }; /** * @ingroup actors-enemies * @class e_sm2_class * @brief Chuchu 2 * * @details * */ class e_sm2_class { public: bool checkYellow() { return type == TYPE_YELLOW; } /* 0x000 */ fopEn_enemy_c enemy; /* 0x5AC */ request_of_phase_process_class phase; /* 0x5B4 */ u8 field_0x5b4; /* 0x5B5 */ u8 field_0x5b5; /* 0x5B6 */ u8 field_0x5b6; /* 0x5B7 */ u8 type; /* 0x5B8 */ int field_0x5b8; /* 0x5BC */ mDoExt_McaMorfSO* modelMorf; /* 0x5C0 */ mDoExt_invisibleModel invisModel; /* 0x5C8 */ mDoExt_btkAnm* pbtk; /* 0x5CC */ mDoExt_McaMorfSO* pieceModelMorf; /* 0x5D0 */ mDoExt_invisibleModel pieceInvisModel; /* 0x5D8 */ s8 isPiece; /* 0x5DC */ Z2CreatureEnemy sound; /* 0x680 */ s16 counter; /* 0x682 */ s16 action; /* 0x684 */ s16 mode; /* 0x686 */ s16 timers[3]; /* 0x68C */ s16 invulernabilityTimer; /* 0x68E */ s16 combine_off_timer; /* 0x690 */ s16 angle_to_pl; /* 0x694 */ f32 dist_to_pl; /* 0x698 */ cXyz field_0x698; /* 0x6A4 */ s16 mCurrentAngleYTarget; /* 0x6A6 */ s16 mCurrentAngleYTargetStep; /* 0x6A8 */ s8 field_0x6a8; /* 0x6A9 */ u8 field_0x6a9; /* 0x6AA */ u8 field_0x6aa; /* 0x6AC */ f32 field_0x6ac; /* 0x6B0 */ f32 field_0x6b0; /* 0x6B4 */ u32 shadowId; /* 0x6B8 */ f32 color_R; /* 0x6BC */ f32 color_G; /* 0x6C0 */ f32 color_B; /* 0x6C4 */ f32 color_alpha; /* 0x6C8 */ f32 field_0x6c8[8]; /* 0x6E8 */ f32 field_0x6e8[8]; /* 0x708 */ cXyz field_0x708[8]; /* 0x768 */ csXyz field_0x768[8]; /* 0x798 */ cXyz jnt_pos[8]; /* 0x7F8 */ csXyz field_0x7f8[8]; /* 0x828 */ s16 field_0x828; /* 0x82C */ f32 field_0x82c; /* 0x830 */ f32 field_0x830; /* 0x834 */ f32 size; /* 0x838 */ f32 field_0x838; /* 0x83C */ u8 sizetype; /* 0x83D */ u8 is_roof; /* 0x83E */ u8 field_0x83e; /* 0x83F */ s8 field_0x83f; /* 0x840 */ cXyz field_0x840; /* 0x84C */ csXyz field_0x84c; /* 0x854 */ dBgS_AcchCir acchcir; /* 0x894 */ dBgS_ObjAcch acch; /* 0xA6C */ dCcD_Stts ccStts; /* 0xAA8 */ dCcD_Sph ccSph[4]; /* 0xF88 */ s8 field_0xf88; /* 0xF8C */ dCcU_AtInfo atInfo; /* 0xFB0 */ u32 field_0xfb0[4][2]; /* 0xFD0 */ fpc_ProcID combine_actor_pid; /* 0xFD4 */ s8 field_0xfd4; /* 0xFD8 */ u32 field_0xfd8; /* 0xFDC */ u8 field_0xfdc[0xFF0 - 0xFDC]; }; STATIC_ASSERT(sizeof(e_sm2_class) == 0xff0); #endif /* D_A_E_SM2_H */