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
|
#ifndef D_A_BOMB_2_H
#define D_A_BOMB_2_H
#include "f_op/f_op_actor.h"
#include "d/d_particle.h"
#include "d/d_bg_s_acch.h"
#include "d/d_cc_d.h"
#include "d/actor/d_a_bomb.h"
#include "m_Do/m_Do_ext.h"
#include "m_Do/m_Do_ext.h"
namespace daBomb2 {
class FuseSmokeCB_c : public dPa_levelEcallBack {
public:
FuseSmokeCB_c() {}
virtual ~FuseSmokeCB_c() {}
void setOldPosP(const cXyz*, const cXyz*);
void deleteCallBack();
void execute(JPABaseEmitter*);
void executeAfter(JPABaseEmitter*);
void draw(JPABaseEmitter*);
void setup(JPABaseEmitter*, cXyz const*, csXyz const*, s8);
/* 0x04 */ s16 field_0x04;
/* 0x08 */ const cXyz* mpPos;
/* 0x0C */ const cXyz* field_0x0C;
/* 0x10 */ const cXyz* field_0x10;
/* 0x14 */ JPABaseEmitter* mpEmitter;
}; // Size 0x18
class FuseSparksCB_c : public dPa_levelEcallBack {
public:
FuseSparksCB_c() {}
virtual ~FuseSparksCB_c() {}
void deleteCallBack();
void execute(JPABaseEmitter*);
void draw(JPABaseEmitter*);
void setup(JPABaseEmitter*, cXyz const*, csXyz const*, s8);
/* 0x04 */ const cXyz* mpPos;
/* 0x08 */ JPABaseEmitter* mpEmitter;
}; // Size 0x0C
class Env_c {
public:
void set(const cXyz&);
void clean();
bool is_end() const;
void proc(const cXyz&);
private:
/* 0x00 */ LIGHT_INFLUENCE mPntLight;
/* 0x20 */ WIND_INFLUENCE mPntWind;
/* 0x4C */ u8 field_0x4C;
/* 0x50 */ f32 field_0x50;
}; // Size 0x54
enum Start_e {
Start_UNK0_e,
Start_UNK1_e,
Start_UNK2_e,
};
class Act_c : public fopAc_ac_c {
public:
void prm_get_start() const {}
void prm_get_stick() const {}
static u32 prm_make(Start_e start, bool param) { // Might be wrong
return start | ((param ? 1 : 0) << 8);
}
Act_c();
//d_a_bomb_static functions
void remove_fuse_effect();
void set_time(int);
int get_time() const;
bool chk_eat() const;
void set_eat();
void set_no_hit();
bool chk_explode();
static BOOL solidHeapCB(fopAc_ac_c*);
bool create_heap_nut();
bool create_heap();
void crr_init();
void cc_init();
void start_explode_instant();
void start_explode_interval();
void start_carry();
void start_proc_call();
void create_init();
cPhs_State _create();
bool _delete();
void set_mtx();
void init_mtx();
void cc_set();
void camera_lockoff() const;
void posMoveF();
void bgCrrPos();
void bgCrrPos_lava();
void bgCrrPos_water();
bool chk_water_in() const;
bool chk_lava_in() const;
void setRoomInfo();
void bound(float);
void set_nut_exp_interval();
void anm_play();
void set_wind_vec();
void eff_explode();
void eff_explode_normal(const csXyz*);
void eff_explode_water();
void eff_fuse_init();
void eff_fuse_start();
void eff_fuse_move();
void eff_fuse_end();
void eff_water_splash();
void se_fall_water();
void se_explode();
void se_explode_water();
void se_ignition();
void set_sound_env(int, int);
bool chk_exp_cc_nut();
bool chk_exp_cc();
bool chk_exp_bg_nut();
bool chk_exp_bg();
bool chk_exp_timer();
bool chk_sink_bg_nut();
bool chk_sink_bg();
u8 chk_exp_pre();
u8 chk_exp_post();
u8 chk_sink_post();
void set_real_shadow_flag();
void carry_fuse_start();
void on_carry();
void off_carry();
void mode_wait_init();
void mode_wait();
void mode_carry_init();
void mode_carry();
void mode_explode_init();
void mode_explode();
void mode_sink_init();
void mode_sink();
void mode_proc_call();
void tensor_init();
void vib_init();
void vib_proc();
void set_vib_tensor();
void tensor_wait();
void tensor_wait_drop();
void tensor_wait_ground();
void tensor_carry();
void tensor_explode();
void tensor_sink();
void tensor_proc_call();
bool _execute();
bool is_draw();
void draw_nut();
void draw_shadow();
bool _draw();
enum Prm_e {
PRM_1_W = 1,
PRM_1_S = 0x08,
PRM_2_W = 2,
PRM_2_S = 0x00,
};
private:
/* 0x290 */ request_of_phase_process_class mPhase;
/* 0x298 */ J3DModel* mpModel;
/* 0x29C */ mDoExt_bckAnm mBck0;
/* 0x2AC */ mDoExt_brkAnm mBrk0;
/* 0x2C4 */ dBgS_BombAcch mAcch;
/* 0x488 */ dBgS_AcchCir mCir;
/* 0x4C8 */ dBgS_ObjGndChk_Yogan mGndChk;
/* 0x51C */ f32 field_0x51C;
/* 0x520 */ f32 field_0x520;
/* 0x524 */ bool field_0x524;
/* 0x525 */ bool mbWaterIn;
/* 0x526 */ u8 field_0x526;
/* 0x528 */ f32 field_0x528;
/* 0x52C */ dCcD_Stts mStts;
/* 0x568 */ dCcD_Sph mSph;
/* 0x694 */ int mState;
/* 0x698 */ int field_0x698;
/* 0x69C */ FuseSmokeCB_c mSmoke;
/* 0x6B4 */ FuseSparksCB_c mSparks;
/* 0x6C0 */ cXyz field_0x6C0;
/* 0x6CC */ cXyz field_0x6CC;
/* 0x6D8 */ cXyz field_0x6D8;
/* 0x6E4 */ Env_c mEnv;
/* 0x738 */ int mBombTimer;
/* 0x73C */ int field_0x73C;
/* 0x740 */ u8 field_0x740;
/* 0x741 */ u8 field_0x741;
/* 0x742 */ u8 field_0x742;
/* 0x743 */ u8 field_0x743;
/* 0x744 */ bool field_0x744;
/* 0x745 */ bool field_0x745;
/* 0x748 */ cXyz mWindVec;
/* 0x754 */ Mtx field_0x754;
/* 0x784 */ f32 field_0x784;
/* 0x788 */ f32 field_0x788;
/* 0x78C */ f32 field_0x78C;
/* 0x790 */ f32 field_0x790;
/* 0x794 */ f32 field_0x794;
/* 0x798 */ f32 field_0x798;
/* 0x79C */ f32 field_0x79C;
/* 0x7A0 */ f32 field_0x7A0;
/* 0x7A4 */ f32 field_0x7A4;
/* 0x7A8 */ s32 field_0x7A8;
static dCcD_SrcSph M_sph_src;
}; // Size 0x7AC
}
#endif /* D_A_BOMB_2_H */
|