Files
2023-06-04 03:20:57 +02:00

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