summaryrefslogtreecommitdiff
path: root/include/d/actor/d_a_obj_ice.h
blob: 61f9ed0f825ddc02aecb777676f3fb8cfea5b553 (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
#ifndef D_A_OBJ_ICE_H
#define D_A_OBJ_ICE_H

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

class dBgW;
class dBgS;

class daObjIce_c : public fopAc_ac_c {
    typedef void (daObjIce_c::*memberFuncPtr)();

    enum Param_e {
        PRM_SWSAVE_W = 8,
        PRM_SWSAVE_S = 0,
    };

public:
    s32 param_get_swSave() const { return daObj::PrmAbstract(this, PRM_SWSAVE_W, PRM_SWSAVE_S); }
    void param_on_swSave() const {
        const s32 sw = param_get_swSave();
        if (sw != 0xFF) {
            fopAcM_onSwitch((fopAc_ac_c*)this, sw);
        }
    }
    inline void setEffectMtx();

    u8 chk_appear();
    void set_mtx();
    void init_mtx();
    static BOOL solidHeapCB(fopAc_ac_c*);
    bool create_heap();
    static void tg_hitCallback(fopAc_ac_c*, dCcD_GObjInf*, fopAc_ac_c*, dCcD_GObjInf*);
    cPhs_State _create();
    bool _delete();
    void wait_act_proc();
    void fade_out_retire_act_proc();
    bool _execute();
    bool _draw();

public:
    /* 0x290 */ request_of_phase_process_class mPhase;
    /* 0x298 */ J3DModel* mModel;
    /* 0x29C */ dCcD_Stts mStts;
    /* 0x2D8 */ dCcD_Cyl mCyl;
    /* 0x408 */ dBgW* mBgw;
    /* 0x40C */ Mtx m40C;
    /* 0x43C */ memberFuncPtr m43C;
    /* 0x448 */ u8 m448;
    /* 0x44C */ f32 m44C;
    /* 0x450 */ f32 m450;
    /* 0x454 */ f32 m454;
    /* 0x458 */ s32 m458;
    /* 0x45C */ s32 m45C;
}; // size = 0x460

#endif /* D_A_OBJ_ICE_H */