|
3 | 3 |
|
4 | 4 | #include "d/actor/d_a_npc.h" |
5 | 5 |
|
| 6 | +struct daNpc_Pouya_HIOParam { |
| 7 | + /* 0x00 */ daNpcT_HIOParam common; |
| 8 | +}; |
| 9 | + |
| 10 | +class daNpc_Pouya_Param_c { |
| 11 | +public: |
| 12 | + /* 80B24978 */ virtual ~daNpc_Pouya_Param_c() {} |
| 13 | + |
| 14 | + static const daNpc_Pouya_HIOParam m; |
| 15 | +}; |
| 16 | + |
| 17 | +#if DEBUG |
| 18 | +class daNpc_Pouya_HIO_c : public mDoHIO_entry_c { |
| 19 | +public: |
| 20 | + daNpc_Pouya_HIO_c(); |
| 21 | + |
| 22 | + void listenPropertyEvent(const JORPropertyEvent*); |
| 23 | + void genMessage(JORMContext*); |
| 24 | + |
| 25 | + daNpc_Pouya_HIOParam m; |
| 26 | +}; |
| 27 | + |
| 28 | +#define NPC_POUYA_HIO_CLASS daNpc_Pouya_HIO_c |
| 29 | +#else |
| 30 | +#define NPC_POUYA_HIO_CLASS daNpc_Pouya_Param_c |
| 31 | +#endif |
| 32 | + |
6 | 33 | /** |
7 | 34 | * @ingroup actors-npcs |
8 | 35 | * @class daNpc_Pouya_c |
|
11 | 38 | * @details |
12 | 39 | * |
13 | 40 | */ |
14 | | -class daNpc_Pouya_c : public fopAc_ac_c { |
| 41 | +class daNpc_Pouya_c : public daNpcT_c { |
15 | 42 | public: |
| 43 | + typedef int (daNpc_Pouya_c::*cutFunc)(int); |
| 44 | + typedef int (daNpc_Pouya_c::*actionFunc)(void*); |
| 45 | + |
| 46 | + enum Type { |
| 47 | + TYPE_0, |
| 48 | + TYPE_1, |
| 49 | + TYPE_2, |
| 50 | + TYPE_3, |
| 51 | + TYPE_4, |
| 52 | + TYPE_5, |
| 53 | + }; |
| 54 | + |
| 55 | + enum FaceMotion { |
| 56 | + /* 0x00 */ FACE_MOT_UNK_0 = 0, |
| 57 | + /* 0x01 */ FACE_MOT_UNK_1 = 1, |
| 58 | + /* 0x02 */ FACE_MOT_UNK_2 = 2, |
| 59 | + /* 0x03 */ FACE_MOT_UNK_3 = 3, |
| 60 | + /* 0x04 */ FACE_MOT_UNK_4 = 4, |
| 61 | + /* 0x05 */ FACE_MOT_UNK_5 = 5, |
| 62 | + /* 0x06 */ FACE_MOT_UNK_6 = 6, |
| 63 | + /* 0x07 */ FACE_MOT_UNK_7 = 7, |
| 64 | + /* 0x08 */ FACE_MOT_UNK_8 = 8, |
| 65 | + /* 0x09 */ FACE_MOT_UNK_9 = 9, |
| 66 | + /* 0x0A */ FACE_MOT_UNK_10 = 10, |
| 67 | + /* 0x0B */ FACE_MOT_UNK_11 = 11, |
| 68 | + /* 0x0C */ FACE_MOT_UNK_12 = 12, |
| 69 | + /* 0x0D */ FACE_MOT_UNK_13 = 13, |
| 70 | + /* 0x0E */ FACE_MOT_UNK_14 = 14, |
| 71 | + /* 0x0F */ FACE_MOT_UNK_15 = 15, |
| 72 | + /* 0x10 */ FACE_MOT_UNK_16 = 16, |
| 73 | + /* 0x11 */ FACE_MOT_UNK_17 = 17, |
| 74 | + }; |
| 75 | + |
| 76 | + enum Motion { |
| 77 | + /* 0x00 */ MOT_UNK_0 = 0, |
| 78 | + /* 0x01 */ MOT_UNK_1 = 1, |
| 79 | + /* 0x04 */ MOT_UNK_4 = 4, |
| 80 | + /* 0x08 */ MOT_UNK_8 = 8, |
| 81 | + /* 0x0A */ MOT_UNK_10 = 10, |
| 82 | + /* 0x0F */ MOT_UNK_15 = 15, |
| 83 | + }; |
| 84 | + |
16 | 85 | /* 80AADDAC */ ~daNpc_Pouya_c(); |
17 | | - /* 80AADEE0 */ void create(); |
18 | | - /* 80AAE1AC */ void CreateHeap(); |
19 | | - /* 80AAE788 */ void Delete(); |
20 | | - /* 80AAE7BC */ void Execute(); |
21 | | - /* 80AAE7DC */ void Draw(); |
22 | | - /* 80AAE870 */ void createHeapCallBack(fopAc_ac_c*); |
23 | | - /* 80AAE890 */ void ctrlJointCallBack(J3DJoint*, int); |
| 86 | + /* 80AADEE0 */ int create(); |
| 87 | + /* 80AAE1AC */ int CreateHeap(); |
| 88 | + /* 80AAE788 */ int Delete(); |
| 89 | + /* 80AAE7BC */ int Execute(); |
| 90 | + /* 80AAE7DC */ int Draw(); |
| 91 | + /* 80AAE870 */ static int createHeapCallBack(fopAc_ac_c*); |
| 92 | + /* 80AAE890 */ static int ctrlJointCallBack(J3DJoint*, int); |
24 | 93 | /* 80AAE8E8 */ u8 getType(); |
25 | | - /* 80AAE94C */ void isDelete(); |
| 94 | + /* 80AAE94C */ BOOL isDelete(); |
26 | 95 | /* 80AAE9D8 */ void reset(); |
27 | 96 | /* 80AAEBCC */ void ctrlSubFaceMotion(int); |
28 | 97 | /* 80AAEDB8 */ void afterJntAnm(int); |
29 | 98 | /* 80AAEE44 */ void setParam(); |
30 | | - /* 80AAEFB4 */ void checkChangeEvt(); |
| 99 | + /* 80AAEFB4 */ BOOL checkChangeEvt(); |
31 | 100 | /* 80AAF148 */ void setAfterTalkMotion(); |
32 | 101 | /* 80AAF1F0 */ void srchActors(); |
33 | | - /* 80AAF1F4 */ void evtTalk(); |
34 | | - /* 80AAF294 */ void evtCutProc(); |
| 102 | + /* 80AAF1F4 */ BOOL evtTalk(); |
| 103 | + /* 80AAF294 */ BOOL evtCutProc(); |
35 | 104 | /* 80AAF35C */ void action(); |
36 | 105 | /* 80AAF4F8 */ void beforeMove(); |
37 | 106 | /* 80AAF5BC */ void setAttnPos(); |
38 | 107 | /* 80AAF8E4 */ void setCollision(); |
39 | | - /* 80AAFA5C */ bool drawDbgInfo(); |
| 108 | + /* 80AAFA5C */ int drawDbgInfo(); |
40 | 109 | /* 80AAFA64 */ void drawOtherMdl(); |
41 | | - /* 80AAFB4C */ void afterSetMotionAnm(int, int, f32, int); |
42 | | - /* 80AAFBDC */ void selectAction(); |
43 | | - /* 80AAFC24 */ void chkAction(int (daNpc_Pouya_c::*)(void*)); |
44 | | - /* 80AAFC50 */ void setAction(int (daNpc_Pouya_c::*)(void*)); |
| 110 | + /* 80AAFB4C */ bool afterSetMotionAnm(int, int, f32, int); |
| 111 | + /* 80AAFBDC */ int selectAction(); |
| 112 | + /* 80AAFC24 */ BOOL chkAction(int (daNpc_Pouya_c::*)(void*)); |
| 113 | + /* 80AAFC50 */ int setAction(int (daNpc_Pouya_c::*)(void*)); |
45 | 114 | /* 80AAFCF8 */ void setPrtcls(); |
46 | | - /* 80AAFE08 */ void cutHaveFavorToAsk(int); |
47 | | - /* 80AB04A8 */ void wait(void*); |
48 | | - /* 80AB0A7C */ void talk(void*); |
49 | | - /* 80AB1E94 */ daNpc_Pouya_c(daNpcT_faceMotionAnmData_c const*, daNpcT_motionAnmData_c const*, |
50 | | - daNpcT_MotionSeqMngr_c::sequenceStepData_c const*, int, |
51 | | - daNpcT_MotionSeqMngr_c::sequenceStepData_c const*, int, |
52 | | - daNpcT_evtData_c const*, char**); |
53 | | - /* 80AB1F54 */ u16 getEyeballMaterialNo(); |
54 | | - /* 80AB1F5C */ s32 getHeadJointNo(); |
55 | | - /* 80AB1F64 */ s32 getNeckJointNo(); |
56 | | - /* 80AB1F6C */ bool getBackboneJointNo(); |
57 | | - /* 80AB1F74 */ void checkChangeJoint(int); |
58 | | - /* 80AB1F84 */ void checkRemoveJoint(int); |
59 | | - |
60 | | - MtxP getHeadMtx() { return mpMorf->getModel()->getAnmMtx(4); } |
| 115 | + /* 80AAFE08 */ int cutHaveFavorToAsk(int); |
| 116 | + /* 80AB04A8 */ int wait(void*); |
| 117 | + /* 80AB0A7C */ int talk(void*); |
| 118 | + /* 80AB1E94 */ daNpc_Pouya_c( |
| 119 | + daNpcT_faceMotionAnmData_c const* i_faceMotionAnmData, |
| 120 | + daNpcT_motionAnmData_c const* i_motionAnmData, |
| 121 | + daNpcT_MotionSeqMngr_c::sequenceStepData_c const* i_faceMotionSequenceData, |
| 122 | + int i_faceMotionStepNum, |
| 123 | + daNpcT_MotionSeqMngr_c::sequenceStepData_c const* i_motionSequenceData, int i_motionStepNum, |
| 124 | + daNpcT_evtData_c const* i_evtData, char** i_arcNames) |
| 125 | + : daNpcT_c(i_faceMotionAnmData, i_motionAnmData, i_faceMotionSequenceData, |
| 126 | + i_faceMotionStepNum, i_motionSequenceData, i_motionStepNum, i_evtData, |
| 127 | + i_arcNames) {} |
| 128 | + /* 80AB1F54 */ u16 getEyeballMaterialNo() { return 1; } |
| 129 | + /* 80AB1F5C */ s32 getHeadJointNo() { return 4; } |
| 130 | + /* 80AB1F64 */ s32 getNeckJointNo() { return 3; } |
| 131 | + /* 80AB1F6C */ s32 getBackboneJointNo() { return 1; } |
| 132 | + /* 80AB1F74 */ BOOL checkChangeJoint(int i_joint) { return i_joint == 4; } |
| 133 | + /* 80AB1F84 */ BOOL checkRemoveJoint(int i_joint) { return i_joint == 8; } |
61 | 134 |
|
62 | | - static char* mCutNameList[3]; |
63 | | - static u8 mCutList[36]; |
| 135 | + u8 getBitSW() { return (fopAcM_GetParam(this) & 0xFF00) >> 8; } |
64 | 136 |
|
65 | | -private: |
66 | | - /* 0x568 */ u8 field_0x568[0x578 - 0x568]; |
67 | | - /* 0x578 */ mDoExt_McaMorfSO* mpMorf; |
68 | | - /* 0x57C */ u8 field_0x57c[0xfd4 - 0x57c]; |
69 | | -}; |
| 137 | + int getFlowNodeNo() { |
| 138 | + u16 nodeNo = home.angle.x; |
| 139 | + if (nodeNo == 0xffff) { |
| 140 | + return -1; |
| 141 | + } |
| 142 | + return nodeNo; |
| 143 | + } |
70 | 144 |
|
71 | | -STATIC_ASSERT(sizeof(daNpc_Pouya_c) == 0xfd4); |
| 145 | + BOOL chkPouyaB() { return (mType == TYPE_2 || mType == TYPE_3 || mType == TYPE_4); } |
72 | 146 |
|
73 | | -class daNpc_Pouya_Param_c { |
74 | | -public: |
75 | | - /* 80AB1F94 */ ~daNpc_Pouya_Param_c(); |
| 147 | + MtxP getHeadMtx() { return mpMorf[0]->getModel()->getAnmMtx(4); } |
| 148 | + |
| 149 | + static char* mCutNameList[3]; |
| 150 | + static cutFunc mCutList[3]; |
76 | 151 |
|
77 | | - static u8 const m[140]; |
| 152 | +private: |
| 153 | + /* 0xE40 */ NPC_POUYA_HIO_CLASS* mpHIO; |
| 154 | + /* 0xE44 */ J3DModel* mpModel[1]; |
| 155 | + /* 0xE48 */ dCcD_Cyl mCyl; |
| 156 | + /* 0xF84 */ u8 mType; |
| 157 | + /* 0xF88 */ daNpcT_Path_c mPath; |
| 158 | + /* 0xFB0 */ actionFunc field_0xfb0; |
| 159 | + /* 0xFBC */ actionFunc mAction; |
| 160 | + /* 0xFC8 */ u32 field_0xfc8; |
| 161 | + /* 0xFCC */ s8 field_0xfcc; |
| 162 | + /* 0xFCD */ s8 field_0xfcd; |
| 163 | + /* 0xFCE */ u8 field_0xfce; |
| 164 | + /* 0xFCF */ u8 field_0xfcf; |
| 165 | + /* 0xFD0 */ u8 field_0xfd0; |
78 | 166 | }; |
79 | 167 |
|
| 168 | +STATIC_ASSERT(sizeof(daNpc_Pouya_c) == 0xfd4); |
80 | 169 |
|
81 | 170 | #endif /* D_A_NPC_POUYA_H */ |
0 commit comments