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
|
#ifndef D_A_NPC_YAMID_H
#define D_A_NPC_YAMID_H
#include "d/actor/d_a_npc.h"
/**
* @ingroup actors-npcs
* @class daNpc_yamiD_c
* @brief Twili (Fat)
*
* @details
*
*/
struct daNpc_yamiD_HIOParam {
/* 0x0 */ daNpcT_HIOParam common;
};
class daNpc_yamiD_Param_c {
public:
virtual ~daNpc_yamiD_Param_c() {}
static daNpc_yamiD_HIOParam const m;
};
#if DEBUG
class daNpc_yamiD_HIO_c : public mDoHIO_entry_c {
public:
daNpc_yamiD_HIO_c();
void listenPropertyEvent(const JORPropertyEvent*);
void genMessage(JORMContext*);
daNpc_yamiD_HIOParam m;
};
#define NPC_YAMID_HIO_CLASS daNpc_yamiD_HIO_c
#else
#define NPC_YAMID_HIO_CLASS daNpc_yamiD_Param_c
#endif
class daNpc_yamiD_c : public daNpcT_c {
public:
typedef BOOL (daNpc_yamiD_c::*cutFunc)(int);
typedef int (daNpc_yamiD_c::*actionFunc)(void*);
~daNpc_yamiD_c();
cPhs_Step create();
int CreateHeap();
int Delete();
int Execute();
int Draw();
static int createHeapCallBack(fopAc_ac_c*);
static int ctrlJointCallBack(J3DJoint*, int);
u8 getType();
u32 getFlowNodeNo();
BOOL isDelete();
void reset();
void afterJntAnm(int);
void setParam();
void setAfterTalkMotion();
void srchActors();
BOOL evtTalk();
BOOL evtCutProc();
void action();
void beforeMove();
void setAttnPos();
void setCollision();
int drawDbgInfo();
void drawGhost();
int selectAction();
BOOL chkAction(int (daNpc_yamiD_c::*)(void*));
int setAction(int (daNpc_yamiD_c::*)(void*));
int wait(void*);
int talk(void*);
BOOL cutStopper(int);
BOOL _cutStopper_Init(int const&);
BOOL _cutStopper_Main(int const&);
daNpc_yamiD_c(
daNpcT_faceMotionAnmData_c const* i_faceMotionAnmData,
daNpcT_motionAnmData_c const* i_motionAnmData,
daNpcT_MotionSeqMngr_c::sequenceStepData_c const* i_faceMotionSequenceData,
int i_faceMotionStepNum,
daNpcT_MotionSeqMngr_c::sequenceStepData_c const* i_motionSequenceData,
int i_motionStepNum,
daNpcT_evtData_c const* i_evtData,
char** i_arcNames)
: daNpcT_c(i_faceMotionAnmData, i_motionAnmData, i_faceMotionSequenceData,
i_faceMotionStepNum, i_motionSequenceData, i_motionStepNum, i_evtData,
i_arcNames) {
OS_REPORT("|%06d:%x|daNpc_yamiD_c -> コンストラクト\n", g_Counter.mCounter0, this);
}
u16 getEyeballMaterialNo() { return 1; }
s32 getHeadJointNo() { return 4; }
s32 getNeckJointNo() { return 3; }
s32 getBackboneJointNo() { return 1; }
BOOL checkChangeJoint(int i_joint) { return i_joint == 4; }
BOOL checkRemoveJoint(int i_joint) { return i_joint == 6; }
BOOL evtEndProc() {
mJntAnm.lookNone(0);
eventInfo.setIdx(0);
mEvtNo = 0;
return TRUE;
}
u8 getPathID() { return (fopAcM_GetParam(this) & 0xFF00) >> 8; }
int getSwitchBitNo() {
u32 full_prm = fopAcM_GetParam(this);
return (full_prm >> 16) & 0xFF;
}
BOOL _is_vanish_prm() {
int reg_r31 = (fopAcM_GetParam(this) >> 28) != 0;
if (reg_r31 == 15) {
reg_r31 = 0;
}
return reg_r31;
}
BOOL is_vanish() { return mVanish; }
void vanish_on() { mVanish = 1; }
void vanish_off() { mVanish = 0; }
void on_CoHit() {
field_0xe44.OnCoSetBit();
field_0xe44.OnTgSetBit();
}
void off_CoHit() {
field_0xe44.OffCoSetBit();
field_0xe44.OffTgSetBit();
}
static char* mCutNameList[2];
static cutFunc mCutList[2];
private:
/* 0xE40 */ NPC_YAMID_HIO_CLASS* mpHIO;
/* 0xE44 */ dCcD_Cyl field_0xe44;
/* 0xF80 */ u8 mType;
/* 0xF81 */ s8 mVanish;
/* 0xF82 */ s8 field_0xf82;
/* 0xF83 */ u8 field_0xf83;
/* 0xF84 */ actionFunc mNextAction;
/* 0xF90 */ actionFunc mAction;
/* 0xF9C */ daNpcT_Path_c mPath;
/* 0xFC4 */ u8 field_0xfc4;
/* 0xFC8 */ int field_0xfc8;
};
STATIC_ASSERT(sizeof(daNpc_yamiD_c) == 0xfcc);
#endif /* D_A_NPC_YAMID_H */
|