mirror of
https://github.com/encounter/mkdd.git
synced 2026-03-30 11:30:02 -07:00
118 lines
2.3 KiB
C++
118 lines
2.3 KiB
C++
#include "types.h"
|
|
#include "JSystem/JUtility/JUTFader.h"
|
|
#include "JSystem/JUtility/TColor.h"
|
|
#include "JSystem/J2D/J2DGrafContext.h"
|
|
|
|
JUTFader::JUTFader(int p1, int p2, int p3, int p4, JUtility::TColor color)
|
|
: mColor(color), mViewBox(p1, p2, p1 + p3, p2 + p4)
|
|
{
|
|
mStatus = Status_Out;
|
|
mTicksTarget = 0;
|
|
mTicksRun = 0;
|
|
mResetting = false;
|
|
_28 = Status_Out;
|
|
mEStatus = -1;
|
|
}
|
|
|
|
void JUTFader::control()
|
|
{
|
|
if (0 <= mEStatus && mEStatus-- == 0)
|
|
mStatus = _28;
|
|
|
|
if (mStatus == Status_In)
|
|
return;
|
|
|
|
switch (mStatus)
|
|
{
|
|
case Status_Out:
|
|
mColor.a = 0xFF;
|
|
break;
|
|
case Status_FadingIn:
|
|
mColor.a = 0xFF - ((++mTicksRun * 0xFF) / mTicksTarget);
|
|
if (mTicksRun >= mTicksTarget)
|
|
{
|
|
mColor.a = 0;
|
|
mStatus = Status_In;
|
|
}
|
|
break;
|
|
case Status_FadingOut:
|
|
mColor.a = ((++mTicksRun * 0xFF) / mTicksTarget);
|
|
if (mTicksRun >= mTicksTarget)
|
|
{
|
|
mColor.a = 0xFF;
|
|
mStatus = Status_Out;
|
|
}
|
|
break;
|
|
}
|
|
draw();
|
|
}
|
|
|
|
void JUTFader::draw()
|
|
{
|
|
if (mColor.a == 0)
|
|
return;
|
|
|
|
J2DOrthoGraph orthograph;
|
|
orthograph.setColor(mColor);
|
|
orthograph.fillBox(mViewBox);
|
|
}
|
|
|
|
void JUTFader::start(int)
|
|
{
|
|
// UNUSED FUNCTION
|
|
}
|
|
|
|
bool JUTFader::startFadeIn(int duration)
|
|
{
|
|
if (mResetting)
|
|
return false;
|
|
|
|
mStatus = Status_FadingIn;
|
|
mTicksTarget = duration;
|
|
mTicksRun = duration - (mColor.a * duration) / 0xFF;
|
|
|
|
return true;
|
|
}
|
|
|
|
bool JUTFader::startFadeOut(int duration)
|
|
{
|
|
if (mResetting)
|
|
return false;
|
|
|
|
mStatus = Status_FadingOut;
|
|
mTicksTarget = duration;
|
|
mTicksRun = (mColor.a * duration) / 0xFF;
|
|
|
|
return true;
|
|
}
|
|
|
|
void JUTFader::setStatus(JUTFader::EStatus i_status, int param_1)
|
|
{
|
|
switch (i_status)
|
|
{
|
|
case Status_Out:
|
|
if (param_1 != 0)
|
|
{
|
|
_28 = Status_Out;
|
|
mEStatus = (u16)param_1;
|
|
break;
|
|
}
|
|
|
|
mStatus = Status_Out;
|
|
_28 = Status_Out;
|
|
mEStatus = 0;
|
|
break;
|
|
case Status_In:
|
|
if (param_1 != 0)
|
|
{
|
|
_28 = Status_In;
|
|
mEStatus = (u16)param_1;
|
|
break;
|
|
}
|
|
|
|
mStatus = Status_In;
|
|
_28 = Status_In;
|
|
mEStatus = 0;
|
|
break;
|
|
}
|
|
} |