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
|
#ifndef D_A_E_SM_H
#define D_A_E_SM_H
#include "common.h"
#include "d/a/d_a_base.h"
#include "d/a/e/d_a_en_base.h"
#include "d/a/obj/d_a_obj_bomb.h"
#include "d/col/bg/d_bg_s_acch.h"
#include "d/col/cc/d_cc_d.h"
#include "d/d_jnt_col.h"
#include "d/d_light_env.h"
#include "d/d_shadow.h"
#include "m/m3d/m_anmmatclr.h"
#include "m/m3d/m_anmtexpat.h"
#include "m/m_angle.h"
#include "m/m_vec.h"
#include "s/s_State.hpp"
#include "toBeSorted/d_d3d.h"
#include "toBeSorted/d_emitter.h"
#include "toBeSorted/stage_render_stuff.h"
#include "toBeSorted/time_area_mgr.h"
class dAcEsm_c : public dAcEnBase_c {
public:
enum SmColor_e {
SM_RED = 0,
SM_GREEN = 1,
SM_YELLOW = 2,
SM_RED_ALT = 3,
SM_GREEN_ALT = 4,
SM_YELLOW_ALT = 5,
SM_BLUE = 6
};
enum SmSize_e {
SM_SMALL = 1,
SM_LARGE = 2,
SM_MASSIVE = 3,
SM_TINY = 4
};
struct SmData_c {
mAng field_0x00;
mAng field_0x02;
mVec3_c field_0x04;
mVec3_c field_0x10;
};
public:
dAcEsm_c() : mScnCallback(this), mStateMgr(*this) {}
virtual ~dAcEsm_c() {}
virtual int doDelete();
virtual int draw();
virtual bool createHeap();
virtual int actorCreate();
virtual int actorPostCreate();
virtual int actorExecute();
virtual void registerInEvent();
STATE_FUNC_DECLARE(dAcEsm_c, BaseMother);
STATE_FUNC_DECLARE(dAcEsm_c, Wait);
STATE_FUNC_DECLARE(dAcEsm_c, Walk);
STATE_FUNC_DECLARE(dAcEsm_c, BirthJump);
STATE_FUNC_DECLARE(dAcEsm_c, Shake);
STATE_FUNC_DECLARE(dAcEsm_c, Attack);
STATE_FUNC_DECLARE(dAcEsm_c, Electrical);
STATE_FUNC_DECLARE(dAcEsm_c, Absorption);
STATE_FUNC_DECLARE(dAcEsm_c, Fusion);
STATE_FUNC_DECLARE(dAcEsm_c, Dead);
u8 GetParam_s8_0xFF() {
return mParams >> 8 & 0xFF;
}
u8 GetType() {
int type = mParams >> 0 & 0xF;
return type != 0xF ? type : 0;
}
u8 GetParam_s4_0xF() {
int type = mParams >> 4 & 0xF;
return type != 0xF ? type : 0;
}
f32 GetParam_s16_0xFF() {
int tmp = mParams >> 16 & 0xFF;
return tmp != 0xFF ? tmp * 100.f : 400.f;
}
u8 GetParam_s24_0x7() {
u8 tmp = mParams >> 24 & 0x7;
return tmp != 0x7 ? tmp : 0;
}
public:
void fn_187_5D0();
void fn_187_3F60();
bool fn_187_4090();
void fn_187_4200();
bool fn_187_42C0();
void fn_187_4450(); // fn_187_4450
void fn_187_44C0();
void fn_187_4540(int);
bool fn_187_4B50();
bool fn_187_4C50();
void Set_0xBBC(u8 v);
void fn_187_4CC0();
mAng fn_187_5150(bool);
mAng fn_187_51F0(bool);
u32 fn_187_52A0();
void fn_187_5390();
bool checkSize(SmSize_e) const; // fn_187_5670
void fn_187_5730();
void fn_187_5810();
void fn_187_5940();
bool fn_187_5AC0() const;
void fn_187_61B0(u8);
bool fn_187_6B10();
void fn_187_6C20(bool);
private:
void updateBoundingBox();
void updateMatrix();
bool *getArray() {
return sSomeArray;
}
void setArray(int i) {
sSomeArray[i] = false;
}
private:
/* 0x378 */ d3d::AnmMdlWrapper mMdl;
/* 0x3E8 */ dShadowCircle_c mShadowCircle;
/* 0x3F0 */ m3d::anmTexPat_c mAnmTexPat;
/* 0x41C */ m3d::anmMatClr_c mAnmMatClr;
/* 0x448 */ dScnCallback_c mScnCallback;
/* 0x454 */ dCcD_Sph mSph;
/* 0x5A4 */ dBgS_AcchCir mAcchCir;
/* 0x600 */ dBgS_ObjAcch mObjAcch;
/* 0x9B0 */ STATE_MGR_DECLARE(dAcEsm_c);
/* 0x9EC */ dAcRef_c<dAcBomb_c> mBombRef;
/* 0x9F8 */ dJntCol_c mJntCol;
/* 0xA0C */ dEmitter_c mEffArr[2];
/* 0xA74 */ TimeAreaStruct mTimeArea;
/* 0xA80 */ mVec3_c mPosCopy1;
/* 0xA8C */ mVec3_c mScaleTarget;
/* 0xA98 */ mVec3_c mScaleCopy2;
/* 0xAA4 */ mVec3_c mHitPos;
/* 0xAB0 */ u8 _AB0[0xAC8 - 0xAB0];
/* 0xAC8 */ mVec3_c mHomePos1;
/* 0xAD4 */ mVec3_c mEffPos;
/* 0xAE0 */ dWaterEffect_c mSplashFx;
/* 0xB28 */ mAng3_c mRotUnk;
/* 0xB2E */ mAng mTargetRotX;
/* 0xB30 */ mAng mTargetRotZ;
/* 0xB32 */ u8 _B32[0xB38 - 0xB32];
/* 0xB38 */ mAng3_c mRotCopy;
/* 0xB3E */ mAng mOrigRotZ;
/* 0xB40 */ f32 field_0xB40;
/* 0xB44 */ f32 field_0xB44;
/* 0xB48 */ f32 field_0xB48;
/* 0xB4C */ f32 field_0xB4C;
/* 0xB50 */ f32 field_0xB50;
/* 0xB54 */ f32 field_0xB54;
/* 0xB58 */ f32 field_0xB58;
/* 0xB5C */ f32 field_0xB5C;
/* 0xB60 */ u8 _B60[0xB65 - 0xB60];
/* 0xB65 */ u8 field_0xB65;
/* 0xB66 */ u8 _B66[0xB68 - 0xB66];
/* 0xB68 */ f32 field_0xB68;
/* 0xB6C */ f32 field_0xB6C;
/* 0xB70 */ f32 field_0xB70;
/* 0xB74 */ f32 field_0xB74;
/* 0xB78 */ f32 field_0xB78;
/* 0xB7C */ u32 field_0xB7C;
/* 0xB80 */ f32 field_0xB80;
/* 0xB84 */ f32 field_0xB84;
/* 0xB88 */ u32 field_0xB88;
/* 0xB8C */ f32 field_0xB8C;
/* 0xB90 */ s32 field_0xB90;
/* 0xB94 */ s32 field_0xB94;
/* 0xB98 */ s32 field_0xB98;
/* 0xB9C */ u8 _B9C[0xBA0 - 0xB9C];
/* 0xBA0 */ u32 field_0xBA0;
/* 0xBA4 */ s16 field_0xBA4;
/* 0xBA6 */ s16 field_0xBA6;
/* 0xBA8 */ u16 field_0xBA8;
/* 0xBAA */ u16 field_0xBAA;
/* 0xBAC */ u16 field_0xBAC;
/* 0xBAE */ u16 mTimer_0xBAE;
/* 0xBB0 */ u16 field_0xBB0;
/* 0xBB2 */ u16 field_0xBB2;
/* 0xBB4 */ u16 mDamageTimer;
/* 0xBB6 */ u16 field_0xBB6;
/* 0xBB8 */ u16 field_0xBB8;
/* 0xBB9 */ u8 _BB9[0xBBC - 0xBBA];
/* 0xBBC */ u8 field_0xBBC;
/* 0xBBD */ u8 field_0xBBD;
/* 0xBBE */ u8 mType;
/* 0xBBF */ u8 field_0xBBF;
/* 0xBC0 */ u8 field_0xBC0;
/* 0xBC1 */ u8 field_0xBC1;
/* 0xBC2 */ u8 field_0xBC2;
/* 0xBC3 */ u8 shift8_0xFF;
/* 0xBC4 */ u8 mTimer_0xBC4;
/* 0xBC5 */ u8 field_0xBC5;
/* 0xBC6 */ u8 field_0xBC6;
/* 0xBC7 */ u8 field_0xBC7;
/* 0xBC8 */ u8 field_0xBC8;
/* 0xBC9 */ u8 field_0xBC9;
/* 0xBCA */ u8 field_0xBCA;
/* 0xBCB */ u8 field_0xBCB;
/* 0xBCC */ u8 field_0xBCC;
/* 0xBCD */ u8 field_0xBCD;
/* 0xBCE */ u8 field_0xBCE;
/* 0xBD0 */ LIGHT_INFLUENCE mLightInfo;
static bool sSomeArrayInit;
static bool sSomeArray[9];
static const u16 sEmitterResArr[8];
static const SmData_c sSmDataArr[8];
static s32 sValueFromPlayer;
static s32 sTimer;
};
#endif
|