Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
Loading...
Searching...
No Matches
d_a_boomerang.h
Go to the documentation of this file.
1#ifndef D_A_BOOMERANG_H
2#define D_A_BOOMERANG_H
3
7
8#define BOOMERANG_LOCK_MAX 5
9
11public:
12 int createHeap();
13 void initialize();
14 int playAnime(int, int);
15 void initFrame(int);
16 void copyNumData(int);
17 void setSight(cXyz const*, int);
18
19 virtual void draw();
21
22 u8 getReserve() const { return mReserve; }
23 u8 getAlpha(int i_index) { return m_alpha[i_index]; }
24 void offRedSight() { m_redSight = false; }
25 void onReserve() { mReserve = 1; }
26 void offReserve() { mReserve = 0; }
27
28private:
52 /* 0x60 */ bool m_redSight;
53 /* 0x61 */ u8 mReserve;
54 /* 0x62 */ u8 m_alpha[6];
55 /* 0x68 */ f32 m_proj_posX[6];
56 /* 0x80 */ f32 m_proj_posY[6];
57 /* 0x98 */ f32 field_0x98[6];
58 /* 0xB0 */ f32 field_0xb0[6];
59 /* 0xC8 */ cXyz m_pos[6];
60}; // Size: 0x110
61
62class daAlink_c;
63
72class daBoomerang_c : public fopAc_ac_c {
73public:
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,
85 /* 0x800 */ FLG0_LOCK_DIST_CANCEL = 0x800,
86 /* 0x080 */ WIND_CATCH = 0x80,
87 };
88
89 void windModelCallBack();
90 int draw();
93 void pushLockList(int);
96 int setLockActor(fopAc_ac_c*, int);
97 void resetLockActor();
98 void setRoomInfo();
99 void setKeepMatrix();
100 void setMoveMatrix();
101 void setRotAngle();
102 void setAimPos();
103 void checkBgHit(cXyz*, cXyz*);
105 void setEffect();
106 int procWait();
107 int procMove();
108 int execute();
110 int createHeap();
111 int create();
113
114 u32 checkStateFlg0(daBoomerang_FLG0 i_flag) const { return m_stateFlg0 & i_flag; }
119 bool checkForceDelete() const { return m_forceDelete; }
120 void onForceDelete() { m_forceDelete = true; }
121 bool checkCharge() const { return true; }
122 void setThrow() { fopAcM_SetParam(this, 1); }
123 void setAimActor(fopAc_ac_c* i_actor) { (this->*m_setAimActorFn)(i_actor); }
124 void cancelLockActor(fopAc_ac_c* i_actor) { (this->*m_cancelLockActorFn)(i_actor); }
125 u8 getLockReserve() const { return m_sight.getReserve(); }
126 bool getLockCntMax() { return m_lockCnt >= BOOMERANG_LOCK_MAX; }
128
129private:
130 /* 0x568 */ J3DModel* mp_boomModel;
138 /* 0x6AC */ fpc_ProcID m_lockActorIDs[BOOMERANG_LOCK_MAX];
139 /* 0x6C0 */ fopAc_ac_c* m_lockActors[BOOMERANG_LOCK_MAX]; // Actors corresponding to the five target points
142 /* 0x6DC */ cXyz m_lockActorsPositions[BOOMERANG_LOCK_MAX];
143 /* 0x718 */ u8 field_0x718[BOOMERANG_LOCK_MAX];
145 /* 0x740 */ dBgS_ObjAcch m_acch;
146 /* 0x918 */ dPaPo_c m_papo;
147 /* 0x950 */ u8 m_lockCnt;
148 /* 0x951 */ u8 field_0x951;
149 /* 0x952 */ u8 field_0x952;
150 /* 0x953 */ s8 m_reverb;
151 /* 0x954 */ u8 field_0x954;
152 /* 0x955 */ u8 field_0x955;
153 /* 0x956 */ bool m_forceDelete;
154 /* 0x957 */ u8 field_0x957;
155 /* 0x958 */ s16 field_0x958;
156 /* 0x95A */ s16 m_modelRotY;
157 /* 0x95C */ s16 field_0x95c;
158 /* 0x95E */ s16 field_0x95e;
159 /* 0x960 */ s16 field_0x960;
160 /* 0x962 */ s16 field_0x962;
161 /* 0x964 */ u32 m_stateFlg0;
162 /* 0x968 */ u32 field_0x968;
163 /* 0x96C */ u32 field_0x96c;
164 /* 0x970 */ u32 field_0x970;
165 /* 0x974 */ u32 field_0x974;
166 /* 0x978 */ u32 field_0x978;
167 /* 0x97C */ u32 field_0x97c;
168 /* 0x980 */ f32 mGroundY;
170 /* 0x988 */ f32 field_0x988;
171 /* 0x98C */ f32 m_shippuFrame;
172 /* 0x990 */ cXyz m_aimPos;
173 /* 0x99C */ cXyz field_0x99c;
174 /* 0x9A8 */ f32 m_shippuSize;
176 /* 0x9B8 */ cXyz field_0x9b8;
177 /* 0x9C4 */ cXyz m_movePos;
179 /* 0xA0C */ dCcD_Cps m_atCps;
184 /* 0xDC0 */ int (daBoomerang_c::*m_procFn)();
187};
188
189STATIC_ASSERT(sizeof(daBoomerang_c) == 0xDE4);
190
192public:
193 static u16 const m_lockWaitTime;
194 static f32 const m_minCircleR;
195 static f32 const m_middleCircleR;
196 static f32 const m_maxCircleR;
197 static f32 const m_scale;
198 static f32 const m_lockWindScale;
199};
200
201#endif /* D_A_BOOMERANG_H */
static BOOL flag
Definition DEMOAVX.c:20
Definition J2DAnimation.h:391
Definition J2DAnimation.h:321
Definition J2DAnimation.h:156
Definition J2DPane.h:51
Definition J2DScreen.h:48
Definition J3DAnimation.h:578
Definition J3DModel.h:43
Definition JPAEmitter.h:101
Definition Z2SoundObject.h:38
Definition d_bg_s_lin_chk.h:34
Definition d_bg_s_acch.h:247
Definition d_bg_s_gnd_chk.h:19
Definition d_bg_s_lin_chk.h:48
Definition d_cc_d.h:441
Definition d_cc_d.h:461
Definition d_cc_d.h:269
Definition d_drawlist.h:32
Particle effect management class for center-based effects.
Definition d_particle_copoly.h:25
Definition d_a_boomerang.h:191
static f32 const m_minCircleR
Definition d_a_boomerang.h:194
static f32 const m_lockWindScale
Definition d_a_boomerang.h:198
static f32 const m_middleCircleR
Definition d_a_boomerang.h:195
static u16 const m_lockWaitTime
Definition d_a_boomerang.h:193
static f32 const m_maxCircleR
Definition d_a_boomerang.h:196
static f32 const m_scale
Definition d_a_boomerang.h:197
Gale Boomerang.
Definition d_a_boomerang.h:72
void lockLineCallback(fopAc_ac_c *)
Definition d_a_boomerang.cpp:497
u32 field_0x970
Definition d_a_boomerang.h:164
f32 m_shippuSize
Definition d_a_boomerang.h:174
s16 field_0x958
Definition d_a_boomerang.h:155
void pushLockList(int)
Definition d_a_boomerang.cpp:534
u32 field_0x974
Definition d_a_boomerang.h:165
void onLockDistanceCancel()
Definition d_a_boomerang.h:127
s16 field_0x95e
Definition d_a_boomerang.h:158
u32 m_stateFlg0
Definition d_a_boomerang.h:161
fpc_ProcID m_lockActorIDs[BOOMERANG_LOCK_MAX]
Definition d_a_boomerang.h:138
cXyz m_lockActorsPositions[BOOMERANG_LOCK_MAX]
Definition d_a_boomerang.h:142
J3DModel * mp_shippuModel
Definition d_a_boomerang.h:131
daBoomerang_FLG0
Definition d_a_boomerang.h:74
@ FLG0_40
Definition d_a_boomerang.h:80
@ FLG0_1
Definition d_a_boomerang.h:75
@ FLG0_10
Definition d_a_boomerang.h:78
@ FLG0_200
Definition d_a_boomerang.h:83
@ FLG0_4
Definition d_a_boomerang.h:77
@ FLG0_80
Definition d_a_boomerang.h:81
@ FLG0_LOCK_DIST_CANCEL
Definition d_a_boomerang.h:85
@ WIND_CATCH
Definition d_a_boomerang.h:86
@ FLG0_100
Definition d_a_boomerang.h:82
@ FLG0_2
Definition d_a_boomerang.h:76
@ FLG0_400
Definition d_a_boomerang.h:84
@ FLG0_20
Definition d_a_boomerang.h:79
u8 field_0x952
Definition d_a_boomerang.h:149
cXyz field_0x9b8
Definition d_a_boomerang.h:176
cXyz m_movePos
Definition d_a_boomerang.h:177
dBgS_ObjGndChk m_gndChk
Definition d_a_boomerang.h:183
void setRotAngle()
Definition d_a_boomerang.cpp:675
dBgS_ObjAcch m_acch
Definition d_a_boomerang.h:145
int createHeap()
Definition d_a_boomerang.cpp:1348
bool getLockCntMax()
Definition d_a_boomerang.h:126
dBgS_ObjLinChk m_lineChk
Definition d_a_boomerang.h:182
void setMoveMatrix()
Definition d_a_boomerang.cpp:651
int procWait()
Definition d_a_boomerang.cpp:882
u32 field_0x97c
Definition d_a_boomerang.h:167
u8 field_0x957
Definition d_a_boomerang.h:154
void resetLockActor()
Definition d_a_boomerang.cpp:607
int create()
Definition d_a_boomerang.cpp:1419
void setEffect()
Definition d_a_boomerang.cpp:777
fpc_ProcID m_lockLineActorID
Definition d_a_boomerang.h:137
void setRoomInfo()
Definition d_a_boomerang.cpp:618
void cancelLockActor(fopAc_ac_c *i_actor)
Definition d_a_boomerang.h:124
bool checkCharge() const
Definition d_a_boomerang.h:121
void setKeepMatrix()
Definition d_a_boomerang.cpp:636
void onForceDelete()
Definition d_a_boomerang.h:120
int(daBoomerang_c::* m_procFn)()
Definition d_a_boomerang.h:184
mDoExt_bckAnm m_shippuBck
Definition d_a_boomerang.h:133
fopAc_ac_c * field_0x6d8
Definition d_a_boomerang.h:141
s16 m_modelRotY
Definition d_a_boomerang.h:156
void setAimPos()
Definition d_a_boomerang.cpp:684
~daBoomerang_c()
Definition d_a_boomerang.cpp:1339
dCcD_Stts m_colliderStts
Definition d_a_boomerang.h:178
u8 field_0x951
Definition d_a_boomerang.h:148
u32 field_0x96c
Definition d_a_boomerang.h:163
s16 field_0x95c
Definition d_a_boomerang.h:157
void(daBoomerang_c::* m_setAimActorFn)(fopAc_ac_c *)
Definition d_a_boomerang.h:185
fopAc_ac_c * m_lockActors[BOOMERANG_LOCK_MAX]
Definition d_a_boomerang.h:139
daBoomerang_c()
Definition d_a_boomerang.cpp:1483
void onWindCatch()
Definition d_a_boomerang.h:118
u32 checkStateFlg0(daBoomerang_FLG0 i_flag) const
Definition d_a_boomerang.h:114
J3DModel * mp_setboomEfModel
Definition d_a_boomerang.h:134
u32 getReturnFlg() const
Definition d_a_boomerang.h:117
fpc_ProcID field_0x6d4
Definition d_a_boomerang.h:140
int draw()
Definition d_a_boomerang.cpp:437
void moveLineCallback(fopAc_ac_c *)
Definition d_a_boomerang.cpp:511
void setThrow()
Definition d_a_boomerang.h:122
int setLockActor(fopAc_ac_c *, int)
Definition d_a_boomerang.cpp:577
u8 field_0x718[BOOMERANG_LOCK_MAX]
Definition d_a_boomerang.h:143
JPABaseEmitter * setEffectTraceMatrix(u32 *, u16)
Definition d_a_boomerang.cpp:764
Z2SoundObjSimple m_sound
Definition d_a_boomerang.h:144
s8 m_reverb
Definition d_a_boomerang.h:150
dBgS_BoomerangLinChk m_boomLineChk
Definition d_a_boomerang.h:181
dCcD_Cyl m_windAtCyl
Definition d_a_boomerang.h:180
J3DAnmTextureSRTKey * m_windBtk
Definition d_a_boomerang.h:132
bool checkForceDelete() const
Definition d_a_boomerang.h:119
J3DAnmTextureSRTKey * m_waitEffBtk
Definition d_a_boomerang.h:135
u8 field_0x954
Definition d_a_boomerang.h:151
u8 getLockReserve() const
Definition d_a_boomerang.h:125
u32 field_0x978
Definition d_a_boomerang.h:166
dCcD_Cps m_atCps
Definition d_a_boomerang.h:179
void cancelLockActorBase(fopAc_ac_c *)
Definition d_a_boomerang.cpp:561
int execute()
Definition d_a_boomerang.cpp:1229
f32 mGroundY
Definition d_a_boomerang.h:168
s16 field_0x960
Definition d_a_boomerang.h:159
void(daBoomerang_c::* m_cancelLockActorFn)(fopAc_ac_c *)
Definition d_a_boomerang.h:186
cXyz m_moveTargetPos
Definition d_a_boomerang.h:175
f32 field_0x988
Definition d_a_boomerang.h:170
dPaPo_c m_papo
Definition d_a_boomerang.h:146
J3DModel * mp_boomModel
Definition d_a_boomerang.h:130
void setAimActor(fopAc_ac_c *i_actor)
Definition d_a_boomerang.h:123
void offStateFlg0(daBoomerang_FLG0 flag)
Definition d_a_boomerang.h:116
cXyz field_0x99c
Definition d_a_boomerang.h:173
void checkBgHit(cXyz *, cXyz *)
Definition d_a_boomerang.cpp:710
u8 field_0x955
Definition d_a_boomerang.h:152
s16 field_0x962
Definition d_a_boomerang.h:160
f32 m_shippuFrame
Definition d_a_boomerang.h:171
f32 m_lockLineSqdist
Definition d_a_boomerang.h:169
bool m_forceDelete
Definition d_a_boomerang.h:153
u8 m_lockCnt
Definition d_a_boomerang.h:147
int procMove()
Definition d_a_boomerang.cpp:1032
daBoomerang_sight_c m_sight
Definition d_a_boomerang.h:136
u32 field_0x968
Definition d_a_boomerang.h:162
void onStateFlg0(daBoomerang_FLG0 flag)
Definition d_a_boomerang.h:115
cXyz m_aimPos
Definition d_a_boomerang.h:172
void setAimActorBase(fopAc_ac_c *)
Definition d_a_boomerang.cpp:570
void windModelCallBack()
Definition d_a_boomerang.cpp:413
Definition d_a_boomerang.h:10
u8 mReserve
Definition d_a_boomerang.h:53
J2DAnmTevRegKey * m_cursorOrangeBrk
Definition d_a_boomerang.h:49
int playAnime(int, int)
Definition d_a_boomerang.cpp:254
J2DPane * m_cursorRed1Pane
Definition d_a_boomerang.h:39
void onReserve()
Definition d_a_boomerang.h:25
bool m_redSight
Definition d_a_boomerang.h:52
f32 field_0x98[6]
Definition d_a_boomerang.h:57
J2DPane * m_cursorYellow2Pane
Definition d_a_boomerang.h:33
J2DPane * m_cursorOrange0Pane
Definition d_a_boomerang.h:45
J2DAnmTevRegKey * m_cursorOrange2Brk
Definition d_a_boomerang.h:48
u8 m_alpha[6]
Definition d_a_boomerang.h:54
J2DPane * m_cursorYellowAllPane
Definition d_a_boomerang.h:30
f32 m_proj_posY[6]
Definition d_a_boomerang.h:56
J2DAnmColor * m_cursorYellowBpk
Definition d_a_boomerang.h:50
J2DPane * m_cursorOrange2Pane
Definition d_a_boomerang.h:47
J2DScreen * m_cursorYellowScrn
Definition d_a_boomerang.h:29
J2DPane * m_cursorRed2Pane
Definition d_a_boomerang.h:40
J2DAnmTransform * m_cursorYellowBck
Definition d_a_boomerang.h:51
J2DPane * m_cursorRed0Pane
Definition d_a_boomerang.h:38
J2DAnmTevRegKey * m_cursorRed2Brk
Definition d_a_boomerang.h:41
J2DScreen * m_cursorOrangeScrn
Definition d_a_boomerang.h:43
J2DPane * m_cursorYellow1Pane
Definition d_a_boomerang.h:32
J2DAnmTevRegKey * m_cursorYellowBrk
Definition d_a_boomerang.h:35
J2DPane * m_cursorYellow0Pane
Definition d_a_boomerang.h:31
J2DPane * m_cursorOrange1Pane
Definition d_a_boomerang.h:46
void initialize()
Definition d_a_boomerang.cpp:160
f32 m_proj_posX[6]
Definition d_a_boomerang.h:55
void offRedSight()
Definition d_a_boomerang.h:24
void initFrame(int)
Definition d_a_boomerang.cpp:302
J2DAnmTevRegKey * m_cursorRedBrk
Definition d_a_boomerang.h:42
void setSight(cXyz const *, int)
Definition d_a_boomerang.cpp:333
f32 field_0xb0[6]
Definition d_a_boomerang.h:58
u8 getReserve() const
Definition d_a_boomerang.h:22
virtual ~daBoomerang_sight_c()
Definition d_a_boomerang.h:20
J2DScreen * m_cursorRedScrn
Definition d_a_boomerang.h:36
void offReserve()
Definition d_a_boomerang.h:26
cXyz m_pos[6]
Definition d_a_boomerang.h:59
J2DPane * m_cursorOrangeAllPane
Definition d_a_boomerang.h:44
J2DPane * m_cursorRedAllPane
Definition d_a_boomerang.h:37
u8 getAlpha(int i_index)
Definition d_a_boomerang.h:23
virtual void draw()
Definition d_a_boomerang.cpp:346
int createHeap()
Definition d_a_boomerang.cpp:17
J2DAnmTevRegKey * m_cursorYellow2Brk
Definition d_a_boomerang.h:34
void copyNumData(int)
Definition d_a_boomerang.cpp:312
Definition f_op_actor.h:230
Definition m_Do_ext.h:151
STATIC_ASSERT(sizeof(daBoomerang_c)==0xDE4)
signed char s8
Definition types.h:7
unsigned long u32
Definition types.h:12
signed short int s16
Definition types.h:9
float f32
Definition types.h:25
unsigned short int u16
Definition types.h:10
unsigned char u8
Definition types.h:8
void fopAcM_SetParam(void *i_actor, u32 param)
Definition f_op_actor_mng.h:200
unsigned int fpc_ProcID
Definition f_pc_base.h:10
Definition c_xyz.h:7