11#ifndef D_A_OBJ_BARREL_H
22#define D_A_OBJ_BARREL_H
33
4+ #include " d/a/d_a_base.h"
45#include " d/a/obj/d_a_obj_base.h"
6+ #include " d/col/bg/d_bg_s_acch.h"
7+ #include " d/col/bg/d_bg_w.h"
8+ #include " d/col/c/c_bg_s_poly_info.h"
9+ #include " d/col/cc/d_cc_d.h"
10+ #include " d/d_shadow.h"
11+ #include " d/flag/sceneflag_manager.h"
12+ #include " m/m3d/m_smdl.h"
13+ #include " m/m_angle.h"
14+ #include " m/m_quat.h"
15+ #include " m/m_vec.h"
16+ #include " nw4r/g3d/res/g3d_resfile.h"
517#include " s/s_State.hpp"
6- #include " s/s_StateMgr.hpp"
18+ #include " toBeSorted/d_emitter.h"
19+ #include " toBeSorted/time_area_mgr.h"
20+
21+ class dAcNpcCeLady_c ;
22+ class dAcNpcCeFriend_c ;
723
824class dAcOBarrel_c : public dAcObjBase_c {
925public:
26+ enum Type {
27+ Normal,
28+ Bomb,
29+ Type2,
30+ Kraken,
31+ };
32+
1033 dAcOBarrel_c () : mStateMgr (*this , sStateID ::null) {}
1134 virtual ~dAcOBarrel_c () {}
1235
36+ virtual int doDelete () override ;
37+ virtual int draw () override ;
38+ virtual bool createHeap () override ;
39+ virtual int actorCreate () override ;
40+ virtual int actorPostCreate () override ;
41+ virtual int actorExecute () override ;
42+
43+ virtual void registerInEvent () override ;
44+ virtual void unkVirtFunc_0x6C () override ;
45+ virtual void doInteraction (s32) override ;
46+
47+ /* * fn_293_30D0 */
48+ void fn_293_30D0 ();
49+
50+ /* * fn_293_31B0 */
51+ void fn_293_31B0 ();
52+
53+ /* * fn_293_3560 */
54+ void fn_293_3560 ();
55+
56+ /* * fn_293_37B0 */
57+ void fn_293_37B0 ();
58+
59+ /* * fn_293_3A20 */
60+ void updateMtx ();
61+
62+ /* * fn_293_3DB0 */
63+ void fn_293_3DB0 ();
64+
65+ /* * Break Barrel */
66+ void fn_293_4200 ();
67+
68+ /* * Check to see if the Barrel should break */
69+ bool fn_293_45A0 ();
70+
71+ /* * fn_293_4A90 */
72+ bool fn_293_4A90 (const mAng &);
73+
74+ /* * Checks if On Lava or Sink Sand */
75+ bool fn_293_4BC0 ();
76+
77+ /* * Checks if On Lava */
78+ bool fn_293_4C20 () const ;
79+
80+ /* * fn_293_4C60 */
81+ bool fn_293_4C60 ();
82+
83+ /* * Check to see if its below some range */
84+ bool fn_293_4CE0 () const ;
85+
86+ /* * Check to see if its being moved. (like Conveyor) */
87+ bool fn_293_4D00 ();
88+
89+ /* * Check to see if it is being moved upwards? */
90+ bool fn_293_4ED0 () const ;
91+
92+ /* * fn_293_4F80 */
93+ bool fn_293_4F80 ();
94+
95+ /* * fn_293_50B0 */
96+ bool fn_293_50B0 ();
97+
98+ /* * Perform Timeslip */
99+ void fn_293_5150 ();
100+
101+ /* * fn_293_5360 */
102+ void fn_293_5360 ();
103+
104+ /* * fn_293_5440 */
105+ void fn_293_5440 ();
106+
107+ /* * fn_293_54D0 */
108+ void fn_293_54D0 ();
109+
110+ /* * fn_293_5850 */
111+ void fn_293_5850 (f32 *, bool );
112+
113+ /* * Set Ground Normal */
114+ void fn_293_58C0 ();
115+
116+ /* * fn_293_5910 */
117+ void fn_293_5910 ();
118+
13119 STATE_FUNC_DECLARE (dAcOBarrel_c, Wait);
14120 STATE_FUNC_DECLARE (dAcOBarrel_c, Grab);
15121 STATE_FUNC_DECLARE (dAcOBarrel_c, GrabUp);
@@ -21,8 +127,95 @@ class dAcOBarrel_c : public dAcObjBase_c {
21127 STATE_FUNC_DECLARE (dAcOBarrel_c, KrakenBorn);
22128 STATE_FUNC_DECLARE (dAcOBarrel_c, Rebirth);
23129
130+ public:
131+ bool isType_0 () const {
132+ return mType == Type2 || mType == Kraken;
133+ }
134+
135+ bool isTimeshiftableType () const {
136+ return mType & 1 ;
137+ }
138+
139+ bool field0x17Check () const {
140+ return field_0xE17 == 0 || field_0xE17 == 1 ;
141+ }
142+ bool isType_1 () const {
143+ return mType & 2 ;
144+ }
145+
146+ bool checkFlag_0xE18 () {
147+ return field_0xE18 < 0xFF && !SceneflagManager::sInstance ->checkBoolFlag (mRoomID , field_0xE18);
148+ }
149+
24150private:
25- /* 0x??? */ STATE_MGR_DECLARE(dAcOBarrel_c);
151+ /* 0x330 */ nw4r::g3d::ResFile mResFile ;
152+ /* 0x334 */ m3d::smdl_c mMdl ;
153+ /* 0x350 */ dShadowCircle_c mShadow ;
154+ /* 0x358 */ dBgS_AcchCir mAcchCir ;
155+ /* 0x3B4 */ dBgS_ObjAcch mObjAcch ;
156+ /* 0x764 */ cBgS_PolyInfo mPolyInfo ;
157+ /* 0x790 */ dBgW mBgW ;
158+ /* 0x9A0 */ dCcD_Cyl mCyl ;
159+ /* 0xAF0 */ dCcD_Sph mSph ;
160+ /* 0xC40 */ STATE_MGR_DECLARE(dAcOBarrel_c);
161+ /* 0xC7C */ TimeAreaStruct mTimeArea ;
162+ /* 0xC88 */ dAcRef_c<dAcNpcCeLady_c> mCeLady ;
163+ /* 0xC94 */ dAcRef_c<dAcNpcCeFriend_c> mCeFriend ;
164+ /* 0xCA0 */ dEmitter_c mEmitter0 ;
165+ /* 0xCD4 */ dEmitter_c mEmitter1 ;
166+ /* 0xD08 */ dWaterEffect_c mWaterEffect ;
167+ /* 0xD50 */ mQuat_c quat_0xD50;
168+ /* 0xD60 */ mQuat_c quat_0xD60;
169+ /* 0xD70 */ mQuat_c quat_0xD70;
170+ /* 0xD80 */ mQuat_c quat_0xD80;
171+ /* 0xD90 */ mQuat_c quat_0xD90;
172+ /* 0xDA0 */ mQuat_c quat_0xDA0;
173+ /* 0xDB0 */ mVec3_c field_0xDB0; // < player direction vector
174+ /* 0xDBC */ mVec3_c field_0xDBC;
175+ /* 0xDC8 */ mVec3_c field_0xDC8;
176+ /* 0xDD4 */ f32 field_0xDD4;
177+ /* 0xDD8 */ f32 field_0xDD8;
178+ /* 0xDDC */ f32 field_0xDDC;
179+ /* 0xDE0 */ f32 field_0xDE0;
180+ /* 0xDE4 */ mAng3_c field_0xDE4;
181+ /* 0xDEA */ mAng field_0xDEA;
182+ /* 0xDEC */ mAng field_0xDEC;
183+ /* 0xDEE */ mAng field_0xDEE;
184+ /* 0xDF0 */ mAng field_0xDF0;
185+ /* 0xDF2 */ mAng field_0xDF2;
186+ /* 0xDF4 */ mAng field_0xDF4;
187+ /* 0xDF6 */ mAng field_0xDF6;
188+ /* 0xDF8 */ mAng field_0xDF8;
189+ /* 0xDFA */ mAng field_0xDFA;
190+ /* 0xDFC */ u16 field_0xDFC;
191+ /* 0xDFE */ u16 field_0xDFE;
192+ /* 0xE00 */ bool field_0xE00; // < Can Damage ?
193+ /* 0xE01 */ bool field_0xE01;
194+ /* 0xE02 */ bool field_0xE02;
195+ /* 0xE03 */ bool field_0xE03;
196+ /* 0xE04 */ bool field_0xE04;
197+ /* 0xE05 */ bool field_0xE05;
198+ /* 0xE06 */ bool field_0xE06;
199+ /* 0xE07 */ bool field_0xE07;
200+ /* 0xE08 */ bool field_0xE08;
201+ /* 0xE09 */ bool field_0xE09; // < for OBJ_VSD Present
202+ /* 0xE0A */ bool field_0xE0A;
203+ /* 0xE0B */ bool field_0xE0B;
204+ /* 0xE0C */ bool field_0xE0C; // < Timeslip Active
205+ /* 0xE0D */ bool field_0xE0D; // < Timeslip_rev Active
206+ /* 0xE0E */ bool field_0xE0E;
207+ /* 0xE0F */ u8 mType ;
208+ /* 0xE10 */ u8 field_0xE10;
209+ /* 0xE11 */ u8 field_0xE11;
210+ /* 0xE12 */ u8 field_0xE12;
211+ /* 0xE13 */ u8 field_0xE13;
212+ /* 0xE14 */ u8 field_0xE14;
213+ /* 0xE15 */ u8 field_0xE15;
214+ /* 0xE16 */ u8 field_0xE16;
215+ /* 0xE17 */ u8 field_0xE17;
216+ /* 0xE18 */ u8 field_0xE18;
217+ /* 0xE19 */ u8 mBrokenFlag ;
218+ /* 0xE1C */ s32 mDropItem ;
26219};
27220
28221#endif
0 commit comments