1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
|
#ifndef D_A_KAGO_H
#define D_A_KAGO_H
#include "d/d_bg_s_acch.h"
#include "d/d_cc_d.h"
#include "d/d_cc_uty.h"
#include "d/d_msg_flow.h"
#include "d/d_path.h"
#include "f_op/f_op_actor_mng.h"
/**
* @ingroup actors-unsorted
* @class daKago_c
* @brief Player-controlled Kargarok
*
* @details
*
*/
class daKago_c : public fopAc_ac_c {
public:
enum daKago_Action_e {
ACTION_FLY_e,
ACTION_STAGGER_e,
ACTION_EVENT_e,
ACTION_PERCH_e,
ACTION_WAIT_e,
ACTION_ATTACK_e,
ACTION_EVENT2_e,
ACTION_PERCH2_e,
ACTION_LANDING_e,
ACTION_DEMO_FLY_e,
ACTION_DEMO_FLY2_e,
};
int getBckName(int);
void setBck(int, u8, f32, f32);
bool checkBck(int);
int draw();
int executeBalloonMenu();
f32 checkGroundHeight(cXyz, f32*);
f32 checkRoofHeight(cXyz);
void checkMoveHeight();
void checkSizeBg();
s16 getBeforeGroundHeight(u8);
void demo_skip(int);
static int DemoSkipCallBack(void*, int);
void setActionMode(int, int);
void setMidnaTagPos();
void setMidnaRideOn();
void setPlayerRideOn();
void setRideOff();
s8 searchNearPassPoint();
int setSceneChange(int);
void createBalloonScore();
void startBalloonScore();
void endBalloonScore();
f32 checkNextPath(cXyz);
void checkHeight();
bool checkYaguraPos(cXyz);
bool checkWallHitFall(int);
bool checkAttackStart();
s16 getValueY(f32);
s16 getValueX(f32);
s16 getValueAbsX(f32);
void flySpeedCalcLockOn();
void flySpeedCalc(s16, int);
bool checkFlySceneChange();
void setFlyAway();
void setFlyAnime();
void executeFly();
void executeStagger();
void executeWait();
bool calcAttackMove(int);
void executeAttack();
void calcCircleCamera(int);
void executeEvent();
void initPerchDemo();
bool executePerchDemo();
bool PerchDemoAwayForward();
void executePerch();
void executeEvent2();
void initFirstDemo();
bool executeFirstDemo();
void executePerch2();
void executeLandingLakeHairia();
void executeLandingBoartHouse();
void executeLanding();
void moveDemoFly();
void setFlyEffect();
void setDashEffect();
void setDamageEffect();
void setDashBlurEffect(int);
void setWallHitEffect(cXyz, int);
void setSibukiEffect();
void setDashSibukiEffect();
void setWaterFallEffect();
void setFlySound();
void action();
void mtx_set();
void cc_set();
int execute();
int _delete();
int ctrlJoint(J3DJoint*, J3DModel*);
static int JointCallBack(J3DJoint*, int);
int CreateHeap();
int create();
void setEvent() {
mIsFlying = false;
mAction = ACTION_EVENT_e;
mMode = 0;
}
void setEvent2() {
mIsFlying = false;
mAction = ACTION_EVENT2_e;
mMode = 0;
}
void setKagoPath(u8 i_pathNo) {
if (i_pathNo != 0xFF) {
mpPath2 = dPath_GetRoomPath(i_pathNo, fopAcM_GetRoomNo(this));
}
}
void onWaterFall() {
mIsWaterfall = TRUE;
}
bool isAttack() {
return mIsAttack != 0;
}
MtxP getLegR3Mtx() { return mLegR3Mtx; }
MtxP getMidnaLocaterMtx() { return mAnm_p->getModel()->getAnmMtx(4); }
s8 getPathDir() { return mPathDir; }
u8 isFlying() { return mIsFlying; }
fopAc_ac_c* getLockActor() { return mpLockActor; }
void setLockActor(fopAc_ac_c* actor) { mpLockActor = actor; }
void setEatYm() { field_0x6d8 |= (u8) 4; }
MtxP getMouthMtx() { return mAnm_p->getModel()->getAnmMtx(7); }
private:
/* 0x568 */ request_of_phase_process_class mPhase;
/* 0x570 */ mDoExt_McaMorfSO* mAnm_p;
/* 0x574 */ Z2CreatureEnemy mSound;
/* 0x618 */ fopAc_ac_c* mpLockActor;
/* 0x61C */ fpc_ProcID mBalloon2DId;
/* 0x620 */ Mtx mLegR3Mtx;
/* 0x650 */ cXyz mWallHitEffPos[3];
/* 0x674 */ cXyz field_0x674;
/* 0x680 */ cXyz field_0x680;
/* 0x68C */ cXyz mDemoCamCenter;
/* 0x698 */ cXyz mDemoCamEye;
/* 0x6A4 */ cXyz field_0x6a4;
/* 0x6B0 */ cXyz mPrevCamEye;
/* 0x6BC */ s16 field_0x6bc;
/* 0x6BE */ csXyz field_0x6be;
/* 0x6C4 */ f32 field_0x6c4;
/* 0x6C8 */ s16 field_0x6c8;
/* 0x6CA */ s16 field_0x6ca;
/* 0x6CC */ f32 field_0x6cc;
/* 0x6D0 */ f32 field_0x6d0;
/* 0x6D4 */ f32 mDemoCamFovy;
/* 0x6D8 */ u8 field_0x6d8;
/* 0x6D9 */ u8 field_0x6d9;
/* 0x6DA */ s16 field_0x6da;
/* 0x6DC */ u8 field_0x6dc;
/* 0x6DD */ u8 mIsAttack;
/* 0x6DE */ u8 field_0x6de;
/* 0x6DF */ u8 field_0x6df;
/* 0x6E0 */ u8 field_0x6e0;
/* 0x6E1 */ u8 mIsFlying;
/* 0x6E2 */ u8 field_0x6e2[0x6e3 - 0x6e2];
/* 0x6E3 */ u8 field_0x6e3;
/* 0x6E4 */ u8 field_0x6e4;
/* 0x6E5 */ u8 field_0x6e5;
/* 0x6E6 */ u8 field_0x6e6;
/* 0x6E7 */ u8 mType;
/* 0x6E8 */ u8 field_0x6e8;
/* 0x6E8 */ u8 field_0x6e9;
/* 0x6EA */ u8 mIsWaterfall;
/* 0x6EB */ u8 mBalloonMenuMode;
/* 0x6EC */ u8 field_0x6ec[0x6ed - 0x6ec];
/* 0x6ED */ u8 unk_0x6ed;
/* 0x6F0 */ f32 mStickX;
/* 0x6F4 */ f32 mStickY;
/* 0x6F8 */ f32 mFlySpeed;
/* 0x6FC */ f32 field_0x6fc;
/* 0x700 */ f32 mGroundFlyHeight;
/* 0x704 */ f32 mGroundHeight;
/* 0x708 */ f32 mRoofHeight;
/* 0x70C */ f32 field_0x70c;
/* 0x710 */ s16 field_0x710;
/* 0x712 */ s16 field_0x712;
/* 0x714 */ s16 field_0x714;
/* 0x716 */ s16 field_0x716;
/* 0x718 */ s16 mHeadRotZ;
/* 0x71A */ s16 mHeadRotY;
/* 0x71C */ int mWaterSplashTimer;
/* 0x720 */ int mWallHitInvulnTimer;
/* 0x724 */ u8 field_0x724[0x728 - 0x724];
/* 0x728 */ int field_0x728;
/* 0x72C */ int field_0x72c;
/* 0x730 */ int mDashCooldownTime;
/* 0x734 */ int mDashTime;
/* 0x738 */ int mGndSpecialCode;
/* 0x73C */ int mSceneType;
/* 0x740 */ int mAction;
/* 0x744 */ int mMode;
/* 0x748 */ int mDemoMode;
/* 0x74C */ int field_0x74c;
/* 0x750 */ int field_0x750;
/* 0x754 */ int field_0x754;
/* 0x758 */ int field_0x758;
/* 0x75C */ char* mArcName;
/* 0x760 */ char* mDemoName;
/* 0x764 */ u32 mShadowId;
/* 0x768 */ dPath* mpPath1;
/* 0x76C */ dPath* mpPath2;
/* 0x770 */ s8 mPathCurrentPointNo;
/* 0x771 */ s8 field_0x771;
/* 0x772 */ s8 mPathStep;
/* 0x773 */ s8 mPathDir;
/* 0x774 */ u8 field_0x774[0x778 - 0x774];
/* 0x778 */ dBgS_AcchCir mAcchCir;
/* 0x7B8 */ dBgS_ObjAcch mObjAcch;
/* 0x990 */ dCcD_Stts mStts;
/* 0x9CC */ dCcD_Sph mSph;
/* 0xB04 */ dCcU_AtInfo mAtInfo;
/* 0xB28 */ u8 field_0xb28[0xb30 - 0xb28];
/* 0xB30 */ u32 field_0xb30;
/* 0xB34 */ u32 field_0xb34;
/* 0xB38 */ u32 field_0xb38;
/* 0xB3C */ u32 field_0xb3c;
/* 0xB40 */ u32 field_0xb40;
/* 0xB44 */ u32 mSibukiEmitterIDs[3];
/* 0xB50 */ u32 mDashSibukiEmitterID;
/* 0xB54 */ u8 mIsHioSet;
/* 0xB58 */ dMsgFlow_c mMsgFlow;
};
STATIC_ASSERT(sizeof(daKago_c) == 0xBA4);
#endif /* D_A_KAGO_H */
|