forked from zeldaret/tp
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathd_a_npc_cd2.h
More file actions
382 lines (337 loc) · 11 KB
/
d_a_npc_cd2.h
File metadata and controls
382 lines (337 loc) · 11 KB
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
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
#ifndef A_NPC_D_A_NPC_CD2_H
#define A_NPC_D_A_NPC_CD2_H
#include "Z2AudioLib/Z2Creature.h"
#include "d/actor/d_a_tag_escape.h"
#include "d/d_npc_lib.h"
#include "d/d_path.h"
#include "dolphin/types.h"
enum {
MdlMANa_e = 0,
MdlMADa_e = 1,
JntM_NUM_e = 0x13,
JntW_NUM_e = 0x15,
};
enum AnmNum {
CD2_ANM_0 = 0,
CD2_ANM_14 = 14,
};
struct daNpcCd2_HIO_Jnt_c : public JORReflexible {
/* 8015A6E8 */ virtual ~daNpcCd2_HIO_Jnt_c() {}
/* 8015A788 */ daNpcCd2_HIO_Jnt_c() {}
void genMessage(JORMContext*);
/* 0x04 */ f32 field_0x04[3];
/* 0x10 */ s16 field_0x10[3];
};
struct daNpcCd2_HIO_MChild_c {
/* 8015A798 */ virtual ~daNpcCd2_HIO_MChild_c() {}
/* 8015A808 */ daNpcCd2_HIO_MChild_c() {}
/* 0x004 */ daNpcCd2_HIO_Jnt_c field_0x004[19];
/* 0x1CE */ s16 mMaxLmtY_BACKBONE;
/* 0x1CA */ s16 mMaxLmtX_BACKBONE;
/* 0x1CC */ s16 mMinLmtY_BACKBONE;
/* 0x1CE */ s16 mMinLmtX_BACKBONE;
/* 0x1D0 */ s16 mMaxLmtY_NECK;
/* 0x1D2 */ s16 mMaxLmtX_NECK;
/* 0x1D4 */ s16 mMinLmtY_NECK;
/* 0x1D6 */ s16 mMinLmtX_NECK;
/* 0x1D0 */ s16 mMaxLmtY_HEAD;
/* 0x1D2 */ s16 mMaxLmtX_HEAD;
/* 0x1D4 */ s16 mMinLmtY_HEAD;
/* 0x1D6 */ s16 mMinLmtX_HEAD;
/* 0x1E0 */ f32 mScale;
/* 0x1E4 */ s16 mAttn;
/* 0x1E8 */ f32 mAnmPlaySpeed;
/* 0x1EC */ f32 mWalkAnmPlaySpeed;
/* 0x1F0 */ f32 mMaxSpeed;
/* 0x1F4 */ f32 mWalkMaxSpeed;
/* 0x1F8 */ f32 mCylH;
/* 0x1FC */ f32 mCylR;
/* 0x200 */ f32 mChkWallH;
/* 0x204 */ f32 mChkWallR;
};
struct daNpcCd2_HIO_WChild_c {
/* 8015A678 */ virtual ~daNpcCd2_HIO_WChild_c() {}
/* 8015A730 */ daNpcCd2_HIO_WChild_c() {}
/* 0x004 */ daNpcCd2_HIO_Jnt_c field_0x004[21];
/* 0x1FE */ s16 mMaxLmtY_BACKBONE;
/* 0x1FA */ s16 mMaxLmtX_BACKBONE;
/* 0x1FC */ s16 mMinLmtY_BACKBONE;
/* 0x1FE */ s16 mMinLmtX_BACKBONE;
/* 0x200 */ s16 mMaxLmtY_NECK;
/* 0x202 */ s16 mMaxLmtX_NECK;
/* 0x204 */ s16 mMinLmtY_NECK;
/* 0x206 */ s16 mMinLmtX_NECK;
/* 0x200 */ s16 mMaxLmtY_HEAD;
/* 0x202 */ s16 mMaxLmtX_HEAD;
/* 0x204 */ s16 mMinLmtY_HEAD;
/* 0x206 */ s16 mMinLmtX_HEAD;
/* 0x218 */ f32 mScale;
/* 0x21C */ s16 mAttn;
/* 0x220 */ f32 mAnmPlaySpeed;
/* 0x224 */ f32 mWalkAnmPlaySpeed;
/* 0x228 */ f32 mMaxSpeed;
/* 0x22C */ f32 mWalkMaxSpeed;
/* 0x230 */ f32 mCylH;
/* 0x234 */ f32 mCylR;
/* 0x238 */ f32 mChkWallH;
/* 0x23C */ f32 mChkWallR;
};
struct daNpcCd2_HIO_c : public fOpAcm_HIO_entry_c {
/* 8015A4D8 */ daNpcCd2_HIO_c();
/* 8015A860 */ virtual ~daNpcCd2_HIO_c() {}
void genMessage(JORMContext*);
/* 0x0004 */ daNpcCd2_HIO_MChild_c field_0x0004[16];
/* 0x20C4 */ daNpcCd2_HIO_WChild_c field_0x20c4[14];
};
extern daNpcCd2_HIO_c l_Cd2_HIO;
inline s16 Cd2_HIO_atnOfs(int param_1) {
s16 rv;
if (param_1 < 16) {
rv = l_Cd2_HIO.field_0x0004[param_1].mAttn;
} else {
rv = l_Cd2_HIO.field_0x20c4[param_1 - 16].mAttn;
}
return rv;
}
inline f32 Cd2_HIO_objScale(int param_1) {
return (f32)(param_1 < 16 ? l_Cd2_HIO.field_0x0004[param_1].mScale : l_Cd2_HIO.field_0x20c4[param_1 - 16].mScale);
}
inline f32 Cd2_HIO_walkMaxSpeed(int param_1) {
f32 rv;
if (param_1 < 16) {
rv = l_Cd2_HIO.field_0x0004[param_1].mWalkMaxSpeed;
} else {
return l_Cd2_HIO.field_0x20c4[param_1 - 16].mWalkMaxSpeed;
}
return rv;
}
inline f32 Cd2_HIO_walkAnmPlaySpeed(int param_1) {
f32 rv;
if (param_1 < 16) {
rv = l_Cd2_HIO.field_0x0004[param_1].mWalkAnmPlaySpeed;
} else {
return l_Cd2_HIO.field_0x20c4[param_1 - 16].mWalkAnmPlaySpeed;
}
return rv;
}
inline f32 Cd2_HIO_maxSpeed(int param_1) {
f32 rv;
if (param_1 < 16) {
rv = l_Cd2_HIO.field_0x0004[param_1].mMaxSpeed;
} else {
return l_Cd2_HIO.field_0x20c4[param_1 - 16].mMaxSpeed;
}
return rv;
}
inline f32 Cd2_HIO_anmPlaySpeed(int param_1) {
return (f32)(param_1 < 16 ? l_Cd2_HIO.field_0x0004[param_1].mAnmPlaySpeed : l_Cd2_HIO.field_0x20c4[param_1 - 16].mAnmPlaySpeed);
}
inline f32 Cd2_HIO_chkWallH(int param_1) {
return param_1 < 16 ? l_Cd2_HIO.field_0x0004[param_1].mChkWallH : l_Cd2_HIO.field_0x20c4[param_1 - 16].mChkWallH;
}
inline f32 Cd2_HIO_chkWallR(int param_1) {
return param_1 < 16 ? l_Cd2_HIO.field_0x0004[param_1].mChkWallR : l_Cd2_HIO.field_0x20c4[param_1 - 16].mChkWallR;
}
inline f32 Cd2_HIO_cylR(int param_1) {
return param_1 < 16 ? l_Cd2_HIO.field_0x0004[param_1].mCylR : l_Cd2_HIO.field_0x20c4[param_1 - 16].mCylR;
}
inline f32 Cd2_HIO_cylH(int param_1) {
return param_1 < 16 ? l_Cd2_HIO.field_0x0004[param_1].mCylH : l_Cd2_HIO.field_0x20c4[param_1 - 16].mCylH;
}
inline int Cd2_HIO_maxLmtX_BACKBONE(int param_1) {
s16 rv;
if (param_1 < 16) {
rv = l_Cd2_HIO.field_0x0004[param_1].mMaxLmtX_BACKBONE;
} else {
rv = l_Cd2_HIO.field_0x20c4[param_1 - 16].mMaxLmtX_BACKBONE;
}
return rv;
}
inline int Cd2_HIO_maxLmtY_BACKBONE(int param_1) {
s16 rv;
if (param_1 < 16) {
rv = l_Cd2_HIO.field_0x0004[param_1].mMaxLmtY_BACKBONE;
} else {
rv = l_Cd2_HIO.field_0x20c4[param_1 - 16].mMaxLmtY_BACKBONE;
}
return rv;
}
inline int Cd2_HIO_maxLmtX_NECK(int param_1) {
s16 rv;
if (param_1 < 16) {
rv = l_Cd2_HIO.field_0x0004[param_1].mMaxLmtX_NECK;
} else {
rv = l_Cd2_HIO.field_0x20c4[param_1 - 16].mMaxLmtX_NECK;
}
return rv;
}
inline int Cd2_HIO_maxLmtY_NECK(int param_1) {
s16 rv;
if (param_1 < 16) {
rv = l_Cd2_HIO.field_0x0004[param_1].mMaxLmtY_NECK;
} else {
rv = l_Cd2_HIO.field_0x20c4[param_1 - 16].mMaxLmtY_NECK;
}
return rv;
}
inline int Cd2_HIO_maxLmtX_HEAD(int param_1) {
s16 rv;
if (param_1 < 16) {
rv = l_Cd2_HIO.field_0x0004[param_1].mMaxLmtX_HEAD;
} else {
rv = l_Cd2_HIO.field_0x20c4[param_1 - 16].mMaxLmtX_HEAD;
}
return rv;
}
inline int Cd2_HIO_maxLmtY_HEAD(int param_1) {
s16 rv;
if (param_1 < 16) {
rv = l_Cd2_HIO.field_0x0004[param_1].mMaxLmtY_HEAD;
} else {
rv = l_Cd2_HIO.field_0x20c4[param_1 - 16].mMaxLmtY_HEAD;
}
return rv;
}
inline int Cd2_HIO_minLmtX_BACKBONE(int param_1) {
s16 rv;
if (param_1 < 16) {
rv = l_Cd2_HIO.field_0x0004[param_1].mMinLmtX_BACKBONE;
} else {
rv = l_Cd2_HIO.field_0x20c4[param_1 - 16].mMinLmtX_BACKBONE;
}
return rv;
}
inline int Cd2_HIO_minLmtY_BACKBONE(int param_1) {
s16 rv;
if (param_1 < 16) {
rv = l_Cd2_HIO.field_0x0004[param_1].mMinLmtY_BACKBONE;
} else {
rv = l_Cd2_HIO.field_0x20c4[param_1 - 16].mMinLmtY_BACKBONE;
}
return rv;
}
inline int Cd2_HIO_minLmtX_NECK(int param_1) {
s16 rv;
if (param_1 < 16) {
rv = l_Cd2_HIO.field_0x0004[param_1].mMinLmtX_NECK;
} else {
rv = l_Cd2_HIO.field_0x20c4[param_1 - 16].mMinLmtX_NECK;
}
return rv;
}
inline int Cd2_HIO_minLmtY_NECK(int param_1) {
s16 rv;
if (param_1 < 16) {
rv = l_Cd2_HIO.field_0x0004[param_1].mMinLmtY_NECK;
} else {
rv = l_Cd2_HIO.field_0x20c4[param_1 - 16].mMinLmtY_NECK;
}
return rv;
}
inline int Cd2_HIO_minLmtX_HEAD(int param_1) {
s16 rv;
if (param_1 < 16) {
rv = l_Cd2_HIO.field_0x0004[param_1].mMinLmtX_HEAD;
} else {
rv = l_Cd2_HIO.field_0x20c4[param_1 - 16].mMinLmtX_HEAD;
}
return rv;
}
inline int Cd2_HIO_minLmtY_HEAD(int param_1) {
s16 rv;
if (param_1 < 16) {
rv = l_Cd2_HIO.field_0x0004[param_1].mMinLmtY_HEAD;
} else {
rv = l_Cd2_HIO.field_0x20c4[param_1 - 16].mMinLmtY_HEAD;
}
return rv;
}
class PathTrace_c {
public:
/* 80159A38 */ bool setPath(int, int, int, cXyz*, bool);
/* 80159C14 */ bool checkPoint(cXyz, f32);
/* 80159DC0 */ bool checkPathEnd(cXyz, f32);
/* 80159E54 */ void getTargetPoint(Vec*);
/* 80159ECC */ void setAvoidPoint();
/* 8015A0D0 */ void setNextPoint();
/* 80159F98 */ void setNextPoint(cXyz&);
/* 8015A264 */ int incIndex(int);
/* 8015A294 */ int decIndex(int);
/* 8015A370 */ fopAc_ac_c* checkObstacle(fopAc_ac_c*);
/* 8015A3E4 */ void checkObstacleSub(fopAc_ac_c*);
void getAvoidPoint(Vec* avoidPoint) { *avoidPoint = mAvoidPoint; }
BOOL isClose() { return dPath_ChkClose(mPath); }
bool isPath() { return mPath != NULL; }
s8 getArg0() { return mPath->m_points[field_0x20].mArg0; }
s8 getArg1() { return mPath->m_points[field_0x20].mArg1; }
Vec getPoint(int index) { return mPath->m_points[index].m_position; }
void setLastPointNum() { field_0x20 = mPath->m_num - 1; }
u16 getLastPointNum() {
u32 rv;
if (field_0x24 == 1) {
rv = mPath->m_num - 1;
} else {
return 0;
}
return rv;
}
/* 0x00 */ fopAc_ac_c* mMyself;
/* 0x04 */ fopAc_ac_c* mObstacle;
/* 0x08 */ dPath* mPath;
/* 0x0C */ Vec mAvoidPoint;
/* 0x18 */ f32 field_0x18;
/* 0x1C */ f32 mNextPoint;
/* 0x20 */ int field_0x20;
/* 0x24 */ s8 field_0x24;
};
class daNpcCd2_c : public fopAc_ac_c {
public:
/* 80157D00 */ int NpcCreate(int);
/* 80157F28 */ J3DModel* ObjCreate(int);
/* 80157F68 */ J3DModel* ChairCreate(f32);
/* 801580A8 */ bool isM_();
/* 801580F0 */ J3DAnmTransform* getAnmP(int, int);
/* 80158420 */ int setAttention(int);
/* 80158BB8 */ int loadResrc(int, int);
/* 80158CBC */ int removeResrc(int, int);
/* 80158D88 */ void setEnvTevCol();
/* 80158DE4 */ void setRoomNo();
/* 80158E28 */ void animation(int);
/* 80158F00 */ void setAnm(J3DAnmTransformKey*, f32, f32, int, int, int);
/* 80158F6C */ int drawShadow(f32);
/* 80158FF0 */ int drawObj(int, J3DModel*, f32);
/* 801590FC */ int drawNpc();
/* 80159258 */ int jntNodeCB(J3DJoint*, J3DModel*);
/* 80159550 */ void setHitodamaParticle();
/* 801597C0 */ daTagEscape_c* getEscapeTag();
/* 80159818 */ bool checkFearSituation();
/* 801598E8 */ J3DModelData* getNpcMdlDataP(int);
/* 8015994C */ J3DModelData* getObjMdlDataP(int);
/* 801599C4 */ J3DAnmTexPattern* getTexAnmP(int);
/* 8097F030 */ virtual ~daNpcCd2_c() {}
static dCcD_SrcCyl const m_cylDat;
/* 0x56C */ request_of_phase_process_class mPhase1;
/* 0x574 */ request_of_phase_process_class mPhase2;
/* 0x57C */ request_of_phase_process_class mPhase3;
/* 0x584 */ request_of_phase_process_class mPhase4;
/* 0x58C */ mDoExt_McaMorfSO* mpMorf;
/* 0x590 */ mDoExt_btpAnm* mpBtpAnm;
/* 0x594 */ Z2CreatureCitizen mCitizen;
/* 0x638 */ dBgS_ObjAcch mAcch;
/* 0x810 */ dBgS_AcchCir mAcchCir;
/* 0x850 */ dCcD_Stts mStts;
/* 0x88C */ dCcD_Cyl mCyl;
/* 0x9C8 */ dNpcLib_lookat_c mLookat;
/* 0xA98 */ int m_type;
/* 0xA9C */ int field_0xa9c;
/* 0xAA4 */ int field_0xaa0;
/* 0xAA4 */ int field_0xaa4;
/* 0xAA8 */ int mHitodamaEmitters[2];
/* 0xAB0 */ daTagEscape_c* mEscapeTag;
/* 0xAB4 */ cXyz field_0xab4;
/* 0xAC0 */ s16 field_0xac0;
/* 0xAC2 */ s16 field_0xac2;
/* 0xAC4 */ s16 field_0xac4;
/* 0xAC6 */ bool mIsDarkWorld;
};
#endif /* A_NPC_D_A_NPC_CD2_H */