summaryrefslogtreecommitdiff
path: root/include/d/actor/d_a_obj_buoyrace.h
blob: db01b324f637f726d5f4f4cc4e8762fd20591cce (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
#ifndef D_A_OBJ_BUOYRACE_H
#define D_A_OBJ_BUOYRACE_H

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

namespace daObjBuoyrace {
    class Act_c : public fopAc_ac_c {
    public:
        enum Prm_e {
            PRM_ID_W = 0x08,
            PRM_ID_S = 0x00,

            PRM_LINE_W = 0x08,
            PRM_LINE_S = 0x08
        };

        struct Attr_c {
            /* 0x00 */ f32 m00;
            /* 0x04 */ f32 mScale;
            /* 0x08 */ f32 m08;
            /* 0x0C */ f32 m0C;
            /* 0x10 */ s16 m10;
            /* 0x14 */ f32 m14;
            /* 0x18 */ f32 m18;
            /* 0x1C */ f32 m1C;
            /* 0x20 */ f32 m20;
        };

    public:
        static const char M_arcname_kiba[];
        static const char M_arcname_hasi[];
        static const Attr_c M_attr;

    public:
#if VERSION > VERSION_DEMO
        cPhs_State _create();
        bool _delete();
        bool _draw();
        bool _execute();
#else
        inline cPhs_State _create();
        inline bool _delete();
        inline bool _draw();
        inline bool _execute();
#endif
        const Attr_c& attr() const { return M_attr; }
        int prm_get_id() const { return daObj::PrmAbstract(this, PRM_ID_W, PRM_ID_S); }
        int prm_get_line() const { return daObj::PrmAbstract(this, PRM_LINE_W, PRM_LINE_S); }
        
        static BOOL solidHeapCB(fopAc_ac_c*);
        bool create_heap();
        cPhs_State create_load();
        void set_mtx();
        void init_mtx();
        void set_water_pos();
        void afl_calc_sway();
        void afl_calc();
        void set_rope_pos();
    
    public:
        /* 0x290 */ f32 mMeanSeaHeight;
        /* 0x294 */ cXyz m294;
        /* 0x2A0 */ s16 m2A0;
        /* 0x2A2 */ u8 m2A2[0x2AC - 0x2A2];
        /* 0x2AC */ f32 m2AC;
        /* 0x2B0 */ f32 m2B0;
        /* 0x2B4 */ f32 m2B4;
        /* 0x2B8 */ f32 m2B8;
        /* 0x2BC */ f32 m2BC;
        /* 0x2C0 */ f32 m2C0;
        /* 0x2C4 */ request_of_phase_process_class mPhsKiba;
        /* 0x2CC */ request_of_phase_process_class mPhsHasi;
        /* 0x2D4 */ J3DModel* mpModelKiba;
        /* 0x2D8 */ J3DModel* mpModelHasi;
    };  // Size: 0x2DC
};

#endif /* D_A_OBJ_BUOYRACE_H */