55#include " d/d_particle_copoly.h"
66#include " f_op/f_op_actor_mng.h"
77
8- class daBoomerang_sight_c {
8+ #define BOOMERANG_LOCK_MAX 5
9+
10+ class daBoomerang_sight_c : public dDlst_base_c {
911public:
1012 /* 8049E0B8 */ int createHeap ();
1113 /* 8049E36C */ void initialize ();
1214 /* 8049EB64 */ int playAnime (int , int );
1315 /* 8049EDA8 */ void initFrame (int );
1416 /* 8049EDE8 */ void copyNumData (int );
1517 /* 8049EEC8 */ void setSight (cXyz const *, int );
16- /* 8049EF60 */ void draw ();
1718
18- /* 804A278C */ virtual ~daBoomerang_sight_c ();
19+ /* 8049EF60 */ virtual void draw ();
20+ /* 804A278C */ virtual ~daBoomerang_sight_c () {}
1921
2022 u8 getReserve () const { return mReserve ; }
21- u8 getAlpha (int i_index) { return mAlpha [i_index]; }
22- void offRedSight () { mRedSight = false ; }
23+ u8 getAlpha (int i_index) { return m_alpha [i_index]; }
24+ void offRedSight () { m_redSight = false ; }
2325 void onReserve () { mReserve = 1 ; }
2426 void offReserve () { mReserve = 0 ; }
2527
2628private:
27- /* 0x04 */ J2DScreen* field_0x4 ;
28- /* 0x08 */ J2DPane* field_0x8 ;
29- /* 0x0C */ J2DPane* field_0xc ;
30- /* 0x10 */ J2DPane* field_0x10 ;
31- /* 0x14 */ J2DPane* field_0x14 ;
32- /* 0x18 */ J2DAnmTevRegKey* field_0x18 ;
33- /* 0x1C */ J2DAnmTevRegKey* field_0x1c ;
34- /* 0x20 */ J2DScreen* field_0x20 ;
35- /* 0x24 */ J2DPane* field_0x24 ;
36- /* 0x28 */ J2DPane* field_0x28 ;
37- /* 0x2C */ J2DPane* field_0x2c ;
38- /* 0x30 */ J2DPane* field_0x30 ;
39- /* 0x34 */ J2DAnmTevRegKey* field_0x34 ;
40- /* 0x38 */ J2DAnmTevRegKey* field_0x38 ;
41- /* 0x3C */ J2DScreen* field_0x3c ;
42- /* 0x40 */ J2DPane* field_0x40 ;
43- /* 0x44 */ J2DPane* field_0x44 ;
44- /* 0x48 */ J2DPane* field_0x48 ;
45- /* 0x4C */ J2DPane* field_0x4c ;
46- /* 0x50 */ J2DAnmTevRegKey* field_0x50 ;
47- /* 0x54 */ J2DAnmTevRegKey* field_0x54 ;
48- /* 0x58 */ J2DAnmColor* field_0x58 ;
49- /* 0x5C */ J2DAnmTransform* field_0x5c ;
50- /* 0x60 */ bool mRedSight ;
29+ /* 0x04 */ J2DScreen* m_cursorYellowScrn ;
30+ /* 0x08 */ J2DPane* m_cursorYellowAllPane ;
31+ /* 0x0C */ J2DPane* m_cursorYellow0Pane ;
32+ /* 0x10 */ J2DPane* m_cursorYellow1Pane ;
33+ /* 0x14 */ J2DPane* m_cursorYellow2Pane ;
34+ /* 0x18 */ J2DAnmTevRegKey* m_cursorYellow2Brk ;
35+ /* 0x1C */ J2DAnmTevRegKey* m_cursorYellowBrk ;
36+ /* 0x20 */ J2DScreen* m_cursorRedScrn ;
37+ /* 0x24 */ J2DPane* m_cursorRedAllPane ;
38+ /* 0x28 */ J2DPane* m_cursorRed0Pane ;
39+ /* 0x2C */ J2DPane* m_cursorRed1Pane ;
40+ /* 0x30 */ J2DPane* m_cursorRed2Pane ;
41+ /* 0x34 */ J2DAnmTevRegKey* m_cursorRed2Brk ;
42+ /* 0x38 */ J2DAnmTevRegKey* m_cursorRedBrk ;
43+ /* 0x3C */ J2DScreen* m_cursorOrangeScrn ;
44+ /* 0x40 */ J2DPane* m_cursorOrangeAllPane ;
45+ /* 0x44 */ J2DPane* m_cursorOrange0Pane ;
46+ /* 0x48 */ J2DPane* m_cursorOrange1Pane ;
47+ /* 0x4C */ J2DPane* m_cursorOrange2Pane ;
48+ /* 0x50 */ J2DAnmTevRegKey* m_cursorOrange2Brk ;
49+ /* 0x54 */ J2DAnmTevRegKey* m_cursorOrangeBrk ;
50+ /* 0x58 */ J2DAnmColor* m_cursorYellowBpk ;
51+ /* 0x5C */ J2DAnmTransform* m_cursorYellowBck ;
52+ /* 0x60 */ bool m_redSight ;
5153 /* 0x61 */ u8 mReserve ;
52- /* 0x62 */ u8 mAlpha [6 ];
53- /* 0x68 */ f32 field_0x68 [6 ];
54- /* 0x80 */ f32 field_0x80 [6 ];
54+ /* 0x62 */ u8 m_alpha [6 ];
55+ /* 0x68 */ f32 m_proj_posX [6 ];
56+ /* 0x80 */ f32 m_proj_posY [6 ];
5557 /* 0x98 */ f32 field_0x98[6 ];
5658 /* 0xB0 */ f32 field_0xb0[6 ];
57- /* 0xC8 */ cXyz field_0xc8 [6 ];
59+ /* 0xC8 */ cXyz m_pos [6 ];
5860}; // Size: 0x110
5961
6062class daAlink_c ;
@@ -70,10 +72,16 @@ class daAlink_c;
7072class daBoomerang_c : public fopAc_ac_c {
7173public:
7274 enum daBoomerang_FLG0 {
73- /* 0x001 */ FLG0_1 = 0x001 ,
74- /* 0x004 */ FLG0_UNK = 0x004 ,
75- /* 0x010 */ FLG0_10 = 0x010 ,
76- /* 0x200 */ FLG0_0x200 = 0x200 ,
75+ /* 0x001 */ FLG0_1 = 0x1 ,
76+ /* 0x002 */ FLG0_2 = 0x2 ,
77+ /* 0x004 */ FLG0_4 = 0x4 ,
78+ /* 0x010 */ FLG0_10 = 0x10 ,
79+ /* 0x020 */ FLG0_20 = 0x20 ,
80+ /* 0x040 */ FLG0_40 = 0x40 ,
81+ /* 0x080 */ FLG0_80 = 0x80 ,
82+ /* 0x100 */ FLG0_100 = 0x100 ,
83+ /* 0x200 */ FLG0_200 = 0x200 ,
84+ /* 0x400 */ FLG0_400 = 0x400 ,
7785 /* 0x800 */ FLG0_LOCK_DIST_CANCEL = 0x800 ,
7886 /* 0x080 */ WIND_CATCH = 0x80 ,
7987 };
@@ -95,85 +103,86 @@ class daBoomerang_c : public fopAc_ac_c {
95103 /* 8049FE6C */ void checkBgHit (cXyz*, cXyz*);
96104 /* 804A006C */ JPABaseEmitter* setEffectTraceMatrix (u32 *, u16 );
97105 /* 804A012C */ void setEffect ();
98- /* 804A0874 */ void procWait ();
99- /* 804A0F0C */ void procMove ();
106+ /* 804A0874 */ int procWait ();
107+ /* 804A0F0C */ int procMove ();
100108 /* 804A1814 */ int execute ();
101109 /* 804A1BF4 */ ~daBoomerang_c ();
102110 /* 804A1EE4 */ int createHeap ();
103111 /* 804A2084 */ int create ();
104112 /* 804A230C */ daBoomerang_c();
105113
106- u32 checkStateFlg0 (daBoomerang_FLG0 i_flag) { return mStateFlg0 & i_flag; }
107- void onStateFlg0 (daBoomerang_FLG0 flag) { mStateFlg0 |= flag; }
114+ u32 checkStateFlg0 (daBoomerang_FLG0 i_flag) const { return m_stateFlg0 & i_flag; }
115+ void onStateFlg0 (daBoomerang_FLG0 flag) { m_stateFlg0 |= flag; }
116+ void offStateFlg0 (daBoomerang_FLG0 flag) { m_stateFlg0 &= ~flag; }
108117 void onWindCatch () { onStateFlg0 (WIND_CATCH); }
109- bool checkForceDelete () const { return mForceDelete ; }
110- void onForceDelete () { mForceDelete = true ; }
118+ bool checkForceDelete () const { return m_forceDelete ; }
119+ void onForceDelete () { m_forceDelete = true ; }
111120 bool checkCharge () const { return true ; }
112121 void setThrow () { fopAcM_SetParam (this , 1 ); }
113- void setAimActor (fopAc_ac_c* i_actor) { (this ->*mpSetAimActorFn )(i_actor); }
114- void cancelLockActor (fopAc_ac_c* i_actor) { (this ->*mpCancelLockActorFn )(i_actor); }
115- u8 getLockReserve () const { return mSight .getReserve (); }
116- bool getLockCntMax () { return mLockCnt >= 5 ; }
122+ void setAimActor (fopAc_ac_c* i_actor) { (this ->*m_setAimActorFn )(i_actor); }
123+ void cancelLockActor (fopAc_ac_c* i_actor) { (this ->*m_cancelLockActorFn )(i_actor); }
124+ u8 getLockReserve () const { return m_sight .getReserve (); }
125+ bool getLockCntMax () { return m_lockCnt >= BOOMERANG_LOCK_MAX ; }
117126 void onLockDistanceCancel () { onStateFlg0 (FLG0_LOCK_DIST_CANCEL); }
118127
119128private:
120- /* 0x568 */ J3DModel* field_0x568 ;
121- /* 0x56C */ J3DModel* field_0x56c ;
129+ /* 0x568 */ J3DModel* mp_boomModel ;
130+ /* 0x56C */ J3DModel* mp_shippuModel ;
122131 /* 0x570 */ J3DAnmTextureSRTKey* m_windBtk;
123- /* 0x574 */ mDoExt_bckAnm mBck ;
124- /* 0x590 */ J3DModel* field_0x590 ;
132+ /* 0x574 */ mDoExt_bckAnm m_shippuBck ;
133+ /* 0x590 */ J3DModel* mp_setboomEfModel ;
125134 /* 0x594 */ J3DAnmTextureSRTKey* m_waitEffBtk;
126- /* 0x598 */ daBoomerang_sight_c mSight ;
127- /* 0x6A8 */ s32 field_0x6a8 ;
128- /* 0x6AC */ s32 field_0x6ac[ 5 ];
129- /* 0x6C0 */ fopAc_ac_c* mLockActors [ 5 ]; // Actors corresponding to the five target points
130- /* 0x6D4 */ u32 field_0x6d4;
135+ /* 0x598 */ daBoomerang_sight_c m_sight ;
136+ /* 0x6A8 */ fpc_ProcID m_lockLineActorID ;
137+ /* 0x6AC */ fpc_ProcID m_lockActorIDs[BOOMERANG_LOCK_MAX ];
138+ /* 0x6C0 */ fopAc_ac_c* m_lockActors[BOOMERANG_LOCK_MAX ]; // Actors corresponding to the five target points
139+ /* 0x6D4 */ fpc_ProcID field_0x6d4;
131140 /* 0x6D8 */ fopAc_ac_c* field_0x6d8;
132- /* 0x6DC */ cXyz mLockActorsPositions [ 5 ];
133- /* 0x718 */ u8 field_0x718[5 ];
134- /* 0x720 */ Z2SoundObjSimple field_0x720 ;
135- /* 0x740 */ dBgS_Acch field_0x740 ;
136- /* 0x918 */ dPaPo_c field_0x918 ;
137- /* 0x950 */ u8 mLockCnt ;
141+ /* 0x6DC */ cXyz m_lockActorsPositions[BOOMERANG_LOCK_MAX ];
142+ /* 0x718 */ u8 field_0x718[BOOMERANG_LOCK_MAX ];
143+ /* 0x720 */ Z2SoundObjSimple m_sound ;
144+ /* 0x740 */ dBgS_ObjAcch m_acch ;
145+ /* 0x918 */ dPaPo_c m_papo ;
146+ /* 0x950 */ u8 m_lockCnt ;
138147 /* 0x951 */ u8 field_0x951;
139148 /* 0x952 */ u8 field_0x952;
140- /* 0x953 */ u8 field_0x953 ;
149+ /* 0x953 */ s8 m_reverb ;
141150 /* 0x954 */ u8 field_0x954;
142151 /* 0x955 */ u8 field_0x955;
143- /* 0x956 */ bool mForceDelete ;
152+ /* 0x956 */ bool m_forceDelete ;
144153 /* 0x957 */ u8 field_0x957;
145154 /* 0x958 */ s16 field_0x958;
146- /* 0x95A */ s16 field_0x95a ;
155+ /* 0x95A */ s16 m_modelRotY ;
147156 /* 0x95C */ s16 field_0x95c;
148157 /* 0x95E */ s16 field_0x95e;
149158 /* 0x960 */ s16 field_0x960;
150159 /* 0x962 */ s16 field_0x962;
151- /* 0x964 */ u32 mStateFlg0 ;
160+ /* 0x964 */ u32 m_stateFlg0 ;
152161 /* 0x968 */ u32 field_0x968;
153162 /* 0x96C */ u32 field_0x96c;
154163 /* 0x970 */ u32 field_0x970;
155164 /* 0x974 */ u32 field_0x974;
156165 /* 0x978 */ u32 field_0x978;
157166 /* 0x97C */ u32 field_0x97c;
158- /* 0x980 */ f32 field_0x980 ;
159- /* 0x984 */ f32 field_0x984 ;
167+ /* 0x980 */ f32 mGroundY ;
168+ /* 0x984 */ f32 m_lockLineSqdist ;
160169 /* 0x988 */ f32 field_0x988;
161- /* 0x98C */ f32 field_0x98c ;
162- /* 0x990 */ cXyz field_0x990 ;
170+ /* 0x98C */ f32 m_shippuFrame ;
171+ /* 0x990 */ cXyz m_aimPos ;
163172 /* 0x99C */ cXyz field_0x99c;
164- /* 0x9A8 */ f32 field_0x9a8 ;
165- /* 0x9AC */ cXyz field_0x9ac ;
173+ /* 0x9A8 */ f32 m_shippuSize ;
174+ /* 0x9AC */ cXyz m_moveTargetPos ;
166175 /* 0x9B8 */ cXyz field_0x9b8;
167- /* 0x9C4 */ cXyz field_0x9c4 ;
168- /* 0x9D0 */ dCcD_Stts field_0x9d0 ;
169- /* 0xA0C */ dCcD_Cps field_0xa0c ;
170- /* 0xB50 */ dCcD_Cyl field_0xb50 ;
171- /* 0xC8C */ dBgS_BoomerangLinChk field_0xc8c ;
172- /* 0xCFC */ dBgS_ObjLinChk field_0xcfc ;
173- /* 0xD6C */ dBgS_ObjGndChk field_0xd6c ;
174- /* 0xDC0 */ int (daBoomerang_c::*mpProcFn )();
175- /* 0xDCC */ void (daBoomerang_c::*mpSetAimActorFn )(fopAc_ac_c*);
176- /* 0xDD8 */ void (daBoomerang_c::*mpCancelLockActorFn )(fopAc_ac_c*);
176+ /* 0x9C4 */ cXyz m_movePos ;
177+ /* 0x9D0 */ dCcD_Stts m_colliderStts ;
178+ /* 0xA0C */ dCcD_Cps m_atCps ;
179+ /* 0xB50 */ dCcD_Cyl m_windAtCyl ;
180+ /* 0xC8C */ dBgS_BoomerangLinChk m_boomLineChk ;
181+ /* 0xCFC */ dBgS_ObjLinChk m_lineChk ;
182+ /* 0xD6C */ dBgS_ObjGndChk m_gndChk ;
183+ /* 0xDC0 */ int (daBoomerang_c::*m_procFn )();
184+ /* 0xDCC */ void (daBoomerang_c::*m_setAimActorFn )(fopAc_ac_c*);
185+ /* 0xDD8 */ void (daBoomerang_c::*m_cancelLockActorFn )(fopAc_ac_c*);
177186};
178187
179188STATIC_ASSERT (sizeof (daBoomerang_c) == 0xDE4);
@@ -188,5 +197,4 @@ class daBoomerang_HIO_c0 {
188197 static f32 const m_lockWindScale;
189198};
190199
191-
192200#endif /* D_A_BOOMERANG_H */
0 commit comments