summaryrefslogtreecommitdiff
path: root/include/d/actor/d_a_coming2.h
blob: ceb8adca976200d290e71387a2d69ec607a38870 (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
#ifndef D_A_COMING2_H
#define D_A_COMING2_H

#include "f_op/f_op_actor.h"
#include "d/actor/d_a_obj_barrel2.h"
#include "d/d_com_inf_game.h"

namespace daComing2 {
    static f32 get_speed(fopAc_ac_c*);
    static void* position_is_safety_call_back(void*, void*);
    static BOOL position_is_none_obj(cXyz*);
    static BOOL checkLineCrossXZ(cXyz*, cXyz*, cXyz*, cXyz*);

    extern s32 coming_make_item_no_table[];

    class _barrel_info_ {
    public:
        /* 0x00 */ fpc_ProcID unk_00;
        /* 0x04 */ s16 unk_04;
        /* 0x06 */ u8 unk_06;
        /* 0x08 */ cXyz unk_08;
    }; // size = 0x14

    struct _start_stat_ {
        /* 0x00 */ s16 unk_00;
    }; // size = 0x2?
    
    class Act_c : public fopAc_ac_c {
        class _start_buoy_ {
        public:
            /* 0x00 */ fpc_ProcID unk_00;
            /* 0x04 */ cXyz unk_04;
        }; // size = 0x10

    public:
        virtual ~Act_c() {}

        s32 get_coming_point() {
            return dComIfGs_getEventReg(dSv_event_flag_c::UNK_7EFF);
        }
        void init_coming_point() {}
        void minus_coming_point1() {
            s32 evnt = dComIfGs_getEventReg(dSv_event_flag_c::UNK_7EFF);
            u8 evnt2 = (evnt - 1 < 0) ? 0 : evnt - 1;
            dComIfGs_setEventReg(dSv_event_flag_c::UNK_7EFF, evnt2);
        }
        void minus_coming_point2() {
            minus_coming_point1();
            minus_coming_point1();
        }
        void pluss_coming_point1() {}
    
        void chase_ship();
        void renew_scope_info();
        BOOL no_ship_obstacle(cXyz*);
        BOOL check_in_large_sea(const cXyz*);
        BOOL get_water_height(float*, const cXyz*);
        void init_barrelN_info(int);
        void init_barrel_info();
        void init_flag_info();
        void init_coming_info();
        BOOL make_coming_param(cXyz*, daObjBarrel2::Type_e*, int*, bool*);
        BOOL request_barrel_exitN(int);
        BOOL request_all_barrel_exit();
        BOOL request_all_flag_exit();
        void barrel_execute(int);
        void barrel_main();
        BOOL coming_clear_init();
        void coming_clear_main();
        BOOL coming_wait_init();
        void coming_wait_main();
        BOOL coming_setF_init();
        void coming_setF_main();
        BOOL coming_checkS_init();
        void coming_checkS_main();
        BOOL coming_game_init();
        void coming_game_main();
        bool coming_process_init(short);
        void coming_process_main();
        cPhs_State _create();
        bool _delete();
        bool _execute();
        bool _draw();
    
    public:
        /* 0x290 */ // vtbl
        /* 0x294 */ s32 unk_294;
        /* 0x298 */ s8 unk_298;
        /* 0x299 */ s8 unk_299;
        /* 0x29A */ s16 unk_29A;
        /* 0x29C */ s16 unk_29C;
        /* 0x29E */ char unk29E[0x2];
        /* 0x2A0 */ f32 unk_2A0;
        /* 0x2A4 */ s16 unk_2A4;
        /* 0x2A6 */ s16 unk_2A6;
        /* 0x2A8 */ s16 unk_2A8;
        /* 0x2AA */ s16 unk_2AA;
        /* 0x2AC */ _barrel_info_ mBarrelInfo[20];
        /* 0x43C */ _start_stat_ mStartStat;
        /* 0x440 */ cXyz unk_440;
        /* 0x44C */ _start_buoy_ mStartBuoy[2];
        /* 0x46C */ s16 unk_46C;
        /* 0x46E */ s16 unk_46E;
        /* 0x470 */ char unk470[0x6];
        /* 0x476 */ u8 unk_476;
        /* 0x477 */ char unk477[0x31];
        /* 0x4A8 */ cXyz unk_4A8;
    }; // size = 0x4B4
};

#endif /* D_A_COMING2_H */