#ifndef D_A_MG_FISH_H #define D_A_MG_FISH_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" /** * @ingroup actors-unsorted * @class mf_ke_s * @brief Fishing line ("keburu") * * @details */ struct mf_ke_s { /* 0x00 */ cXyz mControlPoints[5]; /* 0x3C */ cXyz mMovementDir; }; /** * @ingroup actors-unsorted * @class mg_fish_class * @brief Fish * * @details * */ class mg_fish_class { public: /* 0x0 */ fopEn_enemy_c actor; /* 0x5AC */ request_of_phase_process_class mPhaseReq; /* 0x5B4 */ s16 mBobTimer; /* 0x5B6 */ s16 mCurAction; /* 0x5B8 */ s16 mActionPhase; /* 0x5BC */ f32 mJointScale; /* 0x5C0 */ cXyz mNextPos; /* 0x5CC */ s16 mMovementYaw; /* 0x5CE */ s16 mMovementPitch; /* 0x5D0 */ s16 mMaxStep; /* 0x5D2 */ s16 mCurSwimStep; /* 0x5D4 */ f32 field_0x5d4; /* 0x5D8 */ f32 mSurfaceY; /* 0x5DC */ f32 mGroundY; /* 0x5E0 */ cXyz field_0x5e0; /* 0x5EC */ f32 field_0x5ec; /* 0x5F0 */ f32 mDistToPlayer; /* 0x5F4 */ s16 mYawToPlayer; /* 0x5F6 */ s16 field_0x5f6; /* 0x5F8 */ s16 field_0x5f8; /* 0x5FC */ char* mResName; /* 0x600 */ mDoExt_McaMorf* mpMorf; /* 0x604 */ J3DAnmTransform* mAnmTransform; /* 0x608 */ u32 mShadowId; /* 0x60C */ int mAnmID; /* 0x610 */ mDoExt_brkAnm* mpBrkAnm; /* 0x614 */ J3DModel* mpModel[3]; /* 0x620 */ mDoExt_btpAnm* mpBtpAnm; /* 0x624 */ s16 field_0x624[5]; /* 0x62E */ s16 field_0x62e; /* 0x630 */ s16 mRemainingHookTime; /* 0x632 */ s16 field_0x632; /* 0x634 */ u8 mGedouKind; /* 0x635 */ u8 mKind2; /* 0x638 */ cXyz field_0x638; /* 0x644 */ s16 mRotZ; /* 0x648 */ u32 mBaitId; /* 0x64C */ u32 mRodId; /* 0x650 */ f32 field_0x650; /* 0x654 */ f32 field_0x654; /* 0x658 */ s8 mHookedState; /* 0x659 */ s8 field_0x659; /* 0x65A */ s8 field_0x65a; /* 0x65B */ u8 field_0x65b; /* 0x65C */ u8 field_0x65c; /* 0x65D */ u8 field_0x65d; /* 0x660 */ f32 field_0x660; /* 0x664 */ cXyz mJointTranslations[10]; /* 0x6DC */ csXyz mJointRotations[10]; /* 0x718 */ s16 jointYaws1[10]; /* 0x72C */ s32 mNumJoints; /* 0x730 */ s16 jointYaws2[6]; /* 0x73C */ f32 field_0x73c; /* 0x740 */ f32 field_0x740; /* 0x744 */ f32 mBobAmp; /* 0x748 */ f32 field_0x748; /* 0x74C */ f32 field_0x74c; /* 0x750 */ u8 field_0x750; /* 0x754 */ mf_ke_s field_0x754[2]; /* 0x7E4 */ mDoExt_3DlineMat0_c mLineMat; /* 0x800 */ Z2Creature mSound; /* 0x890 */ dBgS_AcchCir mAcchCir; /* 0x8D0 */ dBgS_ObjAcch mAcch; /* 0xAA8 */ dCcD_Stts mCcStatus; /* 0xAE4 */ dCcD_Cyl mCcCyl; /* 0xC20 */ u32 field_0xc20; /* 0xC24 */ u8 field_0xc24[0xc28 - 0xc24]; /* 0xC28 */ s32 mEmitterIds[3]; /* 0xC34 */ u32 field_0xc34; /* 0xC38 */ u32 field_0xc38; /* 0xC3C */ u8 field_0xc3c; /* 0xC3D */ u8 mCaughtType; /* 0xC3E */ u8 field_0xc3e; /* 0xC3F */ u8 field_0xc3f; /* 0xC40 */ f32 field_0xc40; /* 0xC44 */ u8 field_0xc44; /* 0xC48 */ J3DJointCallBack mNodeCallBack; /* 0xC4C */ u32 mSkullfishId; }; STATIC_ASSERT(sizeof(mg_fish_class) == 0xC50); class daMg_Fish_HIO_c { public: daMg_Fish_HIO_c(); virtual ~daMg_Fish_HIO_c() {} /* 0x4 */ s8 field_0x4; /* 0x8 */ f32 field_0x8; /* 0xC */ f32 field_0xc; /* 0x10 */ f32 field_0x10; /* 0x14 */ f32 field_0x14; /* 0x18 */ u8 field_0x18; /* 0x19 */ u8 field_0x19; /* 0x1A */ u8 field_0x1a; /* 0x1B */ u8 field_0x1b; }; #endif /* D_A_MG_FISH_H */