summaryrefslogtreecommitdiff
path: root/include/d/actor/d_a_npc_roten.h
blob: 28f72cbf1ed3d36dae34f9816b2d76610f483d34 (plain)
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
#ifndef D_A_NPC_ROTEN_H
#define D_A_NPC_ROTEN_H

#include "f_op/f_op_actor.h"
#include "d/d_npc.h"

struct sRotenAnmDat {
    /* 0x00 */ u8 field_0x00;
    /* 0x01 */ u8 field_0x01;
    /* 0x02 */ u8 field_0x02;
}; // Size: 0x03

class daNpcRoten_c : public fopNpc_npc_c {
public:
    enum Prm_e {
        PRM_RAIL_ID_W = 0x08,
        PRM_RAIL_ID_S = 0x10,

        PRM_NPC_NO_W = 0x08,
        PRM_NPC_NO_S = 0x18,
    };

    request_of_phase_process_class* getPhaseP() { return &mPhs; }
    cXyz getWindVec() { return field_0x720; }
    void setNpcNo(u8 npcNo) { mNpcNo = npcNo; }
    void setResFlag(u8 flag) { field_0x9BC = flag; }

    daNpcRoten_c();
    cPhs_State _create();
    BOOL createHeap();
    cPhs_State createInit();
    bool _delete();
    bool _draw();
    bool _execute();
    bool executeCommon();
    void executeSetMode(u8);
    s32 executeWaitInit();
    void executeWait();
    s32 executeTalkInit();
    void executeTalk();
    s32 executeWalkInit();
    void executeWalk();
    s32 executeTurnInit();
    void executeTurn();
    s32 executeWindInit();
    void executeWind();
    void checkOrder();
    void eventOrder();
    void eventMove();
    void privateCut();
    void eventInit();
    void eventMesSetInit(int);
    bool eventMesSet();
    void eventSetItemInit();
    bool eventSetItem();
    void eventClrItemInit();
    void eventGetItemInit(int);
    void eventSetAngleInit();
    void eventOnPlrInit();
    void eventOffPlrInit();
    u16 next_msgStatus(u32*);
    u32 getMsg();
    void setMessage(u32);
    void setAnmFromMsgTag();
    u8 getPrmNpcNo();
    u8 getPrmRailID();
    void setMtx();
    void chkAttention();
    void lookBack();
    BOOL initTexPatternAnm(bool);
    void playTexPatternAnm();
    void playAnm();
    void setAnm(u8, int, f32);
    bool setAnmTbl(sRotenAnmDat*);
    BOOL isHaitatuItem(u8);
    BOOL isKoukanItem(u8);
    BOOL isGetMap(u8);
    s16 XyEventCB(int);
    void setCollisionB();
    void setCollisionH();

public:
    typedef s32(daNpcRoten_c::*InitFunc_t)();
    typedef void(daNpcRoten_c::*MoveFunc_t)();

    /* 0x6C4 */ request_of_phase_process_class mPhs;
    /* 0x6CC */ request_of_phase_process_class mPhs2;
    /* 0x6D4 */ J3DModel* field_0x6D4;
    /* 0x6D8 */ mDoExt_McaMorf* field_0x6D8;
    /* 0x6DC */ J3DAnmTexPattern* m_head_tex_pattern;
    /* 0x6E0 */ mDoExt_btpAnm mBtpAnm;
    /* 0x6F4 */ u32 mShadowId;
    /* 0x6F8 */ u32 field_0x6F8;
    /* 0x6FC */ fpc_ProcID field_0x6FC;
    /* 0x700 */ dNpc_PathRun_c mPathRun;
    /* 0x708 */ cXyz field_0x708;
    /* 0x714 */ cXyz field_0x714;
    /* 0x720 */ cXyz field_0x720;
    /* 0x72C */ dCcD_Cyl mCyl2;
    /* 0x85C */ dCcD_Sph mSph;
    /* 0x988 */ sRotenAnmDat* field_0x988;
    /* 0x98C */ u32* field_0x98C;
    /* 0x990 */ f32 field_0x990;
    /* 0x994 */ f32 field_0x994;
    /* 0x998 */ s32 field_0x998;
    /* 0x99C */ bool field_0x99C;
    /* 0x99E */ s16 field_0x99E;
    /* 0x9A0 */ s16 field_0x9A0;
    /* 0x9A2 */ s16 field_0x9A2;
    /* 0x9A4 */ s16 field_0x9A4;
    /* 0x9A6 */ s16 field_0x9A6;
    /* 0x9A8 */ s16 field_0x9A8;
    /* 0x9AA */ s16 field_0x9AA;
    /* 0x9AC */ s16 field_0x9AC;
    /* 0x9AE */ s16 field_0x9AE;
    /* 0x9B0 */ s16 field_0x9B0;
    /* 0x9B2 */ u16 field_0x9B2;
    /* 0x9B4 */ bool field_0x9B4;
    /* 0x9B5 */ u8 field_0x9B5;
    /* 0x9B6 */ u8 field_0x9B6;
    /* 0x9B7 */ u8 field_0x9B7;
    /* 0x9B8 */ u8 field_0x9B8;
    /* 0x9B9 */ s8 m_hand_L_jnt_num;
    /* 0x9BA */ s8 m_bag_jnt_num;
    /* 0x9BB */ u8 field_0x9BB;
    /* 0x9BC */ u8 field_0x9BC;
    /* 0x9BD */ u8 mNpcNo;
    /* 0x9BE */ u8 field_0x9BE;
    /* 0x9BF */ u8 field_0x9BF;
    /* 0x9C0 */ u8 field_0x9C0;
    /* 0x9C1 */ u8 field_0x9C1;
    /* 0x9C2 */ s8 field_0x9C2;
    /* 0x9C3 */ s8 field_0x9C3;
    /* 0x9C4 */ s8 field_0x9C4;
    /* 0x9C5 */ u8 mShownItemBtn;
    /* 0x9C6 */ u8 field_0x9C6;
    /* 0x9C7 */ u8 field_0x9C7;
    /* 0x9C8 */ u8 field_0x9C8;
    /* 0x9C9 */ u8 field_0x9C9;
    /* 0x9CA */ u8 field_0x9CA;

    static const char m_arcname[];
}; // Size: 0x9CC

#endif /* D_A_NPC_ROTEN_H */