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
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
|
#ifndef D_A_OBJ_IVY_ROPE_H
#define D_A_OBJ_IVY_ROPE_H
#include "common.h"
#include "d/a/obj/d_a_obj_base.h"
#include "d/col/c/c_cc_d.h"
#include "d/col/cc/d_cc_d.h"
#include "d/d_rope_model.h"
#include "d/d_shadow.h"
#include "m/m3d/m_smdl.h"
#include "m/m_angle.h"
#include "m/m_vec.h"
#include "s/s_State.hpp"
#include "toBeSorted/actor_event.h"
#include "toBeSorted/attention.h"
#include "toBeSorted/d_path.h"
class dAcOivyRope_c : public dAcObjBase_c {
public:
dAcOivyRope_c() : field_0x330(0), mStateMgr(*this), mStts2(this), mEvent(*this, nullptr) {}
virtual ~dAcOivyRope_c();
virtual int create() override;
virtual int doDelete() override;
virtual int draw() override;
virtual bool createHeap() override;
virtual int actorExecute() override;
virtual int actorExecuteInEvent() override;
virtual void registerInEvent() override;
virtual bool canBeLinkedToWoodTag() override;
virtual bool drop() override;
STATE_FUNC_DECLARE(dAcOivyRope_c, RopeWait);
STATE_FUNC_DECLARE(dAcOivyRope_c, PlayerGrip);
STATE_FUNC_DECLARE(dAcOivyRope_c, RopeReturn);
STATE_FUNC_DECLARE(dAcOivyRope_c, RopeCut);
STATE_FUNC_DECLARE(dAcOivyRope_c, TerryRopeWait);
STATE_FUNC_DECLARE(dAcOivyRope_c, TerryRopeUp);
STATE_FUNC_DECLARE(dAcOivyRope_c, TerryRopeDown);
STATE_FUNC_DECLARE(dAcOivyRope_c, TerryRopeInit);
STATE_FUNC_DECLARE(dAcOivyRope_c, TerryRopePlayerCarry);
void initTightRope();
void fn_256_10C0();
UNKTYPE fn_256_11A0(UNKTYPE);
UNKTYPE fn_256_1240(UNKTYPE);
UNKTYPE fn_256_1480(UNKTYPE);
UNKTYPE fn_256_2160(UNKTYPE);
void fn_256_26B0(int, bool, f32);
UNKTYPE fn_256_2C40(UNKTYPE);
UNKTYPE fn_256_2D00(UNKTYPE);
UNKTYPE fn_256_2DC0(UNKTYPE);
UNKTYPE fn_256_2EA0(UNKTYPE);
void fn_256_30A0(mVec3_c &out);
UNKTYPE fn_256_33B0(UNKTYPE);
UNKTYPE fn_256_34B0(UNKTYPE);
UNKTYPE fn_256_3540(UNKTYPE);
UNKTYPE fn_256_35E0(UNKTYPE);
UNKTYPE fn_256_36A0(UNKTYPE);
UNKTYPE fn_256_3770(UNKTYPE);
UNKTYPE fn_256_3A20(UNKTYPE);
UNKTYPE fn_256_3B90(UNKTYPE);
UNKTYPE calcDistance(UNKTYPE);
UNKTYPE fn_256_3E30(UNKTYPE);
UNKTYPE fn_256_3E70(UNKTYPE);
UNKTYPE fn_256_3F60(UNKTYPE);
UNKTYPE fn_256_43B0(UNKTYPE);
UNKTYPE fn_256_4520(UNKTYPE);
UNKTYPE fn_256_4760(UNKTYPE);
UNKTYPE fn_256_4C80(UNKTYPE);
UNKTYPE fn_256_4CA0(UNKTYPE);
int createBase();
UNKTYPE fn_256_5190(UNKTYPE);
UNKTYPE fn_256_5590(UNKTYPE);
UNKTYPE fn_256_57F0(UNKTYPE);
UNKTYPE fn_256_5B00(UNKTYPE);
UNKTYPE fn_256_5B64(UNKTYPE);
UNKTYPE fn_256_5B70(UNKTYPE);
UNKTYPE fn_256_5DB0(UNKTYPE);
UNKTYPE fn_256_5FF0(UNKTYPE);
UNKTYPE fn_256_6100(UNKTYPE);
UNKTYPE fn_256_61F0(UNKTYPE);
UNKTYPE fn_256_7300(UNKTYPE);
UNKTYPE fn_256_7310(UNKTYPE);
UNKTYPE fn_256_73D0(UNKTYPE);
UNKTYPE fn_256_7560(UNKTYPE);
UNKTYPE fn_256_7680(UNKTYPE);
UNKTYPE fn_256_7D50(UNKTYPE);
UNKTYPE fn_256_8060(UNKTYPE);
UNKTYPE fn_256_8590(UNKTYPE);
UNKTYPE fn_256_8990(UNKTYPE);
UNKTYPE fn_256_8D10(UNKTYPE);
void fn_256_9120(u16);
UNKTYPE fn_256_9280(UNKTYPE);
UNKTYPE fn_256_9450(UNKTYPE);
UNKTYPE fn_256_9C80(UNKTYPE);
UNKTYPE fn_256_A040(UNKTYPE);
void fn_256_A2C0(bool);
bool fn_256_A750(bool bool0, f32 float0);
f32 fn_256_AA40();
f32 fn_256_AAB0(f32, f32);
int fn_256_AAF0(f32, f32);
void fn_256_ABA0();
void fn_256_AC00();
void fn_256_AE00();
void fn_256_B2B0();
void fn_256_BAB0(mVec3_c &out, int idx, s16 xRot, s16 yRot);
void fn_256_BB70();
void fn_256_BE80();
void fn_256_BFF0(int, f32, f32);
f32 fn_256_C200(int);
void fn_256_C410();
bool fn_256_C6F0();
void fn_256_C740();
void fn_256_C810(mVec3_c &pOut, int idx);
void fn_256_C960();
void fn_256_C980(f32, f32);
UNKTYPE fn_256_C9B0(UNKTYPE);
void fn_256_CD40();
void fn_256_CE20(f32 *, f32 *, f32 *);
void fn_256_CFA0(bool);
void fn_256_D050();
void fn_256_D110();
void fn_256_D1B0();
void fn_256_D2B0();
void fn_256_D3D0(mVec3_c &pOut1, mVec3_c &pOut2, s16 param2, bool bool0, f32 float0);
const mVec3_c &fn_256_D730(s32 idx); // Get Path Point
void fn_256_D7A0(s32, const mVec3_c &); // Set Path Point
void fn_256_D850(); // Draw Shadow
void fn_256_DAA0(bool, bool, f32, f32);
void fn_256_DE80();
void fn_256_DEE0();
u32 fn_256_DF30();
void fn_256_E3E0();
bool fn_256_E790();
bool checkSubtype(u32 sub) {
return mSubtype == sub;
}
mVec3_c *getPnts2() {
return mPnts2;
}
mVec3_c &getTightRopeEnd() {
return mTightropeEnd;
}
mVec3_c &getTightRopeStart() {
return mTightropeStart;
}
bool getField_0x1002() {
return field_0x1002;
}
bool getField_0x1087() {
return field_0x1087;
}
static const f32 lbl_256_rodata_40;
private:
/* 0x 330 */ UNKWORD field_0x330;
/* 0x 334 */ m3d::smdl_c mMdlArr[2];
/* 0x 36C */ dShadowCircle_c mShadow;
/* 0x 374 */ dCcD_Sph mSph;
/* 0x 4C4 */ dCcD_Cps mCps1;
/* 0x 634 */ dCcD_Cps mCps2;
/* 0x 7A4 */ dCcD_Cps mCpsArr[3];
/* 0x BF4 */ dCcD_Cyl mCyl;
/* 0x D44 */ STATE_MGR_DECLARE(dAcOivyRope_c);
/* 0x D80 */ dMultiMat_c mRopeMdl;
/* 0x DCC */ dSkinMat_c mCoilMdl;
/* 0x E24 */ dMultiMat_c mRopeMdl2;
/* 0x E70 */ ActorOnRail3 mPath;
/* 0x E88 */ u8 _E88[0xE94 - 0xE88];
/* 0x E94 */ cCcD_Stts mStts2;
/* 0x ED0 */ ActorEventRelated mEvent;
/* 0x F20 */ mVec3_c mTightropeEnd;
/* 0x F2C */ mVec3_c mTightropeStart;
/* 0x F38 */ mVec3_c field_0xF38;
/* 0x F44 */ mVec3_c field_0xF44;
/* 0x F50 */ mVec3_c field_0xF50;
/* 0x F5C */ u8 _F5C[0xF68 - 0xF5C];
/* 0x F68 */ mVec3_c field_0xF68;
/* 0x F74 */ u8 _F74[0xFA4 - 0xF74];
/* 0x FA4 */ f32 field_0xFA4;
/* 0x FA8 */ f32 field_0xFA8;
/* 0x FAC */ f32 field_0xFAC;
/* 0x FB0 */ f32 field_0xFB0;
/* 0x FB4 */ f32 field_0xFB4;
/* 0x FB8 */ f32 mDistance;
/* 0x FBC */ f32 mOldDistance;
/* 0x FC0 */ UNKWORD field_0xFC0;
/* 0x FC4 */ f32 field_0xFC4;
/* 0x FC8 */ UNKWORD field_0xFC8;
/* 0x FCC */ mAng field_0xFCC;
/* 0x FCE */ u16 field_0xFCE;
/* 0x FD0 */ u8 _FD0[0xFD2 - 0xFD0];
/* 0x FD2 */ s16 field_0xFD2;
/* 0x FD4 */ s16 field_0xFD4;
/* 0x FD6 */ s16 field_0xFD6;
/* 0x FD8 */ s16 field_0xFD8;
/* 0x FDA */ mAng field_0xFDA;
/* 0x FDC */ s16 field_0xFDC;
/* 0x FDA */ u8 _FDE[0xFE2 - 0xFDE];
/* 0x FE2 */ s16 field_0xFE2;
/* 0x FE4 */ u8 mDropsceneFlag;
/* 0x FE5 */ u8 mWoodTagSceneflag;
/* 0x FE6 */ u8 mSegmentCount;
/* 0x FE7 */ u8 mSubtype;
/* 0x FE8 */ bool mbField_0xFE8;
/* 0x FE9 */ u8 field_0xFE9;
/* 0x FEA */ u8 field_0xFEA;
/* 0x FEB */ u8 field_0xFEB;
/* 0x FEC */ u8 field_0xFEC;
/* 0x FED */ u8 mEventIdx;
/* 0x FEE */ u8 field_0xFEE;
/* 0x FEF */ u8 field_0xFEF;
/* 0x FF0 */ u8 field_0xFF0[4];
/* 0x FF4 */ u8 field_0xFF4;
/* 0x FF5 */ u8 field_0xFF5;
/* 0x FF6 */ u8 field_0xFF6;
/* 0x FF7 */ u8 field_0xFF7;
/* 0x FF8 */ u8 field_0xFF8;
/* 0x FF9 */ u8 _FF9[0x1002 - 0xFF9];
/* 0x1002 */ bool field_0x1002;
/* 0x1003 */ u8 _1003[0x1005 - 0x1003];
/* 0x1005 */ u8 field_0x1005;
/* 0x1006 */ u8 _1006[0x1010 - 0x1006];
/* 0x1010 */ mVec3_c field_0x1010;
/* 0x101C */ mVec3_c field_0x101C;
/* 0x1028 */ f32 field_0x1028;
/* 0x102C */ f32 field_0x102C;
/* 0x1030 */ mAng field_0x1030;
/* 0x1032 */ mAng field_0x1032;
/* 0x1034 */ u8 _1034[0x1038 - 0x1034];
/* 0x1038 */ u8 field_0x1038;
/* 0x1039 */ u8 field_0x1039; // TODO make field enum
/* 0x103A */ s8 field_0x103A;
/* 0x103B */ u8 field_0x103B;
/* 0x103C */ u8 field_0x103C;
/* 0x103D */ u8 field_0x103D;
/* 0x103E */ bool mDropped;
/* 0x1040 */ f32 field_0x1040;
/* 0x1044 */ u8 _1044[0x1050 - 0x1044];
/* 0x1050 */ f32 field_0x1050;
/* 0x1054 */ u8 _1054[0x105E - 0x1054];
/* 0x105E */ u8 field_0x105E;
/* 0x105F */ u8 field_0x105F;
/* 0x1060 */ u8 field_0x1060;
/* 0x1061 */ u8 field_0x1061;
/* 0x1062 */ u8 field_0x1062;
/* 0x1064 */ f32 field_0x1064;
/* 0x1068 */ f32 field_0x1068;
/* 0x106C */ f32 field_0x106C;
/* 0x1070 */ u8 _1070[0x1083 - 0x1070];
/* 0x1083 */ u8 field_0x1083;
/* 0x1084 */ u8 _1084[0x1087 - 0x1084];
/* 0x1087 */ bool field_0x1087;
/* 0x1088 */ dCcD_Cps mCpsArr2[16];
/* 0x2788 */ mVec3_c *mPnts1;
/* 0x278C */ mVec3_c *mPnts2;
/* 0x2790 */ u16 field_0x2790;
/* 0x2792 */ u8 field_0x2792;
/* 0x2793 */ bool mbField_0x2793;
/* 0x2794 */ u8 _2794[0x27C0 - 0x2794];
/* 0x27C0 */ f32 field_0x27C0;
/* 0x27C4 */ bool mbField_0x27C4;
/* 0x27C5 */ bool mbField_0x27C5;
static InteractionTargetDef sInteraction;
static dCcD_SrcCps sCpsSrc;
static dCcD_SrcSph sSphSrc;
static dCcD_SrcCyl sCylSrc;
};
#endif
|