Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
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 /* 8049E0B8 */ int createHeap();
13 /* 8049E36C */ void initialize();
14 /* 8049EB64 */ int playAnime(int, int);
15 /* 8049EDA8 */ void initFrame(int);
16 /* 8049EDE8 */ void copyNumData(int);
17 /* 8049EEC8 */ void setSight(cXyz const*, int);
18
19 /* 8049EF60 */ virtual void draw();
20 /* 804A278C */ virtual ~daBoomerang_sight_c() {}
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 /* 8049F280 */ void windModelCallBack();
90 /* 8049F39C */ int draw();
91 /* 8049F5F4 */ void lockLineCallback(fopAc_ac_c*);
92 /* 8049F660 */ void moveLineCallback(fopAc_ac_c*);
93 /* 8049F710 */ void pushLockList(int);
94 /* 8049F818 */ void cancelLockActorBase(fopAc_ac_c*);
95 /* 8049F874 */ void setAimActorBase(fopAc_ac_c*);
96 /* 8049F8B0 */ int setLockActor(fopAc_ac_c*, int);
97 /* 8049F9A4 */ void resetLockActor();
98 /* 8049F9F0 */ void setRoomInfo();
99 /* 8049FAA4 */ void setKeepMatrix();
100 /* 8049FBAC */ void setMoveMatrix();
101 /* 8049FCD0 */ void setRotAngle();
102 /* 8049FD6C */ void setAimPos();
103 /* 8049FE6C */ void checkBgHit(cXyz*, cXyz*);
104 /* 804A006C */ JPABaseEmitter* setEffectTraceMatrix(u32*, u16);
105 /* 804A012C */ void setEffect();
106 /* 804A0874 */ int procWait();
107 /* 804A0F0C */ int procMove();
108 /* 804A1814 */ int execute();
109 /* 804A1BF4 */ ~daBoomerang_c();
110 /* 804A1EE4 */ int createHeap();
111 /* 804A2084 */ int create();
112 /* 804A230C */ daBoomerang_c();
113
114 u32 checkStateFlg0(daBoomerang_FLG0 i_flag) const { return m_stateFlg0 & i_flag; }
118 bool checkForceDelete() const { return m_forceDelete; }
119 void onForceDelete() { m_forceDelete = true; }
120 bool checkCharge() const { return true; }
121 void setThrow() { fopAcM_SetParam(this, 1); }
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; }
127
128private:
129 /* 0x568 */ J3DModel* mp_boomModel;
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
141 /* 0x6DC */ cXyz m_lockActorsPositions[BOOMERANG_LOCK_MAX];
142 /* 0x718 */ u8 field_0x718[BOOMERANG_LOCK_MAX];
144 /* 0x740 */ dBgS_ObjAcch m_acch;
145 /* 0x918 */ dPaPo_c m_papo;
146 /* 0x950 */ u8 m_lockCnt;
147 /* 0x951 */ u8 field_0x951;
148 /* 0x952 */ u8 field_0x952;
149 /* 0x953 */ s8 m_reverb;
150 /* 0x954 */ u8 field_0x954;
151 /* 0x955 */ u8 field_0x955;
152 /* 0x956 */ bool m_forceDelete;
153 /* 0x957 */ u8 field_0x957;
154 /* 0x958 */ s16 field_0x958;
155 /* 0x95A */ s16 m_modelRotY;
156 /* 0x95C */ s16 field_0x95c;
157 /* 0x95E */ s16 field_0x95e;
158 /* 0x960 */ s16 field_0x960;
159 /* 0x962 */ s16 field_0x962;
160 /* 0x964 */ u32 m_stateFlg0;
161 /* 0x968 */ u32 field_0x968;
162 /* 0x96C */ u32 field_0x96c;
163 /* 0x970 */ u32 field_0x970;
164 /* 0x974 */ u32 field_0x974;
165 /* 0x978 */ u32 field_0x978;
166 /* 0x97C */ u32 field_0x97c;
167 /* 0x980 */ f32 mGroundY;
169 /* 0x988 */ f32 field_0x988;
170 /* 0x98C */ f32 m_shippuFrame;
171 /* 0x990 */ cXyz m_aimPos;
172 /* 0x99C */ cXyz field_0x99c;
173 /* 0x9A8 */ f32 m_shippuSize;
175 /* 0x9B8 */ cXyz field_0x9b8;
176 /* 0x9C4 */ cXyz m_movePos;
178 /* 0xA0C */ dCcD_Cps m_atCps;
183 /* 0xDC0 */ int (daBoomerang_c::*m_procFn)();
186};
187
188STATIC_ASSERT(sizeof(daBoomerang_c) == 0xDE4);
189
191public:
192 static u16 const m_lockWaitTime;
193 static f32 const m_minCircleR;
194 static f32 const m_middleCircleR;
195 static f32 const m_maxCircleR;
196 static f32 const m_scale;
197 static f32 const m_lockWindScale;
198};
199
200#endif /* D_A_BOOMERANG_H */
static BOOL flag
Definition DEMOAVX.c:20
Definition J2DAnimation.h:381
Definition J2DAnimation.h:311
Definition J2DAnimation.h:146
Definition J2DPane.h:51
Definition J2DScreen.h:48
Definition JPAEmitter.h:100
Definition Z2SoundObject.h:37
Definition d_bg_s_lin_chk.h:34
Definition d_bg_s_gnd_chk.h:19
Definition d_bg_s_lin_chk.h:48
Definition d_cc_d.h:447
Definition d_drawlist.h:31
Definition d_particle_copoly.h:10
Definition d_a_boomerang.h:190
static f32 const m_minCircleR
Definition d_a_boomerang.h:193
static f32 const m_lockWindScale
Definition d_a_boomerang.h:197
static f32 const m_middleCircleR
Definition d_a_boomerang.h:194
static u16 const m_lockWaitTime
Definition d_a_boomerang.h:192
static f32 const m_maxCircleR
Definition d_a_boomerang.h:195
static f32 const m_scale
Definition d_a_boomerang.h:196
Gale Boomerang.
Definition d_a_boomerang.h:72
void lockLineCallback(fopAc_ac_c *)
Definition d_a_boomerang.cpp:522
u32 field_0x970
Definition d_a_boomerang.h:163
f32 m_shippuSize
Definition d_a_boomerang.h:173
s16 field_0x958
Definition d_a_boomerang.h:154
void pushLockList(int)
Definition d_a_boomerang.cpp:566
u32 field_0x974
Definition d_a_boomerang.h:164
void onLockDistanceCancel()
Definition d_a_boomerang.h:126
s16 field_0x95e
Definition d_a_boomerang.h:157
u32 m_stateFlg0
Definition d_a_boomerang.h:160
fpc_ProcID m_lockActorIDs[BOOMERANG_LOCK_MAX]
Definition d_a_boomerang.h:137
cXyz m_lockActorsPositions[BOOMERANG_LOCK_MAX]
Definition d_a_boomerang.h:141
J3DModel * mp_shippuModel
Definition d_a_boomerang.h:130
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:148
cXyz field_0x9b8
Definition d_a_boomerang.h:175
cXyz m_movePos
Definition d_a_boomerang.h:176
dBgS_ObjGndChk m_gndChk
Definition d_a_boomerang.h:182
void setRotAngle()
Definition d_a_boomerang.cpp:719
dBgS_ObjAcch m_acch
Definition d_a_boomerang.h:144
int createHeap()
Definition d_a_boomerang.cpp:1410
bool getLockCntMax()
Definition d_a_boomerang.h:125
dBgS_ObjLinChk m_lineChk
Definition d_a_boomerang.h:181
void setMoveMatrix()
Definition d_a_boomerang.cpp:694
int procWait()
Definition d_a_boomerang.cpp:937
u32 field_0x97c
Definition d_a_boomerang.h:166
u8 field_0x957
Definition d_a_boomerang.h:153
void resetLockActor()
Definition d_a_boomerang.cpp:647
int create()
Definition d_a_boomerang.cpp:1485
void setEffect()
Definition d_a_boomerang.cpp:830
fpc_ProcID m_lockLineActorID
Definition d_a_boomerang.h:136
void setRoomInfo()
Definition d_a_boomerang.cpp:659
void cancelLockActor(fopAc_ac_c *i_actor)
Definition d_a_boomerang.h:123
bool checkCharge() const
Definition d_a_boomerang.h:120
void setKeepMatrix()
Definition d_a_boomerang.cpp:678
void onForceDelete()
Definition d_a_boomerang.h:119
int(daBoomerang_c::* m_procFn)()
Definition d_a_boomerang.h:183
mDoExt_bckAnm m_shippuBck
Definition d_a_boomerang.h:132
fopAc_ac_c * field_0x6d8
Definition d_a_boomerang.h:140
s16 m_modelRotY
Definition d_a_boomerang.h:155
void setAimPos()
Definition d_a_boomerang.cpp:729
~daBoomerang_c()
Definition d_a_boomerang.cpp:1399
dCcD_Stts m_colliderStts
Definition d_a_boomerang.h:177
u8 field_0x951
Definition d_a_boomerang.h:147
u32 field_0x96c
Definition d_a_boomerang.h:162
s16 field_0x95c
Definition d_a_boomerang.h:156
void(daBoomerang_c::* m_setAimActorFn)(fopAc_ac_c *)
Definition d_a_boomerang.h:184
fopAc_ac_c * m_lockActors[BOOMERANG_LOCK_MAX]
Definition d_a_boomerang.h:138
daBoomerang_c()
Definition d_a_boomerang.cpp:1550
void onWindCatch()
Definition d_a_boomerang.h:117
u32 checkStateFlg0(daBoomerang_FLG0 i_flag) const
Definition d_a_boomerang.h:114
J3DModel * mp_setboomEfModel
Definition d_a_boomerang.h:133
fpc_ProcID field_0x6d4
Definition d_a_boomerang.h:139
int draw()
Definition d_a_boomerang.cpp:458
void moveLineCallback(fopAc_ac_c *)
Definition d_a_boomerang.cpp:540
void setThrow()
Definition d_a_boomerang.h:121
int setLockActor(fopAc_ac_c *, int)
Definition d_a_boomerang.cpp:615
u8 field_0x718[BOOMERANG_LOCK_MAX]
Definition d_a_boomerang.h:142
JPABaseEmitter * setEffectTraceMatrix(u32 *, u16)
Definition d_a_boomerang.cpp:812
Z2SoundObjSimple m_sound
Definition d_a_boomerang.h:143
s8 m_reverb
Definition d_a_boomerang.h:149
dBgS_BoomerangLinChk m_boomLineChk
Definition d_a_boomerang.h:180
dCcD_Cyl m_windAtCyl
Definition d_a_boomerang.h:179
J3DAnmTextureSRTKey * m_windBtk
Definition d_a_boomerang.h:131
bool checkForceDelete() const
Definition d_a_boomerang.h:118
J3DAnmTextureSRTKey * m_waitEffBtk
Definition d_a_boomerang.h:134
u8 field_0x954
Definition d_a_boomerang.h:150
u8 getLockReserve() const
Definition d_a_boomerang.h:124
u32 field_0x978
Definition d_a_boomerang.h:165
dCcD_Cps m_atCps
Definition d_a_boomerang.h:178
void cancelLockActorBase(fopAc_ac_c *)
Definition d_a_boomerang.cpp:595
int execute()
Definition d_a_boomerang.cpp:1287
f32 mGroundY
Definition d_a_boomerang.h:167
s16 field_0x960
Definition d_a_boomerang.h:158
void(daBoomerang_c::* m_cancelLockActorFn)(fopAc_ac_c *)
Definition d_a_boomerang.h:185
cXyz m_moveTargetPos
Definition d_a_boomerang.h:174
f32 field_0x988
Definition d_a_boomerang.h:169
dPaPo_c m_papo
Definition d_a_boomerang.h:145
J3DModel * mp_boomModel
Definition d_a_boomerang.h:129
void setAimActor(fopAc_ac_c *i_actor)
Definition d_a_boomerang.h:122
void offStateFlg0(daBoomerang_FLG0 flag)
Definition d_a_boomerang.h:116
cXyz field_0x99c
Definition d_a_boomerang.h:172
void checkBgHit(cXyz *, cXyz *)
Definition d_a_boomerang.cpp:756
u8 field_0x955
Definition d_a_boomerang.h:151
s16 field_0x962
Definition d_a_boomerang.h:159
f32 m_shippuFrame
Definition d_a_boomerang.h:170
f32 m_lockLineSqdist
Definition d_a_boomerang.h:168
bool m_forceDelete
Definition d_a_boomerang.h:152
u8 m_lockCnt
Definition d_a_boomerang.h:146
int procMove()
Definition d_a_boomerang.cpp:1088
daBoomerang_sight_c m_sight
Definition d_a_boomerang.h:135
u32 field_0x968
Definition d_a_boomerang.h:161
void onStateFlg0(daBoomerang_FLG0 flag)
Definition d_a_boomerang.h:115
cXyz m_aimPos
Definition d_a_boomerang.h:171
void setAimActorBase(fopAc_ac_c *)
Definition d_a_boomerang.cpp:606
void windModelCallBack()
Definition d_a_boomerang.cpp:431
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:266
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:170
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:316
J2DAnmTevRegKey * m_cursorRedBrk
Definition d_a_boomerang.h:42
void setSight(cXyz const *, int)
Definition d_a_boomerang.cpp:349
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:363
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:327
STATIC_ASSERT(sizeof(daBoomerang_c)==0xDE4)
void fopAcM_SetParam(void *i_actor, u32 param)
Definition f_op_actor_mng.h:194
unsigned int fpc_ProcID
Definition f_pc_base.h:10
Definition d_a_hozelda.cpp:45
Definition d_a_hozelda.cpp:146
Definition d_a_hozelda.cpp:20
Definition d_a_npc_fguard.cpp:94
Definition d_a_npc_fguard.cpp:86
Definition d_a_npc_fguard.cpp:70
Definition d_a_hozelda.cpp:74
Definition d_a_hozelda.cpp:56
signed char s8
Definition types.h:4
unsigned long u32
Definition types.h:9
signed short int s16
Definition types.h:6
float f32
Definition types.h:22
unsigned short int u16
Definition types.h:7
unsigned char u8
Definition types.h:5