mirror of
https://github.com/AxioDL/metaforce.git
synced 2025-12-09 02:27:43 +00:00
Various stubs and imps
This commit is contained in:
99
Runtime/GuiSys/CFontRenderState.cpp
Normal file
99
Runtime/GuiSys/CFontRenderState.cpp
Normal file
@@ -0,0 +1,99 @@
|
||||
#include "CFontRenderState.hpp"
|
||||
#include "CRasterFont.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
|
||||
CFontRenderState::CFontRenderState()
|
||||
{
|
||||
x20_[0] = zeus::CColor::skWhite;
|
||||
x20_[1] = zeus::CColor::skGrey;
|
||||
x20_[2] = zeus::CColor::skWhite;
|
||||
RefreshPalette();
|
||||
}
|
||||
|
||||
zeus::CColor CFontRenderState::ConvertToTextureSpace(const CTextColor& col) const
|
||||
{
|
||||
return col;
|
||||
}
|
||||
|
||||
void CFontRenderState::PopState()
|
||||
{
|
||||
static_cast<CSaveableState&>(*this) = xa4_pushedStates.back();
|
||||
xa4_pushedStates.pop_back();
|
||||
RefreshPalette();
|
||||
}
|
||||
|
||||
void CFontRenderState::PushState()
|
||||
{
|
||||
xa4_pushedStates.push_back(*this);
|
||||
}
|
||||
|
||||
void CFontRenderState::SetColor(EColorType tp, const CTextColor& col)
|
||||
{
|
||||
switch (tp)
|
||||
{
|
||||
case EColorType::Zero:
|
||||
case EColorType::One:
|
||||
case EColorType::Two:
|
||||
x20_[int(tp)] = col;
|
||||
break;
|
||||
case EColorType::Three:
|
||||
x20_[0] = col;
|
||||
break;
|
||||
case EColorType::Four:
|
||||
x20_[1] = col;
|
||||
break;
|
||||
}
|
||||
RefreshColor(tp);
|
||||
}
|
||||
|
||||
void CFontRenderState::RefreshPalette()
|
||||
{
|
||||
RefreshColor(EColorType::Three);
|
||||
RefreshColor(EColorType::Four);
|
||||
}
|
||||
|
||||
void CFontRenderState::RefreshColor(EColorType tp)
|
||||
{
|
||||
switch (tp)
|
||||
{
|
||||
case EColorType::Zero:
|
||||
if (!x14_token)
|
||||
return;
|
||||
switch (x14_token.GetObj()->GetMode())
|
||||
{
|
||||
case EColorType::Zero:
|
||||
if (!x30_[0])
|
||||
x0_drawStrOpts.x4_vec[0] = ConvertToTextureSpace(x20_[0]);
|
||||
break;
|
||||
case EColorType::One:
|
||||
if (!x30_[0])
|
||||
x0_drawStrOpts.x4_vec[0] = ConvertToTextureSpace(x20_[0]);
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
break;
|
||||
case EColorType::One:
|
||||
if (!x14_token)
|
||||
return;
|
||||
if (x30_[1])
|
||||
return;
|
||||
if (x14_token.GetObj()->GetMode() == EColorType::One)
|
||||
x0_drawStrOpts.x4_vec[1] = ConvertToTextureSpace(x20_[1]);
|
||||
break;
|
||||
case EColorType::Two:
|
||||
if (!x30_[2])
|
||||
x0_drawStrOpts.x4_vec[2] = ConvertToTextureSpace(x20_[2]);
|
||||
break;
|
||||
case EColorType::Three:
|
||||
RefreshColor(EColorType::Zero);
|
||||
RefreshColor(EColorType::Two);
|
||||
break;
|
||||
case EColorType::Four:
|
||||
RefreshColor(EColorType::One);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user