summaryrefslogtreecommitdiff
path: root/include/d/d_gameover.h
blob: 7ac44ce7b0ac7053d3717cb23cae73f009c69765 (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
#ifndef D_GAMEOVER_H
#define D_GAMEOVER_H

#include "d/d_com_inf_game.h"
#include "d/d_menu_save.h"
#include "f_op/f_op_msg_mng.h"
#include "JSystem/JKernel/JKRExpHeap.h"
#include "JSystem/J2DGraph/J2DScreen.h"
#include "SSystem/SComponent/c_phase.h"

class dDlst_Gameover_CAPTURE_c : public dDlst_base_c {
public:
    virtual ~dDlst_Gameover_CAPTURE_c() {}
    virtual void draw();
};

class dDlst_GameOverScrnDraw_c : public dDlst_base_c {
public:
    dDlst_GameOverScrnDraw_c() {
        field_0x338 = 0;
        field_0x33c = 0;
        field_0x330 = 0;
        field_0x334 = 0;

        field_0x32c = 8;
        mAlpha = 0.0f;
    }

    f32 acc(s16 param_0, s16 param_1, s16 param_2) {
        return ((f32)(param_1 - param_2) * (f32)(param_1 - param_2)) / ((f32)(param_0 - param_2) * (f32)(param_0 - param_2));
    }
    void deleteScreen() { delete scrn; }
    void setAlpha(f32 alpha) { mAlpha = alpha; }
    void stopEmitter0() {
        if (mpEmitter0 != NULL)
            mpEmitter0->becomeInvalidEmitter();
    }
    void stopEmitter1() {
        if (mpEmitter1 != NULL)
            mpEmitter1->becomeInvalidEmitter();
    }

    virtual ~dDlst_GameOverScrnDraw_c() {}
    void setScreen(const char*, JKRArchive*);
    void valueInit();
    BOOL animeOpen();
    BOOL animeClose();
    void setEmitter0(cXyz);
    void setEmitter1(cXyz);
    BOOL anime1(int);
    BOOL anime2(int);
    void setRotate(fopMsgM_pane_class*, f32);

    virtual void draw();

private:
    /* 0x004 */ J2DScreen* scrn;
    /* 0x008 */ fopMsgM_pane_class letter[8];
#if VERSION > VERSION_JPN
    /* 0x1C8 */ u8 field_0x1c8[0x318 - 0x1c8];
#endif
    /* Offsets below are for USA/PAL */
    /* 0x318 */ fopMsgM_pane_alpha_class blak;
    /* 0x320 */ JPABaseEmitter* mpEmitter0;
    /* 0x324 */ JPABaseEmitter* mpEmitter1;
    /* 0x328 */ f32 mAlpha;
    /* 0x32C */ s32 field_0x32c;
    /* 0x330 */ s32 field_0x330;
    /* 0x334 */ u32 field_0x334;
    /* 0x338 */ u32 field_0x338;
    /* 0x33C */ u16 field_0x33c;
    /* 0x33E */ s16 mRotate[8];
    /* 0x34E */ u8 field_0x34e[0x410 - 0x34E];
};

class dGameover_c : public msg_class {
public:
    void animeStart() { mAnimeStart = true; }
    void setBackAlpha(f32 alpha) { dgo_scrn_c->setAlpha(alpha); }

    cPhs_State _create();
    BOOL _execute();
    BOOL _draw();
    BOOL _delete();
    BOOL deleteCheck();

private:
    /* 0x0FC */ dMenu_save_c* dMs_c;
    /* 0x100 */ dDlst_GameOverScrnDraw_c* dgo_scrn_c;
    /* 0x104 */ dDlst_Gameover_CAPTURE_c* dgo_capture_c;
    /* 0x108 */ request_of_phase_process_class mPhs;
    /* 0x110 */ JKRExpHeap* mpHeap;
    /* 0x114 */ s16 field_0x114;
    /* 0x116 */ s16 field_0x116;
    /* 0x118 */ u8 mState;
    /* 0x119 */ bool mAnimeStart;
    /* 0x11C */ u8 field_0x11c;
};

#endif /* D_GAMEOVER_H */