summaryrefslogtreecommitdiff
path: root/libs/JSystem/JUtility/JUTFader.cpp
blob: 0cd2d3b954653b7a0621ccb32c563f30b8e72c21 (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
112
113
114
115
116
117
118
119
/**
 * JUTFader.cpp
 * JUtility - Color Fader
 */

#include "JSystem/JUtility/JUTFader.h"
#include "JSystem/J2DGraph/J2DOrthoGraph.h"

/* 802E5530-802E55DC 2DFE70 00AC+00 0/0 1/1 0/0 .text __ct__8JUTFaderFiiiiQ28JUtility6TColor */
JUTFader::JUTFader(int x, int y, int width, int height, JUtility::TColor pColor)
    : mColor(pColor), mBox(x, y, x + width, y + height) {
    mStatus = 0;
    field_0x8 = 0;
    field_0xa = 0;
    field_0x24 = 0;
    mEStatus = UNKSTATUS_M1;
}

/* 802E55DC-802E56DC 2DFF1C 0100+00 0/0 1/1 0/0 .text            control__8JUTFaderFv */
void JUTFader::control() {
    if (0 <= mEStatus && mEStatus-- == 0) {
		mStatus = field_0x24;
	}

	if (mStatus == 1) {
		return;
	}
    
	switch (mStatus) {
    case 0:
        mColor.a = 0xFF;
        break;
    case 2:
        mColor.a = 0xFF - ((++field_0xa * 0xFF) / field_0x8);

        if (field_0xa >= field_0x8) {
            mStatus = 1;
        }

        break;
    case 3:
        mColor.a = ((++field_0xa * 0xFF) / field_0x8);

        if (field_0xa >= field_0x8) {
            mStatus = 0;
        }

        break;
	}
	draw();
}

/* 802E56DC-802E576C 2E001C 0090+00 1/0 0/0 0/0 .text            draw__8JUTFaderFv */
void JUTFader::draw() {
    if (mColor.a == 0) {
		return;
	}

	J2DOrthoGraph orthograph;
	orthograph.setColor(mColor);
	orthograph.fillBox(mBox);
}

/* 802E576C-802E579C 2E00AC 0030+00 1/0 0/0 0/0 .text            startFadeIn__8JUTFaderFi */
bool JUTFader::startFadeIn(int param_0) {
    bool statusCheck = mStatus == 0;

    if (statusCheck) {
        mStatus = 2;
        field_0xa = 0;
        field_0x8 = param_0;
    }

    return statusCheck;
}

/* 802E579C-802E57D0 2E00DC 0034+00 1/0 0/0 0/0 .text            startFadeOut__8JUTFaderFi */
bool JUTFader::startFadeOut(int param_0) {
    bool statusCheck = mStatus == 1;

    if (statusCheck) {
        mStatus = 3;
        field_0xa = 0;
        field_0x8 = param_0;
    }

    return statusCheck;
}

/* 802E57D0-802E5840 2E0110 0070+00 0/0 1/1 0/0 .text setStatus__8JUTFaderFQ28JUTFader7EStatusi */
void JUTFader::setStatus(JUTFader::EStatus i_status, int param_1) {
    switch (i_status) {
    case 0: 
        if (param_1 != 0) {
            field_0x24 = 0;
            mEStatus = param_1;
            break;
        }

        mStatus = 0;
        field_0x24 = 0;
        mEStatus = 0;
        break;
    case 1: 
        if (param_1 != 0) {
            field_0x24 = 1;
            mEStatus = param_1;
            break;
        }

        mStatus = 1;
        field_0x24 = 1;
        mEStatus = 0;
        break;
    }
}

/* 802E5840-802E5888 2E0180 0048+00 1/0 0/0 0/0 .text            __dt__8JUTFaderFv */
JUTFader::~JUTFader() {}