summaryrefslogtreecommitdiff
path: root/include/d/actor/d_a_npc2.h
blob: c940d14a87555026d2a80c3e2feb803b7d197c6f (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
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
#ifndef D_A_NPC2
#define D_A_NPC2

#include "JSystem/J3DGraphAnimator/J3DMaterialAnm.h"
#include "d/d_bg_s_acch.h"
#include "d/d_bg_s_movebg_actor.h"
#include "d/d_cc_d.h"
#include "d/d_msg_flow.h"
#include "d/d_path.h"

class daBaseNpc_acMngr_c {
public:
    daBaseNpc_acMngr_c();
    void entry(fopAc_ac_c*);
    fopAc_ac_c* getActor();
    virtual ~daBaseNpc_acMngr_c() {}

private:
    /* 0x04 */ fpc_ProcID mActorId;
};

class daBaseNpc_matAnm_c : public J3DMaterialAnm {
public:
    virtual ~daBaseNpc_matAnm_c() {}
    virtual void calc(J3DMaterial*) const;

    /* 0x0F4 */ mutable f32 field_0xF4;
    /* 0x0F8 */ mutable f32 field_0xF8;
    /* 0x0FC */ f32 mNowOffsetX;
    /* 0x100 */ f32 mNowOffsetY;
    /* 0x104 */ u8 mEyeMoveFlg;
    /* 0x105 */ u8 mMorfFrm;
};

class daBaseNpc_path_c {
public:
    daBaseNpc_path_c();
    BOOL isPath();
    int setPathInfo(u8, s8, s8);
    void reverseDir();
    s32 chkPnt(cXyz);
    BOOL setNextPnt();
    u16 getIdx();
    void setIdx(u16);
    Vec getPntPos(u16);
    void dbgDraw(f32);
    virtual ~daBaseNpc_path_c() {}

    static const int MAXNUMCONTROLPNT_e = 64;

public:
    /* 0x004 */ dPath* mPathInfo;
    /* 0x008 */ f32 field_0x8;
    /* 0x00C */ dPnt mCurvePnts[160];
    /* 0xA0C */ u8 field_0xa0c[0xA0E - 0xA0C];
    /* 0xA0E */ u16 mCurvePntNum;
    /* 0xA10 */ u16 mIdx;
    /* 0xA12 */ s8 mDirection;
    /* 0xA13 */ u8 field_0xa13;
    /* 0xA14 */ s16 field_0xa14;
    /* 0xA16 */ u8 field_0xa16[2];
    /* 0xA18 */ int field_0xa18;
    /* 0xA1C */ u8 field_0xa1c[8];
};

class daBaseNpc_lookat_c {
public:
    void limitter(s16, s16*, s16, s16);
    void calc(fopAc_ac_c*, f32 (*)[4], s16);
    void setMaxJntLmt(csXyz, int);
    void setMinJntLmt(csXyz, int);
    void setJntPos(cXyz, int);
    int setAttnPos(cXyz*);
    csXyz getRot(int);
    virtual ~daBaseNpc_lookat_c() {}

    /* 0x04 */ csXyz mMaxJntLmt[4];
    /* 0x1C */ csXyz mMinJntLmt[4];
    /* 0x34 */ cXyz mJntPos[4];
    /* 0x64 */ csXyz field_0x64[4];
    /* 0x7C */ csXyz mRot[4];
    /* 0x94 */ u8 field_0x94[4];
    /* 0x98 */ cXyz* mpAttnPos;
};

class daBaseNpc_c : public fopAc_ac_c {
public:
    daBaseNpc_c();
    J3DAnmTransform* getTrnsfrmKeyAnmP(char*, int);
    int setMcaMorfAnm(J3DAnmTransformKey*, f32, f32, int, int, int);
    int setBckAnm(J3DAnmTransform*, f32, int, int, int, bool);
    J3DAnmTransform* getTexPtrnAnmP(char*, int);
    int setBtpAnm(J3DAnmTexPattern*, J3DModelData*, f32, int);
    void orderEvent(int, char*);
    void setEnvTevColor();
    void setRoomNo();
    int checkEndAnm(f32);
    int checkEndAnm(J3DFrameCtrl*);

    virtual ~daBaseNpc_c();
    virtual int execute();
    virtual int draw(f32);
    virtual const char* getResName();
    virtual void attnSttsOn(int, int);
    virtual void setParam();
    virtual void mainProc();
    virtual BOOL btkCtrl();
    virtual void allAnmPlay();
    virtual void adjustShapeAngle();
    virtual void setMtx(int);
    virtual void setCollisions();
    virtual void setAttnPos();
    virtual void drawOtherMdls();
    virtual bool dbgDraw();

    static dCcD_SrcGObjInf const mCcDObj;
    static dCcD_SrcCyl mCcDCyl;
    static dCcD_SrcSph mCcDSph;

public:
    /* 0x56C */ dBgS_ObjAcch mAcch;
    /* 0x744 */ char field_0x744[8];
    /* 0x74C */ request_of_phase_process_class mPhase;
    /* 0x754 */ mDoExt_McaMorfSO* mpModelMorf;
    /* 0x758 */ Z2Creature mSound;
    /* 0x7E8 */ u32 mShadowId;
    /* 0x7EC */ mDoExt_bckAnm mBck;
    /* 0x808 */ mDoExt_btpAnm mBtp;
    /* 0x820 */ mDoExt_btkAnm mBtk;
    /* 0x838 */ s16 field_0x838;
    /* 0x83C */ u16* field_0x83c;
    /* 0x840 */ u16 field_0x840;
    /* 0x842 */ u16 field_0x842;
    /* 0x844 */ u8 field_0x844;
    /* 0x845 */ u8 field_0x845[0x848 - 0x845];
    /* 0x848 */ s32 mFlowID;
    /* 0x84C */ dMsgFlow_c mMsgFlow;
    /* 0x898 */ u8 field_0x898[0x89A - 0x898];
    /* 0x89A */ s16 mEvtIdx;
    /* 0x89C */ dCcD_Stts mCcStts;
    /* 0x8D8 */ dBgS_AcchCir mAcchCir;
    /* 0x918 */ s16 field_0x918;
    /* 0x91A */ csXyz field_0x91a;
    /* 0x920 */ daBaseNpc_lookat_c mLookat;
    /* 0x9BC */ csXyz field_0x9bc;
    /* 0x9C2 */ csXyz field_0x9c2;
    /* 0x9C8 */ csXyz field_0x9c8;
    /* 0x9CE */ csXyz field_0x9ce;
    /* 0x9D4 */ cBgS_GndChk field_0x9d4;
    /* 0xA10 */ f32 mGroundY;
};

STATIC_ASSERT(sizeof(daBaseNpc_c) == 0xA14);

class daBaseNpc_moveBgActor_c : public daBaseNpc_c {
public:
    daBaseNpc_moveBgActor_c();
    int MoveBGCreateHeap();
    int MoveBGCreate(char const*, int, MoveBGActor_SetFunc, u32);
    int MoveBGDelete();
    int MoveBGExecute();
    int MoveBGDraw() {
        int ret = Draw();
        return ret;
    }

    virtual int CreateHeap() { return 1; }
    virtual int Create() { return 1; }
    virtual int Execute(Mtx**) { return 1; }
    virtual int Draw() { return 1; }
    virtual int Delete() { return 1; }
    virtual int IsDelete() { return 1; }
    virtual int ToFore() { return 1; }
    virtual int ToBack() { return 1; }

    static const char* m_name;
    static int m_dzb_id;
    static MoveBGActor_SetFunc m_set_func;

public:
    /* 0xA14 */ dBgW* mpBgw;
    /* 0xA18 */ Mtx mBgMtx;
};

#endif /* D_A_NPC2 */