summaryrefslogtreecommitdiff
path: root/include/d/lyt/d_lyt_bird_gauge.h
blob: 74b5195c21a121d1594a29c207f80057161bafd5 (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_LYT_BIRD_GAUGE_H
#define D_LYT_BIRD_GAUGE_H

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

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

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

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

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

    void cancelAnimation();

    bool isAnimating() const {
        return mIsAnimating;
    }

    s32 getDisplayedDashes() const {
        return mNumDisplayedDashes;
    }

    void changeToIn();
    void changeToDash();
    void changeToRecovery();
    void changeToOut();

private:
    STATE_FUNC_DECLARE(dLytBirdGaugeMain_c, ModeNone);
    STATE_FUNC_DECLARE(dLytBirdGaugeMain_c, ModeIn);
    STATE_FUNC_DECLARE(dLytBirdGaugeMain_c, ModeDash);
    STATE_FUNC_DECLARE(dLytBirdGaugeMain_c, ModeRecovery);
    STATE_FUNC_DECLARE(dLytBirdGaugeMain_c, ModeOut);

    /* 0x004 */ UI_STATE_MGR_DECLARE(dLytBirdGaugeMain_c);
    /* 0x040 */ d2d::dLytSub mLyt;
    /* 0x0D4 */ d2d::AnmGroup_c mAnmGroups[8];
    /* 0x2D4 */ bool mIsAnimating;
    /* 0x2D8 */ s32 mNumDisplayedDashes;
};

class dLytBirdGauge_c : public d2d::dSubPane {
public:
    dLytBirdGauge_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 ~dLytBirdGauge_c() {}

    void hide();

    void setNumDashes(s32 num) {
        mGameStateDashes = num;
    }

    void setField_0x690(bool val) {
        field_0x690 = val;
    }

    bool getField_0x692() const {
        return field_0x692;
    }

    bool getField_0x693() const {
        return field_0x693;
    }

private:
    static dLytBirdGauge_c *sInstance;

    STATE_FUNC_DECLARE(dLytBirdGauge_c, In);
    STATE_FUNC_DECLARE(dLytBirdGauge_c, None);
    STATE_FUNC_DECLARE(dLytBirdGauge_c, Dash);
    STATE_FUNC_DECLARE(dLytBirdGauge_c, Recovery);
    STATE_FUNC_DECLARE(dLytBirdGauge_c, Out);

    STATE_MGR_DEFINE_UTIL_CHANGESTATE(dLytBirdGauge_c);

    /* 0x008 */ UI_STATE_MGR_DECLARE(dLytBirdGauge_c);
    /* 0x008 */ d2d::ResAccIf_c mResAcc;
    /* 0x3B4 */ dLytBirdGaugeMain_c mMain;
    /* 0x690 */ bool field_0x690;
    /* 0x691 */ bool field_0x691;
    /* 0x692 */ bool field_0x692;
    /* 0x693 */ bool field_0x693;
    /* 0x694 */ s32 mGameStateDashes;
};

#endif