diff options
| author | Carco_21 <144170194+carter-ktb21@users.noreply.github.com> | 2025-07-15 16:05:04 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-07-15 23:05:04 +0300 |
| commit | c0717e1e56131bc318cc9887e312c18f07f6dfd9 (patch) | |
| tree | 3371fd315338cf70292fc6ce84e21ee0cf827527 /include | |
| parent | 5c86d6d26f15ae2b60f150cecbbf946d17c20595 (diff) | |
d_a_obj_lv6bemos2 and d_a_obj_lv6bemos almost equivalent (#2527)
* initial work
* All but one function equivalent
* Missed comment that needed to be removed
* initial work
* got to CreateHeap
* d_a_obj_lv6bemos almost equivalent
Diffstat (limited to 'include')
| -rw-r--r-- | include/d/actor/d_a_obj_lv6bemos.h | 48 | ||||
| -rw-r--r-- | include/d/actor/d_a_obj_lv6bemos2.h | 109 | ||||
| -rw-r--r-- | include/f_op/f_op_actor_mng.h | 5 |
3 files changed, 140 insertions, 22 deletions
diff --git a/include/d/actor/d_a_obj_lv6bemos.h b/include/d/actor/d_a_obj_lv6bemos.h index 68e201376f..5be56dbf6c 100644 --- a/include/d/actor/d_a_obj_lv6bemos.h +++ b/include/d/actor/d_a_obj_lv6bemos.h @@ -1,6 +1,8 @@ #ifndef D_A_OBJ_LV6BEMOS_H #define D_A_OBJ_LV6BEMOS_H +#include "d/d_bg_s_movebg_actor.h" +#include "d/d_cc_d.h" #include "f_op/f_op_actor_mng.h" /** @@ -11,23 +13,51 @@ * @details * */ -class daObjL6Bm_c : public fopAc_ac_c { +class daObjL6Bm_c : public dBgS_MoveBgActor { public: + typedef void (daObjL6Bm_c::*actionFunc)(); + /* 80C7CE24 */ void initBaseMtx(); /* 80C7CE60 */ void setBaseMtx(); - /* 80C7CED4 */ void Create(); - /* 80C7CFD0 */ void CreateHeap(); - /* 80C7D2F8 */ void create1st(); - /* 80C7D3A4 */ void Execute(f32 (**)[3][4]); + /* 80C7CED4 */ int Create(); + /* 80C7CFD0 */ int CreateHeap(); + /* 80C7D2F8 */ cPhs__Step create1st(); + /* 80C7D3A4 */ int Execute(f32 (**)[3][4]); /* 80C7D4F4 */ void action(); /* 80C7D598 */ void actionWait(); /* 80C7D6CC */ void actionFindPlayer(); /* 80C7D894 */ void actionAttack(); - /* 80C7D898 */ void Draw(); - /* 80C7DABC */ void Delete(); + /* 80C7D898 */ int Draw(); + /* 80C7DABC */ int Delete(); + + void setAction(u8 action) { mAction = action; } + + u8 getSwBit() { return fopAcM_GetParamBit(this, 0, 8); } + u8 getArg0() { return fopAcM_GetParamBit(this, 0x10, 8); } + u8 getArg1() { return fopAcM_GetParamBit(this, 0x18, 8); } -private: - /* 0x568 */ u8 field_0x568[0x918 - 0x568]; + /* 0x5A0 */ request_of_phase_process_class mPhase; + /* 0x5A8 */ J3DModel* mBeamosModel; + /* 0x5AC */ dCcD_Stts mStts; + /* 0x5E8 */ dCcD_Cps field_0x5e8; + /* 0x72C */ cM3dGCpsS field_0x72c; + /* 0x748 */ dCcD_Sph field_0x748; + /* 0x880 */ J3DModel* mBeamEffectModel; + /* 0x884 */ mDoExt_btkAnm* mpBtkAnm; + /* 0x888 */ mDoExt_btkAnm* mpBtkAnm2; + /* 0x88C */ mDoExt_bckAnm* mBeamBck; + /* 0x890 */ u8 field_0x890; + /* 0x891 */ u8 field_0x891; + /* 0x892 */ s16 field_0x892; + /* 0x894 */ cXyz field_0x894; + /* 0x8A0 */ u8 field_0x8a0[0x8b2 - 0x8a0]; + /* 0x8B2 */ s16 field_0x8b2; + /* 0x8B4 */ s16 field_0x8b4; + /* 0x8B8 */ dBgS_ObjGndChk mObjGndChk; + /* 0x90C */ f32 field_0x90c; + /* 0x910 */ u8 mAction; + /* 0x911 */ u8 field_0x911; + /* 0x914 */ f32 field_0x914; }; STATIC_ASSERT(sizeof(daObjL6Bm_c) == 0x918); diff --git a/include/d/actor/d_a_obj_lv6bemos2.h b/include/d/actor/d_a_obj_lv6bemos2.h index c57dbb20c1..42ab95cece 100644 --- a/include/d/actor/d_a_obj_lv6bemos2.h +++ b/include/d/actor/d_a_obj_lv6bemos2.h @@ -1,6 +1,8 @@ #ifndef D_A_OBJ_LV6BEMOS2_H #define D_A_OBJ_LV6BEMOS2_H +#include "d/d_bg_s_movebg_actor.h" +#include "d/d_cc_d.h" #include "f_op/f_op_actor_mng.h" /** @@ -11,20 +13,23 @@ * @details * */ -class daObjLv6Bm_c : public fopAc_ac_c { +class daObjLv6Bm_c : public dBgS_MoveBgActor { public: + typedef void (daObjLv6Bm_c::*actionFunc)(); + typedef void (daObjLv6Bm_c::*effectFunc)(); + /* 80C7E30C */ void initBaseMtx(); /* 80C7E374 */ void setBaseMtx(); - /* 80C7E448 */ void Create(); - /* 80C7E764 */ void CreateHeap(); - /* 80C7EB7C */ void create1st(); - /* 80C7EC6C */ void Execute(f32 (**)[3][4]); + /* 80C7E448 */ int Create(); + /* 80C7E764 */ int CreateHeap(); + /* 80C7EB7C */ cPhs__Step create1st(); + /* 80C7EC6C */ int Execute(f32 (**)[3][4]); /* 80C7EE50 */ void action(); /* 80C7F2A4 */ void calcBeam(); - /* 80C7F904 */ void checkFindPlayer(); - /* 80C7FA54 */ void checkSearchPlayer(); - /* 80C7FBA4 */ void getSearchDistance(); - /* 80C7FBFC */ void getBeamSearchDistance(); + /* 80C7F904 */ int checkFindPlayer(); + /* 80C7FA54 */ int checkSearchPlayer(); + /* 80C7FBA4 */ f32 getSearchDistance(); + /* 80C7FBFC */ f32 getBeamSearchDistance(); /* 80C7FC54 */ void effect_proc(); /* 80C7FD8C */ void effectWait(); /* 80C7FD90 */ void initEffectSet0(); @@ -41,11 +46,89 @@ public: /* 80C81154 */ void actionDead(); /* 80C81428 */ void initActionEnd(); /* 80C814FC */ void actionEnd(); - /* 80C81500 */ void Draw(); - /* 80C816A8 */ void Delete(); + /* 80C81500 */ int Draw(); + /* 80C816A8 */ int Delete(); + + u8 getSwNo() { return fopAcM_GetParamBit(this, 0, 8); } + u8 getSwNo2() { return fopAcM_GetParamBit(this, 8, 8); } + u8 getSwNo3() { return fopAcM_GetParamBit(this, 16, 8); } + + s16 getHeadJoint() { return mJoints[0]; } + s16 getBigGearJoint() { return mJoints[1]; } + s16 getSmallGear0Joint() { return mJoints[2]; } + s16 getSmallGear1Joint() { return mJoints[3]; } + s16 getSmallGear2Joint() { return mJoints[4]; } + + u8 getSearchDist() { return fopAcM_GetParamBit(this, 0x1C, 4); } + u16 getBeamSearchDist() { return field_0xa32 & 15; } + + BOOL checkLockOnCamera() { return (field_0xa32 & 0x8000) >> 15; } -private: - /* 0x568 */ u8 field_0x568[0xabc - 0x568]; + /* 0x568 */ request_of_phase_process_class mPhase; + /* 0x5A8 */ J3DModel* mBeamosModel; + /* 0x5AC */ mDoExt_brkAnm* mpBrkAnm; + /* 0x5B0 */ mDoExt_bckAnm* mpBckAnm; + /* 0x5B4 */ J3DModel* mBeamEffectModel; + /* 0x5B8 */ mDoExt_btkAnm* mpBtkAnm; + /* 0x5BC */ mDoExt_btkAnm* mpBtkAnm2; + /* 0x5C0 */ mDoExt_bckAnm* mpBckAnm2; + /* 0x5C4 */ dCcD_Stts mStts; + /* 0x600 */ dCcD_Sph field_0x600; + /* 0x738 */ dCcD_Cps field_0x738; + /* 0x87C */ dCcD_Cyl field_0x87c; + /* 0x9B8 */ s16 mJoints[5]; + /* 0x9C2 */ s16 field_0x9c2; + /* 0x9C4 */ s16 field_0x9c4; + /* 0x9C6 */ s16 field_0x9c6; + /* 0x9C8 */ s16 field_0x9c8; + /* 0x9CA */ s16 field_0x9ca; + /* 0x9CC */ s16 field_0x9cc; + /* 0x9CE */ s16 field_0x9ce; + /* 0x9D0 */ s16 field_0x9d0; + /* 0x9D2 */ s16 field_0x9d2; + /* 0x9D4 */ s16 field_0x9d4; + /* 0x9D6 */ s16 field_0x9d6; + /* 0x9D8 */ s16 field_0x9d8; + /* 0x9DA */ s16 field_0x9da; + /* 0x9DC */ s16 field_0x9dc; + /* 0x9DE */ s16 field_0x9de; + /* 0x9E0 */ J3DMaterial* mEyeMaterial; + /* 0x9E4 */ cXyz field_0x9e4; + /* 0x9F0 */ csXyz field_0x9f0; + /* 0x9F8 */ cXyz field_0x9f8; + /* 0xA04 */ u8 field_0xa04[0xa0c - 0xa04]; + /* 0xA0C */ f32 field_0xa0c; + /* 0xA10 */ u8 field_0xa10; + /* 0xA11 */ u8 field_0xa11; + /* 0xA12 */ u8 field_0xa12; + /* 0xA13 */ u8 field_0xa13; + /* 0xA14 */ s8 field_0xa14; + /* 0xA15 */ u8 field_0xa15; + /* 0xA16 */ u8 mMode; + /* 0xA17 */ u8 field_0xa17; + /* 0xA18 */ u8 field_0xa18; + /* 0xA19 */ s8 field_0xa19; + /* 0xA1A */ u8 field_0xa1a; + /* 0xA1B */ u8 field_0xa1b; + /* 0xA1C */ u8 field_0xa1c; + /* 0xA20 */ int field_0xa20; + /* 0XA24 */ JPABaseEmitter* field_0xa24; + /* 0xA28 */ f32 field_0xa28; + /* 0xA2C */ f32 field_0xa2c; + /* 0xA30 */ u16 field_0xa30; + /* 0xA32 */ u16 field_0xa32; + /* 0xA34 */ s16 field_0xa34; + /* 0xA36 */ u8 field_0xa36; + /* 0xA37 */ u8 field_0xa37; + /* 0xA38 */ JPABaseEmitter* field_0xa38[2]; + /* 0xA40 */ JPABaseEmitter* field_0xa40[4]; + /* 0xA50 */ JPABaseEmitter* field_0xa50; + /* 0xA54 */ JPABaseEmitter* field_0xa54; + /* 0xA58 */ cXyz field_0xa58; + /* 0xA64 */ cXyz field_0xa64; + /* 0xA70 */ cXyz field_0xa70; + /* 0xA7C */ Z2SoundObjSimple field_0xa7c; + /* 0xA9C */ Z2SoundObjSimple field_0xa9c; }; STATIC_ASSERT(sizeof(daObjLv6Bm_c) == 0xabc); diff --git a/include/f_op/f_op_actor_mng.h b/include/f_op/f_op_actor_mng.h index bb8508d625..ea2854dee6 100644 --- a/include/f_op/f_op_actor_mng.h +++ b/include/f_op/f_op_actor_mng.h @@ -835,6 +835,11 @@ public: getTriPla(&poly); return cBgW_CheckBWall(poly.mNormal.y); } + static bool checkGroundHit() { + cM3dGPla poly; + getTriPla(&poly); + return cBgW_CheckBGround(poly.mNormal.y); + } static dBgS_ObjLinChk mLineCheck; }; |
