summaryrefslogtreecommitdiff
path: root/include/d/lyt/d_lyt_sky_gauge.h
blob: c480a754e61b1e8c64cdc82f9195c40250014743 (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
#ifndef D_LYT_SKY_GAUGE_H
#define D_LYT_SKY_GAUGE_H

#include "d/lyt/d2d.h"
#include "s/s_State.hpp"

class dLytSkyGauge_c;

class dLytSkyGaugeMain_c {
public:
    dLytSkyGaugeMain_c();
    virtual ~dLytSkyGaugeMain_c() {}

    bool build(d2d::ResAccIf_c *resAcc);
    bool execute();
    bool remove();

    void changeToIn();
    void changeToMove();
    void changeToNone();
    void changeToOut();

    void setHeight(f32 height);

    bool isIdle() {
        return mIsIdle;
    }

    const d2d::dLytSub &getLyt() const {
        return mLyt;
    }

    d2d::dLytSub &getLyt() {
        return mLyt;
    }

private:
    STATE_FUNC_DECLARE(dLytSkyGaugeMain_c, ModeNone);
    STATE_FUNC_DECLARE(dLytSkyGaugeMain_c, ModeIn);
    STATE_FUNC_DECLARE(dLytSkyGaugeMain_c, ModeMove);
    STATE_FUNC_DECLARE(dLytSkyGaugeMain_c, ModeOut);

    /* 0x004 */ UI_STATE_MGR_DECLARE(dLytSkyGaugeMain_c);
    /* 0x040 */ d2d::dLytSub mLyt;
    /* 0x0D4 */ d2d::AnmGroup_c mAnmGroups[3];
    /* 0x194 */ bool mIsIdle;
    /* 0x195 */ bool field_0x195; // unused
};

class dLytSkyGauge_c : public d2d::dSubPane {
public:
    dLytSkyGauge_c() : mStateMgr(*this) {}
    virtual bool build(d2d::ResAccIf_c *resAcc) override;
    virtual bool remove() override;
    virtual bool execute() override;
    virtual nw4r::lyt::Pane *getPane() override {
        return mMain.getLyt().getLayout()->GetRootPane();
    }
    virtual d2d::LytBase_c *getLyt() override {
        return &mMain.getLyt();
    }
    virtual const char *getName() const override {
        return mMain.getLyt().getName();
    }

    virtual ~dLytSkyGauge_c() {}

    void setHeight(f32 height);

    static dLytSkyGauge_c *sInstance;
    void setWantsIn() {
        mWantsIn = true;
    }
    void setWantsOut() {
        mWantsOut = true;
    }

private:
    STATE_FUNC_DECLARE(dLytSkyGauge_c, None);
    STATE_FUNC_DECLARE(dLytSkyGauge_c, In);
    STATE_FUNC_DECLARE(dLytSkyGauge_c, Move);
    STATE_FUNC_DECLARE(dLytSkyGauge_c, Out);

    STATE_MGR_DEFINE_UTIL_CHANGESTATE(dLytSkyGauge_c);

    /* 0x008 */ UI_STATE_MGR_DECLARE(dLytSkyGauge_c);
    /* 0x008 */ d2d::ResAccIf_c mResAcc;
    /* 0x3B4 */ dLytSkyGaugeMain_c mMain;
    /* 0x54C */ bool mWantsIn;
    /* 0x54D */ bool mWantsOut;
};

#endif