11#ifndef D_A_OBJ_CRVGATE_H
22#define D_A_OBJ_CRVGATE_H
33
4- #include " f_op/f_op_actor_mng.h"
4+ #include " d/d_bg_s_acch.h"
5+ #include " d/d_bg_s_movebg_actor.h"
6+ #include " d/d_cc_d.h"
57
68/* *
79 * @ingroup actors-objects
810 * @class daObjCRVGATE_c
911 * @brief Caravan Gate
1012 *
11- * @details
12- *
13+ * @details Caravan Gate at Arbiter's Grounds Exterior at King Bulblin's Tent.
14+ * The gate consists of two door objects that work as a pair. One door references
15+ * the other through the mpDoorPair pointer. The door will move when the player
16+ * touches it.
17+ * At the end of the fight, the player rides the bullbo and crashes into the door,
18+ * destroying it.
1319 */
14- class daObjCRVGATE_c : public fopAc_ac_c {
20+ class daObjCRVGATE_c : public dBgS_MoveBgActor {
1521public:
1622 /* 80BD0398 */ void initCcCylinder ();
1723 /* 80BD0500 */ void setCcCylinder ();
18- /* 80BD069C */ void checkOpen ();
24+ /* 80BD069C */ int checkOpen ();
1925 /* 80BD0880 */ void actionStartEvent ();
2026 /* 80BD0978 */ void actionWaitEvent ();
2127 /* 80BD0A64 */ void Demo_Set ();
2228 /* 80BD0B7C */ void SetOpen ();
2329 /* 80BD0B88 */ void actionDemoEvent ();
2430 /* 80BD0D28 */ void event_proc_call ();
25- /* 80BD0D90 */ void CheckVec ();
31+ /* 80BD0D90 */ int CheckVec ();
2632 /* 80BD0E1C */ void KeyVib ();
2733 /* 80BD0F9C */ void DoorVib ();
2834 /* 80BD10C0 */ void VibStop ();
@@ -34,19 +40,61 @@ class daObjCRVGATE_c : public fopAc_ac_c {
3440 /* 80BD2338 */ void B_CloseAction ();
3541 /* 80BD245C */ void SetB_Close ();
3642 /* 80BD2528 */ void setBaseMtx ();
37- /* 80BD2670 */ void CreateHeap ();
43+ /* 80BD2670 */ int CreateHeap ();
3844 /* 80BD2758 */ void SetDoor ();
39- /* 80BD28C0 */ void create ();
40- /* 80BD2E88 */ void Create ();
41- /* 80BD2ECC */ void Execute (f32 (**)[3][4]);
42- /* 80BD2FB8 */ void Draw ();
43- /* 80BD3074 */ void Delete ();
45+ /* 80BD28C0 */ int create ();
46+ /* 80BD2E88 */ int Create ();
47+ /* 80BD2ECC */ int Execute (f32 (**)[3][4]);
48+ /* 80BD2FB8 */ int Draw ();
49+ /* 80BD3074 */ int Delete ();
4450
4551private:
46- /* 0x568 */ u8 field_0x568[0xde4 - 0x568 ];
52+ /* 0x5A0 */ s32 mEventID ;
53+ /* 0x5A4 */ bool mFlagGateClosed ;
54+ /* 0x5A5 */ bool field_0x5a5;
55+ /* 0x5A6 */ u8 field_0x5a6[2 ];
56+ /* 0x5A8 */ s16 mDoorTargetAngle ;
57+ /* 0x5AA */ bool mFlagDemoEventPlay ;
58+ /* 0x5AB */ u8 mDestructionCount ;
59+ /* 0x5AC */ u8 mKeyParam ;
60+ /* 0x5AD */ bool mEventFlag ;
61+ /* 0x5AE */ bool mFlagDoorStuck ;
62+ /* 0x5AF */ u8 mStatus ;
63+ /* 0x5B0 */ bool mDoorPairLoaded ;
64+ /* 0x5B1 */ bool mFlagDoorMove ;
65+ /* 0x5B4 */ daObjCRVGATE_c* mpDoorPair;
66+ /* 0x5B8 */ f32 mFovY ;
67+ /* 0x5BC */ s16 field_0x5bc;
68+ /* 0x5C0 */ cXyz mCamEye ;
69+ /* 0x5CC */ cXyz mCamCenter ;
70+ /* 0x5D8 */ csXyz mDoorOpenAngle ;
71+ /* 0x5E0 */ cXyz mPos ;
72+ /* 0x5EC */ cXyz mPosAccel ;
73+ /* 0x5F8 */ cXyz mPosTmp ;
74+ /* 0x604 */ u8 field_0x604[6 ];
75+ /* 0x60A */ csXyz mMoveAngle ;
76+ /* 0x610 */ csXyz mDoorVib ;
77+ /* 0x618 */ f32 mMinHeight ;
78+ /* 0x61C */ cXyz mXyzSph [3 ];
79+ /* 0x640 */ fpc_ProcID mDoorPairProcID ;
80+ /* 0x644 */ s16 mDoorY ;
81+ /* 0x646 */ s16 mDoorAngle ;
82+ /* 0x648 */ s16 mDoorSwingTargetAngle ;
83+ /* 0x64A */ s16 mDoorStep ;
84+ /* 0x64C */ Z2SoundObjSimple mSound ;
85+ /* 0x66C */ s16 field_0x66c;
86+ /* 0x66E */ u8 field_0x66e[6 ];
87+ /* 0x674 */ J3DModel* mpModelGate;
88+ /* 0x678 */ J3DModel* mpModelKey;
89+ /* 0x67C */ request_of_phase_process_class mPhaseReq ;
90+ /* 0x684 */ dBgS_AcchCir mAcchCir ;
91+ /* 0x6C4 */ dBgS_ObjAcch mAcch ;
92+ /* 0x89C */ dCcD_Stts mStts ;
93+ /* 0x8D8 */ dCcD_Sph mSph [3 ];
94+ /* 0xC80 */ dCcD_Cyl mCyl ;
95+ /* 0xDBC */ u8 field_0xdbc[40 ];
4796};
4897
4998STATIC_ASSERT (sizeof (daObjCRVGATE_c) == 0xde4);
5099
51-
52100#endif /* D_A_OBJ_CRVGATE_H */
0 commit comments