diff options
| author | Hyenate <natebouchat@gmail.com> | 2025-05-30 06:43:59 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-05-30 13:43:59 +0300 |
| commit | 6fd5560738b856d59575f8d26f1d02b64def0d76 (patch) | |
| tree | 9c5185716034e09963d8c441ab9f21915572e14d /include | |
| parent | e8e36445ba150456fc590c5e1a727e6c4dabc280 (diff) | |
d_a_obj_magne_arm Matching (#2462)
* d_a_obj_magne_arm Matching
* Formatting
Diffstat (limited to 'include')
| -rw-r--r-- | include/d/actor/d_a_obj_magne_arm.h | 104 | ||||
| -rw-r--r-- | include/d/actor/d_a_obj_mhole.h | 6 |
2 files changed, 95 insertions, 15 deletions
diff --git a/include/d/actor/d_a_obj_magne_arm.h b/include/d/actor/d_a_obj_magne_arm.h index 2025dc9577..8abc6e529c 100644 --- a/include/d/actor/d_a_obj_magne_arm.h +++ b/include/d/actor/d_a_obj_magne_arm.h @@ -1,6 +1,9 @@ #ifndef D_A_OBJ_MAGNE_ARM_H #define D_A_OBJ_MAGNE_ARM_H +#include "d/d_bg_s_acch.h" +#include "d/d_bg_s_movebg_actor.h" +#include "d/d_cc_d.h" #include "f_op/f_op_actor_mng.h" /** @@ -8,11 +11,35 @@ * @class daObjMarm_c * @brief Magnetic Arm * - * @details - * + * @details Magnetic Arm Cranes in Goron Mines. + * The model is split into 6 parts labeled A through F. + * A Parts is the unmoving crane base. + * B Parts is the vertical gear moving the crane. + * C Parts is the main crane body. + * D Parts are the vertical gears at the top where the crane bends. + * E Parts is the wheel at the end of the crane. + * F Parts is the magnetic crane head accessible to Link. + * The ropes connecting the crane head are identified separately. */ -class daObjMarm_c : public fopAc_ac_c { + +class daObjMarm_c : public dBgS_MoveBgActor { public: + enum MOVETYPE_e { + MOVETYPE_A_e, + MOVETYPE_B_e, + MOVETYPE_C_e, + MOVETYPE_D_e + }; + + enum MODE_e { + MODE_WAIT_e, + MODE_MHOLE_ON_e, + MODE_LIFT_UP_e, + MODE_LIFT_DOWN_e, + MODE_ROTATE_e, + MODE_END_e + }; + /* 8058F358 */ void getBpartsOffset(cXyz*); /* 8058F3D4 */ void getDpartsOffset(cXyz*); /* 8058F46C */ void getEpartsOffset(cXyz*); @@ -20,13 +47,13 @@ public: /* 8058F610 */ void getRopeStartPos(cXyz*); /* 8058F6B4 */ void initBaseMtx(); /* 8058F77C */ void setBaseMtx(); - /* 8058FA50 */ void Create(); - /* 8058FCF8 */ void CreateHeap(); - /* 80590244 */ void phase_0(); - /* 805902D8 */ void phase_1(); - /* 80590364 */ void phase_2(); - /* 80590460 */ void create1st(); - /* 80590504 */ void Execute(f32 (**)[3][4]); + /* 8058FA50 */ int Create(); + /* 8058FCF8 */ int CreateHeap(); + /* 80590244 */ cPhs__Step phase_0(); + /* 805902D8 */ cPhs__Step phase_1(); + /* 80590364 */ cPhs__Step phase_2(); + /* 80590460 */ int create1st(); + /* 80590504 */ int Execute(Mtx**); /* 80590818 */ void action(); /* 80590B7C */ void init_typeA_modeWait(); /* 80590B8C */ void typeA_modeWait(); @@ -78,12 +105,61 @@ public: /* 80591F50 */ void seStartLevel_UP(); /* 80591FB8 */ void seStartLevel_DOWN(); /* 80592020 */ void seStart_SWING(); - /* 80592088 */ void Draw(); + /* 80592088 */ int Draw(); /* 805923C4 */ void debugDraw(); - /* 805923C8 */ void Delete(); + /* 805923C8 */ int Delete(); + + u32 getMoveType() { return fopAcM_GetParamBit(this, 8, 4); } + u32 getSwNo() { return fopAcM_GetParamBit(this, 0, 8); } -private: - /* 0x568 */ u8 field_0x568[0xa6c - 0x568]; + /* 0x5A0 */ request_of_phase_process_class mPhase; + /* 0x5A8 */ J3DModel* mpModel[6]; + /* 0x5C0 */ mDoExt_brkAnm* mpBrkAnm; + /* 0x5C4 */ mDoExt_btkAnm* mpBtkAnm; + /* 0x5C8 */ JPABaseEmitter* mpEmitter; + /* 0x5CC */ dBgW* mpBgW1; + /* 0x5D0 */ Mtx mBgMtx1; + /* 0x600 */ Mtx mBgMtx2; + /* 0x630 */ dBgW* mpBgW2; + /* 0x634 */ Mtx mBgMtx3; + /* 0x664 */ dBgS_ObjAcch mAcch; + /* 0x83C */ dBgS_AcchCir mAcchCir; + /* 0x87C */ dCcD_Stts unused_0x87C; // Declaration needed to generate vtables + /* 0x8B8 */ dCcD_Cyl unused_0x8B8; // Declaration needed to generate vtables + /* 0x9F4 */ s32 mRotOffsetSwing; // Stop animation swing rotation + /* 0x9F8 */ u8 unused_0x9F8[0x4]; + /* 0x9FC */ s16 mBPartsXRot; + /* 0x9FE */ s16 mCPartsYRot; + /* 0xA00 */ s16 mDPartsXRot; + /* 0xA02 */ s16 mEPartsXRot; + /* 0xA04 */ f32 mLiftTotal; + /* 0xA08 */ u8 mIsYRotForward; + /* 0xA09 */ s8 mYRotDirection; + /* 0xA0A */ s16 mRotationAngle; + /* 0xA0C */ s16 mLiftRotation; + /* 0xA10 */ s32 mRotationTotal; + /* 0xA14 */ u8 mMode; + /* 0xA15 */ u8 mMoveType; + /* 0xA16 */ u8 unused_0xA16; + /* 0xA17 */ u8 mStopTimer; + /* 0xA18 */ fpc_ProcID mID; + /* 0xA1C */ u8 mPhaseIndex; + /* 0xA1D */ u8 mPlayerRide; + /* 0xA20 */ mDoExt_3DlineMat1_c* mpRope1; + /* 0xA24 */ mDoExt_3DlineMat1_c* mpRope2; + /* 0xA28 */ u8 field_0xA28; // mpRope1 Segment Count? + /* 0xA29 */ u8 field_0xA29; // mpRope2 Segment Count? + /* 0xA2C */ f32 mRotOffsetForce; // Swing Force applied during stop animation + /* 0xA30 */ s16 mYRotOffset; // Y rot Offset on stop animation + /* 0xA32 */ s16 mFPartsZRot; // F Parts Z rot on stop animation + /* 0xA34 */ u8 unused_0xA34[0x4]; + /* 0xA38 */ s16 mZRotOffset; + /* 0xA3C */ f32 mZRotForce; // Swing Force applied during stop animation + /* 0xA40 */ s16 mZRotSwing; // Stop animation swing rotation + /* 0xA44 */ Vec mSeMarmPos; + /* 0xA50 */ Vec mSeMarmLiftPos; + /* 0xA5C */ Vec mSeMarmSwingPos; + /* 0xA68 */ u32 mShadowKey; }; STATIC_ASSERT(sizeof(daObjMarm_c) == 0xa6c); diff --git a/include/d/actor/d_a_obj_mhole.h b/include/d/actor/d_a_obj_mhole.h index 6359627d9d..db1bff3660 100644 --- a/include/d/actor/d_a_obj_mhole.h +++ b/include/d/actor/d_a_obj_mhole.h @@ -25,8 +25,12 @@ public: /* 80C93ADC */ void draw(); /* 80C93CAC */ void _delete(); + void setOn() { mIsOn = TRUE; } + private: - /* 0x568 */ u8 field_0x568[0x734 - 0x568]; + /* 0x568 */ u8 field_0x568[0x700 - 0x568]; + /* 0x700 */ bool mIsOn; + /* 0x701 */ u8 field_0x701[0x734 - 0x701]; }; STATIC_ASSERT(sizeof(daObjMHole_c) == 0x734); |
