summaryrefslogtreecommitdiff
path: root/libs/JSystem/src/JUtility/JUTFader.cpp
blob: 35bcb09d87efb9c299da6db67fe3940c41f720f1 (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
/**
 * JUTFader.cpp
 * JUtility - Color Fader
 */

#include "JSystem/JSystem.h" // IWYU pragma: keep

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

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;
}

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();
}

void JUTFader::draw() {
    if (mColor.a != 0) {
        J2DOrthoGraph orthograph;
        orthograph.setColor(mColor);
        orthograph.fillBox(mBox);
    }
}

bool JUTFader::startFadeIn(int param_0) {
    bool statusCheck = mStatus == 0;

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

    return statusCheck;
}

bool JUTFader::startFadeOut(int param_0) {
    bool statusCheck = mStatus == 1;

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

    return statusCheck;
}

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;
    }
}

JUTFader::~JUTFader() {}