Skip to content

Commit 861e99c

Browse files
authored
d_a_npc_cd2 work (#2336)
1 parent 02ded44 commit 861e99c

File tree

5 files changed

+804
-921
lines changed

5 files changed

+804
-921
lines changed

include/d/actor/d_a_npc_cd2.h

Lines changed: 43 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,34 +3,51 @@
33

44
#include "Z2AudioLib/Z2Creature.h"
55
#include "d/d_npc_lib.h"
6+
#include "d/d_path.h"
67
#include "dolphin/types.h"
78

9+
enum {
10+
MdlMANa_e = 0,
11+
MdlMADa_e = 1,
12+
JntM_NUM_e = 0x13,
13+
JntW_NUM_e = 0x15,
14+
};
15+
816
class PathTrace_c {
917
public:
10-
/* 80159A38 */ void setPath(int, int, int, cXyz*, bool);
11-
/* 80159C14 */ void checkPoint(cXyz, f32);
12-
/* 80159DC0 */ void checkPathEnd(cXyz, f32);
18+
/* 80159A38 */ BOOL setPath(int, int, int, cXyz*, bool);
19+
/* 80159C14 */ bool checkPoint(cXyz, f32);
20+
/* 80159DC0 */ bool checkPathEnd(cXyz, f32);
1321
/* 80159E54 */ void getTargetPoint(Vec*);
1422
/* 80159ECC */ void setAvoidPoint();
1523
/* 8015A0D0 */ void setNextPoint();
1624
/* 80159F98 */ void setNextPoint(cXyz&);
17-
/* 8015A264 */ void incIndex(int);
18-
/* 8015A294 */ void decIndex(int);
25+
/* 8015A264 */ int incIndex(int);
26+
/* 8015A294 */ int decIndex(int);
1927
/* 8015A370 */ fopAc_ac_c* checkObstacle(fopAc_ac_c*);
20-
/* 8015A3E4 */ void* checkObstacleSub(fopAc_ac_c*);
28+
/* 8015A3E4 */ void checkObstacleSub(fopAc_ac_c*);
29+
30+
void getAvoidPoint(Vec* avoidPoint) { *avoidPoint = mAvoidPoint; }
31+
BOOL isClose() { return dPath_ChkClose(mPath); }
2132

22-
/* 0x00 */ fopAc_ac_c* field_0x00;
23-
/* 0x04 */ fopAc_ac_c* field_0x04;
33+
/* 0x00 */ fopAc_ac_c* mMyself;
34+
/* 0x04 */ fopAc_ac_c* mObstacle;
35+
/* 0x08 */ dPath* mPath;
36+
/* 0x0C */ Vec mAvoidPoint;
37+
/* 0x18 */ f32 field_0x18;
38+
/* 0x1C */ f32 mNextPoint;
39+
/* 0x20 */ int field_0x20;
40+
/* 0x24 */ s8 field_0x24;
2441
};
2542

2643
class daNpcCd2_c : public fopAc_ac_c {
2744
public:
28-
/* 80157D00 */ void NpcCreate(int);
45+
/* 80157D00 */ int NpcCreate(int);
2946
/* 80157F28 */ J3DModel* ObjCreate(int);
30-
/* 80157F68 */ void ChairCreate(f32);
47+
/* 80157F68 */ J3DModel* ChairCreate(f32);
3148
/* 801580A8 */ bool isM_();
3249
/* 801580F0 */ void* getAnmP(int, int);
33-
/* 80158420 */ void setAttention(int);
50+
/* 80158420 */ int setAttention(int);
3451
/* 80158BB8 */ int loadResrc(int, int);
3552
/* 80158CBC */ int removeResrc(int, int);
3653
/* 80158D88 */ void setEnvTevCol();
@@ -40,13 +57,13 @@ class daNpcCd2_c : public fopAc_ac_c {
4057
/* 80158F6C */ int drawShadow(f32);
4158
/* 80158FF0 */ int drawObj(int, J3DModel*, f32);
4259
/* 801590FC */ int drawNpc();
43-
/* 80159258 */ void jntNodeCB(J3DJoint*, J3DModel*);
60+
/* 80159258 */ int jntNodeCB(J3DJoint*, J3DModel*);
4461
/* 80159550 */ void setHitodamaParticle();
4562
/* 801597C0 */ void* getEscapeTag();
46-
/* 80159818 */ void checkFearSituation();
47-
/* 801598E8 */ void getNpcMdlDataP(int);
63+
/* 80159818 */ bool checkFearSituation();
64+
/* 801598E8 */ J3DModelData* getNpcMdlDataP(int);
4865
/* 8015994C */ J3DModelData* getObjMdlDataP(int);
49-
/* 801599C4 */ void getTexAnmP(int);
66+
/* 801599C4 */ J3DAnmTexPattern* getTexAnmP(int);
5067
/* 8097F030 */ virtual ~daNpcCd2_c();
5168

5269
static u8 const m_cylDat[68];
@@ -63,7 +80,17 @@ class daNpcCd2_c : public fopAc_ac_c {
6380
/* 0x850 */ dCcD_Stts mStts;
6481
/* 0x88C */ dCcD_Cyl mCyl;
6582
/* 0x9C8 */ dNpcLib_lookat_c mLookat;
66-
/* 0xA98 */ u8 field_0xa98[0xAC4 - 0xA98];
83+
/* 0xA98 */ int field_0xa98;
84+
/* 0xA9C */ u8 field_0xa9c[0xAA0 - 0xA9C];
85+
/* 0xAA4 */ int field_0xaa0;
86+
/* 0xAA4 */ int field_0xaa4;
87+
/* 0xAA8 */ int mHitodamaEmitters[2];
88+
/* 0xAB0 */ int field_0xab0;
89+
/* 0xAB4 */ f32 field_0xab4;
90+
/* 0xAB8 */ f32 field_0xab8;
91+
/* 0xABC */ f32 field_0xabc;
92+
/* 0xAC0 */ s16 field_0xac0;
93+
/* 0xAC2 */ s16 field_0xac2;
6794
/* 0xAC4 */ s16 field_0xac4;
6895
/* 0xAC6 */ bool field_0xac6;
6996
};

include/d/actor/d_a_npc_cdn3.h

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#ifndef D_A_NPC_CDN3_H
22
#define D_A_NPC_CDN3_H
33

4-
#include "d/actor/d_a_npc.h"
4+
#include "d/actor/d_a_npc_cd2.h"
55
#include "d/actor/d_a_tag_schedule.h"
66

77
/**
@@ -12,8 +12,9 @@
1212
* @details
1313
*
1414
*/
15-
class daNpcCdn3_c : public fopAc_ac_c {
15+
class daNpcCdn3_c : public daNpcCd2_c {
1616
public:
17+
typedef void (daNpcCdn3_c::*actionFunc)();
1718

1819
struct Mode_e {};
1920

@@ -86,7 +87,7 @@ class daNpcCdn3_c : public fopAc_ac_c {
8687
/* 8097D748 */ void execute();
8788
/* 8097DABC */ void checkTimeSchedule();
8889

89-
static u8 ActionTable[192];
90+
static actionFunc ActionTable[16];
9091
static void* m_funcTbl[44];
9192
static u8 m_seq00_funcTbl[24];
9293
static u8 m_seq01_funcTbl[24];
@@ -134,7 +135,7 @@ class daNpcCdn3_c : public fopAc_ac_c {
134135
static u8 m_seq43_funcTbl[36];
135136

136137
private:
137-
/* 0x568 */ u8 field_0x568[0xb9c - 0x568];
138+
/* 0x568 */ u8 field_0x568[0xb9c - 0xAC8];
138139
};
139140

140141
STATIC_ASSERT(sizeof(daNpcCdn3_c) == 0xb9c);

include/m_Do/m_Do_ext.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -336,6 +336,8 @@ class mDoExt_McaMorfSO : public mDoExt_morf_c {
336336
void onMorfNone() { mMorfNone = true; }
337337
J3DTransformInfo* getOldTransInfo() { return mpTransformInfo; }
338338
Quaternion* getOldQuaternion() { return mpQuat; }
339+
void offTranslate() { mTranslate = true; }
340+
void setTranslateScale(const cXyz& scale) { mTranslateScale = scale; }
339341

340342
private:
341343
/* 0x38 */ mDoExt_McaMorfCallBack1_c* mpCallback1;

0 commit comments

Comments
 (0)