Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
Loading...
Searching...
No Matches
d_a_arrow.h
Go to the documentation of this file.
1#ifndef D_A_ARROW_H
2#define D_A_ARROW_H
3
5#include "d/d_cc_d.h"
6#include "d/d_particle.h"
8
17class daArrow_c : public fopAc_ac_c {
18public:
20 ARROW_TYPE_NORMAL = 0, // Needs verification
24 };
25
26 int createHeap();
28 void decAlphaBlur();
29 void setBlur();
30 void setLightArrowHitMark(cXyz const*);
31 void setLightChargeEffect(int);
33 void setArrowAt(f32);
34 void arrowShooting();
36 void setRoomInfo();
37 void clearNearActorData();
39 void setNormalMatrix();
40 void setSmokePos();
41 void setKeepMatrix();
43 void setBombMoveEffect();
44 bool checkReget();
45 int procWait();
46 int procMove();
47 int procReturnInit(int);
48 int procReturn();
49 int procBGStop();
50 int procActorStop();
53 int procSlingHit();
54 int execute();
55 int draw();
57 ~daArrow_c();
58
60 bool checkBombArrow() const { return mArrowType == true; }
61 u32 getHitAcID() { return mHitAcID; }
62
63 BOOL checkWait() { return fopAcM_GetParam(this) == 0; }
64
66 f32 getArrowOutLength() { return 95.0f; }
67 f32 getArrowAtR() { return 5.0f; }
68 f32 getFlyMax() { return mFlyMax; }
70
71 void setShoot() { fopAcM_SetParam(this, 1); }
72 void setChargeShoot() { fopAcM_SetParam(this, 2); }
73
74 void deleteArrow() { field_0x93f = 1; }
75
76 static fopAc_ac_c* makeArrow(fopAc_ac_c* i_actor, u16 param_1) {
78 param_1 << 8,
79 &i_actor->current.pos,
80 fopAcM_GetRoomNo(i_actor),
81 NULL,
82 NULL,
83 -1,
84 NULL,
85 NULL);
86 }
87
88 static fopAc_ac_c* makeSlingStone(fopAc_ac_c* i_actor, cXyz* i_pos) {
90 0x401,
91 i_pos,
92 fopAcM_GetRoomNo(i_actor),
93 NULL,
94 NULL,
95 -1,
96 NULL,
97 NULL);
98 }
99
101 if (fopAcM_GetParam(this) == 2 || fopAcM_GetParam(this) == 1) {
102 fopAcM_SetParam(this, 6);
103 field_0x94e = -1;
104
105 return TRUE;
106 }
107
108 return FALSE;
109 }
110
112
113private:
114 /* 0x568 */ J3DModel* mpModel;
121 /* 0x93C */ u8 mArrowType;
122 /* 0x93D */ u8 field_0x93d;
123 /* 0x93E */ s8 field_0x93e;
124 /* 0x93F */ u8 field_0x93f;
125 /* 0x940 */ u8 field_0x940;
126 /* 0x941 */ u8 field_0x941;
127 /* 0x942 */ u8 field_0x942;
128 /* 0x943 */ u8 field_0x943;
129 /* 0x944 */ u8 field_0x944;
130 /* 0x945 */ u8 field_0x945;
131 /* 0x946 */ u8 field_0x946;
132 /* 0x947 */ u8 field_0x947;
133 /* 0x948 */ s8 mReverb;
134 /* 0x949 */ u8 field_0x949[0x94C - 0x949];
135 /* 0x94C */ u16 field_0x94c;
136 /* 0x94E */ s16 field_0x94e;
137 /* 0x950 */ s16 field_0x950;
138 /* 0x952 */ s16 field_0x952;
139 /* 0x954 */ s16 field_0x954;
140 /* 0x956 */ s16 field_0x956;
141 /* 0x958 */ csXyz field_0x958;
142 /* 0x960 */ int field_0x960;
143 /* 0x964 */ u32 field_0x964;
144 /* 0x968 */ u32 field_0x968;
145 /* 0x96C */ u32 field_0x96c[4];
146 /* 0x97C */ u32 field_0x97c[6];
147 /* 0x994 */ u32 mHitAcID;
148 /* 0x998 */ f32 field_0x998;
149 /* 0x99C */ f32 field_0x99c;
150 /* 0x9A0 */ f32 mOutLengthRate;
151 /* 0x9A4 */ f32 mFlyMax;
152 /* 0x9A8 */ cXyz field_0x9a8;
153 /* 0x9B4 */ cXyz field_0x9b4;
154 /* 0x9C0 */ cXyz mStartPos;
155 /* 0x9CC */ cXyz field_0x9cc;
156 /* 0x9D8 */ cXyz field_0x9d8;
157 /* 0x9E4 */ cXyz field_0x9e4;
158 /* 0x9F0 */ cXyz mSmokePos;
159 /* 0x9FC */ cXyz field_0x9fc;
162 /* 0xA28 */ int (daArrow_c::*mProcFunc)();
163
164 static s16 m_count;
165};
166
167STATIC_ASSERT(sizeof(daArrow_c) == 0xA34);
168
169#endif /* D_A_ARROW_H */
static Mtx mtx[10]
Definition c_lib.cpp:486
cPhs__Step
Definition c_phase.h:8
Definition J3DModel.h:43
void setBaseTRMtx(Mtx m)
Definition J3DModel.h:90
Definition Z2SoundObject.h:107
Definition c_sxyz.h:10
Definition d_bg_s_lin_chk.h:41
Definition d_bg_s_lin_chk.h:48
Definition d_cc_d.h:441
Definition d_cc_d.h:282
Definition d_cc_d.h:473
Definition d_cc_d.h:269
Definition d_particle.h:229
Arrow.
Definition d_a_arrow.h:17
f32 getFlyMax()
Definition d_a_arrow.h:68
void setRoomInfo()
Definition d_a_arrow.cpp:336
BOOL changeActorControll()
Definition d_a_arrow.h:100
static s16 m_count
Definition d_a_arrow.h:164
void setLightChargeEffect(int)
Definition d_a_arrow.cpp:147
f32 getOutLengthRate()
Definition d_a_arrow.h:65
cXyz mSmokePos
Definition d_a_arrow.h:158
u16 field_0x94c
Definition d_a_arrow.h:135
u32 field_0x964
Definition d_a_arrow.h:143
dBgS_ArrowLinChk field_0x56c
Definition d_a_arrow.h:115
s16 getVibAngle()
Definition d_a_arrow.cpp:357
static fopAc_ac_c * makeSlingStone(fopAc_ac_c *i_actor, cXyz *i_pos)
Definition d_a_arrow.h:88
int field_0x960
Definition d_a_arrow.h:142
int procWait()
Definition d_a_arrow.cpp:471
cXyz mStartPos
Definition d_a_arrow.h:154
int procSlingHitInit(cXyz *, dCcD_GObjInf *)
Definition d_a_arrow.cpp:964
cXyz field_0x9a8
Definition d_a_arrow.h:152
u8 field_0x93f
Definition d_a_arrow.h:124
BOOL checkWait()
Definition d_a_arrow.h:63
u8 field_0x947
Definition d_a_arrow.h:132
Z2SoundObjArrow mSoundObjArrow
Definition d_a_arrow.h:120
static fopAc_ac_c * makeArrow(fopAc_ac_c *i_actor, u16 param_1)
Definition d_a_arrow.h:76
u8 field_0x949[0x94C - 0x949]
Definition d_a_arrow.h:134
u8 field_0x946
Definition d_a_arrow.h:131
int procReturnInit(int)
Definition d_a_arrow.cpp:846
dCcD_Cps field_0x688
Definition d_a_arrow.h:118
void atHitCallBack(dCcD_GObjInf *, fopAc_ac_c *, dCcD_GObjInf *)
Definition d_a_arrow.cpp:83
bool checkReget()
Definition d_a_arrow.cpp:457
int procActorStop()
Definition d_a_arrow.cpp:944
void setSmokePos()
Definition d_a_arrow.cpp:385
dCcD_Stts field_0x64c
Definition d_a_arrow.h:117
void clearNearActorData()
Definition d_a_arrow.cpp:351
cXyz field_0x9cc
Definition d_a_arrow.h:155
f32 getArrowAtR()
Definition d_a_arrow.h:67
f32 field_0x998
Definition d_a_arrow.h:148
csXyz field_0x958
Definition d_a_arrow.h:141
u8 field_0x940
Definition d_a_arrow.h:125
int procBGStop()
Definition d_a_arrow.cpp:916
void setLightArrowHitMark(cXyz const *)
Definition d_a_arrow.cpp:137
void deleteArrow()
Definition d_a_arrow.h:74
void setNormalMatrix()
Definition d_a_arrow.cpp:371
s16 field_0x950
Definition d_a_arrow.h:137
void setBlur()
Definition d_a_arrow.cpp:130
int procReturn()
Definition d_a_arrow.cpp:873
f32 getArrowOutLength()
Definition d_a_arrow.h:66
int execute()
Definition d_a_arrow.cpp:1007
u8 field_0x944
Definition d_a_arrow.h:129
int procActorControllStop()
Definition d_a_arrow.cpp:959
int procSlingHit()
Definition d_a_arrow.cpp:996
u8 field_0x945
Definition d_a_arrow.h:130
s8 field_0x93e
Definition d_a_arrow.h:123
int createHeap()
Definition d_a_arrow.cpp:21
daPy_actorKeep_c field_0xa08
Definition d_a_arrow.h:160
J3DModel * mpModel
Definition d_a_arrow.h:114
void decAlphaBlur()
Definition d_a_arrow.cpp:115
f32 mFlyMax
Definition d_a_arrow.h:151
int(daArrow_c::* mProcFunc)()
Definition d_a_arrow.h:162
int procMove()
Definition d_a_arrow.cpp:542
~daArrow_c()
Definition d_a_arrow.cpp:1201
cXyz field_0x9b4
Definition d_a_arrow.h:153
bool checkBombArrow() const
Definition d_a_arrow.h:60
f32 mOutLengthRate
Definition d_a_arrow.h:150
u8 field_0x93d
Definition d_a_arrow.h:122
cXyz field_0x9e4
Definition d_a_arrow.h:157
cXyz field_0x9fc
Definition d_a_arrow.h:159
void setBombMoveEffect()
Definition d_a_arrow.cpp:438
dBgS_ObjLinChk field_0x5dc
Definition d_a_arrow.h:116
void setChargeShoot()
Definition d_a_arrow.h:72
u8 field_0x941
Definition d_a_arrow.h:126
u8 field_0x942
Definition d_a_arrow.h:127
dPa_hermiteEcallBack_c field_0xa10
Definition d_a_arrow.h:161
s8 mReverb
Definition d_a_arrow.h:133
u32 field_0x96c[4]
Definition d_a_arrow.h:145
cPhs__Step create()
Definition d_a_arrow.cpp:1135
s16 field_0x94e
Definition d_a_arrow.h:136
void setShoot()
Definition d_a_arrow.h:71
f32 field_0x99c
Definition d_a_arrow.h:149
u8 field_0x943
Definition d_a_arrow.h:128
cXyz getStartPos()
Definition d_a_arrow.h:69
s16 field_0x952
Definition d_a_arrow.h:138
void setKeepMatrix()
Definition d_a_arrow.cpp:394
void setArrowAt(f32)
Definition d_a_arrow.cpp:206
u32 field_0x968
Definition d_a_arrow.h:144
void setBombArrowExplode()
Definition d_a_arrow.h:59
int setArrowWaterNextPos(cXyz *, cXyz *)
Definition d_a_arrow.cpp:168
dCcD_Sph field_0x7cc
Definition d_a_arrow.h:119
cXyz field_0x9d8
Definition d_a_arrow.h:156
s16 field_0x956
Definition d_a_arrow.h:140
void setModelMatrix(MtxP mtx)
Definition d_a_arrow.h:111
fopAc_ac_c * setStopActorMatrix()
Definition d_a_arrow.cpp:417
ArrowType_e
Definition d_a_arrow.h:19
@ ARROW_TYPE_BOMB
Definition d_a_arrow.h:21
@ ARROW_TYPE_SLING
Definition d_a_arrow.h:23
@ ARROW_TYPE_NORMAL
Definition d_a_arrow.h:20
@ ARROW_TYPE_LIGHT
Definition d_a_arrow.h:22
u32 mHitAcID
Definition d_a_arrow.h:147
s16 field_0x954
Definition d_a_arrow.h:139
u32 field_0x97c[6]
Definition d_a_arrow.h:146
void arrowShooting()
Definition d_a_arrow.cpp:259
int draw()
Definition d_a_arrow.cpp:1065
u32 getHitAcID()
Definition d_a_arrow.h:61
u8 mArrowType
Definition d_a_arrow.h:121
Definition d_a_player.h:99
Definition f_op_actor.h:230
actor_place current
Definition f_op_actor.h:251
STATIC_ASSERT(sizeof(daArrow_c)==0xA34)
@ PROC_ARROW
Definition d_procname.h:785
f32(* MtxP)[4]
Definition mtx.h:38
int BOOL
Definition types.h:33
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
fopAc_ac_c * fopAcM_fastCreate(s16 i_procName, u32 i_parameters, const cXyz *i_pos, int i_roomNo, const csXyz *i_angle, const cXyz *i_scale, s8 i_argument, createFunc i_createFunc, void *i_createFuncData)
Definition f_op_actor_mng.cpp:241
u32 fopAcM_GetParam(const void *i_actor)
Definition f_op_actor_mng.h:192
void fopAcM_SetParam(void *i_actor, u32 param)
Definition f_op_actor_mng.h:200
s8 fopAcM_GetRoomNo(const fopAc_ac_c *i_actor)
Definition f_op_actor_mng.h:144
cXyz pos
Definition f_op_actor.h:205
Definition c_xyz.h:7