Skip to content

Commit

Permalink
Removed CUITextWnd (#382)
Browse files Browse the repository at this point in the history
Lua scripts will now use CUIStatic too
  • Loading branch information
Xottab-DUTY committed Feb 9, 2024
1 parent 56832f1 commit 6ce635b
Show file tree
Hide file tree
Showing 8 changed files with 55 additions and 185 deletions.
6 changes: 3 additions & 3 deletions src/xrGame/ScriptXMLInit.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -82,10 +82,10 @@ CUIStatic* CScriptXmlInit::InitStatic(LPCSTR path, CUIWindow* parent)
return pWnd;
}

CUITextWnd* CScriptXmlInit::InitTextWnd(LPCSTR path, CUIWindow* parent)
CUIStatic* CScriptXmlInit::InitTextWnd(LPCSTR path, CUIWindow* parent)
{
CUITextWnd* pWnd = xr_new<CUITextWnd>();
CUIXmlInit::InitTextWnd(m_xml, path, 0, pWnd);
auto* pWnd = xr_new<CUIStatic>(path);
CUIXmlInit::InitStatic(m_xml, path, 0, pWnd, true, true);
_attach_child(pWnd, parent);
return pWnd;
}
Expand Down
3 changes: 1 addition & 2 deletions src/xrGame/ScriptXMLInit.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
class CUIWindow;
class CUIFrameWindow;
class CUIStatic;
class CUITextWnd;
class CUICheckButton;
class CUISpinNum;
class CUISpinText;
Expand Down Expand Up @@ -43,7 +42,7 @@ class CScriptXmlInit
CUIStatic* InitStatic(LPCSTR path, CUIWindow* parent);
CUIStatic* InitAnimStatic(LPCSTR path, CUIWindow* parent);
CUIStatic* InitSleepStatic(LPCSTR path, CUIWindow* parent);
CUITextWnd* InitTextWnd(LPCSTR path, CUIWindow* parent);
CUIStatic* InitTextWnd(LPCSTR path, CUIWindow* parent);
CUICheckButton* InitCheck(LPCSTR path, CUIWindow* parent);
CUISpinNum* InitSpinNum(LPCSTR path, CUIWindow* parent);
CUISpinFlt* InitSpinFlt(LPCSTR path, CUIWindow* parent);
Expand Down
54 changes: 1 addition & 53 deletions src/xrUICore/Static/UIStatic.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,7 @@ void CUIStatic::ColorAnimationSetTextureColor(u32 color, bool only_alpha)

void CUIStatic::ColorAnimationSetTextColor(u32 color, bool only_alpha)
{
TextItemControl()->SetTextColor((only_alpha) ? subst_alpha(TextItemControl()->GetTextColor(), color) : color);
SetTextColor((only_alpha) ? subst_alpha(GetTextColor(), color) : color);
}

void CUIStatic::FillDebugInfo()
Expand Down Expand Up @@ -271,55 +271,3 @@ void CUIStatic::OnFocusLost()
if (g_statHint->Owner() == this)
g_statHint->Discard();
}

//-------------------------------------
CUITextWnd::CUITextWnd() : CUIWindow("CUITextWnd") {}

void CUITextWnd::AdjustHeightToText()
{
if (!fsimilar(TextItemControl().m_wndSize.x, GetWidth()))
{
TextItemControl().m_wndSize.x = GetWidth();
TextItemControl().ParseText(true);
}
SetHeight(TextItemControl().GetVisibleHeight());
}

void CUITextWnd::AdjustWidthToText()
{
float _len = TextItemControl().GetFont()->SizeOf_(TextItemControl().GetText());
UI().ClientToScreenScaledWidth(_len);
SetWidth(_len);
}

void CUITextWnd::Draw()
{
if (!fsimilar(TextItemControl().m_wndSize.x, m_wndSize.x) || !fsimilar(TextItemControl().m_wndSize.y, m_wndSize.y))
{
TextItemControl().m_wndSize = m_wndSize;
TextItemControl().ParseText(true);
}

Fvector2 p;
GetAbsolutePos(p);
TextItemControl().Draw(p.x, p.y);
}

void CUITextWnd::Update()
{
R_ASSERT(GetChildWndList().size() == 0);
UpdateColorAnimation();
inherited::Update();
}

void CUITextWnd::ColorAnimationSetTextColor(u32 color, bool only_alpha)
{
SetTextColor((only_alpha) ? subst_alpha(GetTextColor(), color) : color);
}

void CUITextWnd::FillDebugInfo()
{
#ifndef MASTER_GOLD

#endif
}
59 changes: 12 additions & 47 deletions src/xrUICore/Static/UIStatic.h
Original file line number Diff line number Diff line change
Expand Up @@ -43,15 +43,21 @@ class XRUICORE_API CUIStatic : public CUIWindow, public ITextureOwner, public CU
virtual pcstr GetText() const { return const_cast<CUIStatic*>(this)->TextItemControl()->GetText(); }
virtual void SetText(pcstr txt) { TextItemControl()->SetText(txt); }
virtual void SetTextST(pcstr txt) { TextItemControl()->SetTextST(txt); }
void SetFont(CGameFont* F) override { TextItemControl()->SetFont(F); }
CGameFont* GetFont() override { return TextItemControl()->GetFont(); }

u32 GetTextColor()
{
return TextItemControl()->GetTextColor();
}
u32 GetTextColor() { return TextItemControl()->GetTextColor(); }
void SetTextColor(u32 color) { TextItemControl()->SetTextColor(color); }

void SetTextColor(u32 color)
void SetTextComplexMode(bool mode = true) { TextItemControl()->SetTextComplexMode(mode); }
void SetTextAlignment(ETextAlignment al) { TextItemControl()->SetTextAlignment(al); }
void SetVTextAlignment(EVTextAlignment al) { TextItemControl()->SetVTextAlignment(al); }
void SetEllipsis(bool mode) { TextItemControl()->SetEllipsis(mode); }
void SetCutWordsMode(bool mode) { TextItemControl()->SetCutWordsMode(mode); }
void SetTextOffset(float x, float y)
{
TextItemControl()->SetTextColor(color);
TextItemControl()->m_TextOffset.x = x;
TextItemControl()->m_TextOffset.y = y;
}

virtual void SetTextX(float text_x) { TextItemControl()->m_TextOffset.x = text_x; }
Expand Down Expand Up @@ -96,7 +102,6 @@ class XRUICORE_API CUIStatic : public CUIWindow, public ITextureOwner, public CU
CUIStaticItem& GetUIStaticItem() { return m_UIStaticItem; }
void SetStretchTexture(bool stretch_texture) { m_bStretchTexture = stretch_texture; }
bool GetStretchTexture() { return m_bStretchTexture; }
void SetEllipsis(int pos, int indent) { TextItemControl()->SetEllipsis(pos != 0); }
void SetHeading(float f) { m_fHeading = f; };
float GetHeading() { return m_fHeading; }
bool Heading() { return m_bHeading; }
Expand Down Expand Up @@ -126,43 +131,3 @@ class XRUICORE_API CUIStatic : public CUIWindow, public ITextureOwner, public CU
CUILines* TextItemControl();
shared_str m_stat_hint_text;
};

class XRUICORE_API CUITextWnd final : public CUIWindow, public CUILightAnimColorConrollerImpl
{
typedef CUIWindow inherited;
CUILines m_lines;

public:
CUITextWnd();

virtual void Draw();
virtual void Update();

void AdjustHeightToText();
void AdjustWidthToText();

void SetText(LPCSTR txt) { TextItemControl().SetText(txt); }
void SetTextST(LPCSTR txt) { TextItemControl().SetTextST(txt); }
LPCSTR GetText() { return TextItemControl().GetText(); }
void SetFont(CGameFont* F) { TextItemControl().SetFont(F); }
CGameFont* GetFont() { return TextItemControl().GetFont(); }
void SetTextColor(u32 color) { TextItemControl().SetTextColor(color); }
u32 GetTextColor() { return TextItemControl().GetTextColor(); }
void SetTextComplexMode(bool mode = true) { TextItemControl().SetTextComplexMode(mode); }
void SetTextAlignment(ETextAlignment al) { TextItemControl().SetTextAlignment(al); }
void SetVTextAlignment(EVTextAlignment al) { TextItemControl().SetVTextAlignment(al); }
void SetEllipsis(bool mode) { TextItemControl().SetEllipsis(mode); }
void SetCutWordsMode(bool mode) { TextItemControl().SetCutWordsMode(mode); }
void SetTextOffset(float x, float y)
{
TextItemControl().m_TextOffset.x = x;
TextItemControl().m_TextOffset.y = y;
}

virtual void ColorAnimationSetTextColor(u32 color, bool only_alpha);

CUILines& TextItemControl() { return m_lines; }

pcstr GetDebugType() override { return "CUITextWnd"; }
void FillDebugInfo() override;
};
50 changes: 22 additions & 28 deletions src/xrUICore/Static/UIStatic_script.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,8 @@ SCRIPT_EXPORT(CUIStatic, (CUIWindow),

.def("TextControl", &CUIStatic::TextItemControl)

.def("SetText", (void (CUIStatic::*)(LPCSTR)) (&CUIStatic::SetText))
.def("SetTextST", (void (CUIStatic::*)(LPCSTR)) (&CUIStatic::SetTextST))
.def("SetText", &CUIStatic::SetText)
.def("SetTextST", &CUIStatic::SetTextST)

.def("GetText", &CUIStatic::GetText)

Expand All @@ -52,10 +52,21 @@ SCRIPT_EXPORT(CUIStatic, (CUIWindow),
.def("SetColor", &CUIStatic::SetColor)
.def("GetColor", &CUIStatic::GetColor)

.def("SetFont", &CUIStatic::SetFont)
.def("GetFont", &CUIStatic::GetFont)

.def("SetTextColor", +[](CUIStatic* self, int a, int r, int g, int b)
{
self->SetTextColor(color_argb(a, r, g, b));
})
.def("GetTextColor", &CUIStatic::GetTextColor)
.def("SetTextComplexMode", &CUIStatic::SetTextComplexMode)
.def("SetTextAlignment", &CUIStatic::SetTextAlignment)
.def("SetVTextAlignment", &CUIStatic::SetVTextAlignment)

.def("AdjustHeightToText", &CUIStatic::AdjustHeightToText)
.def("AdjustWidthToText", &CUIStatic::AdjustWidthToText)
.def("SetTextOffset", &CUIStatic::SetTextOffset)

.def("Init", +[](CUIStatic* self, float x, float y, float width, float height)
{
Expand All @@ -74,6 +85,9 @@ SCRIPT_EXPORT(CUIStatic, (CUIWindow),
.def("InitTextureEx", &CUIStatic::InitTextureEx)
.def("InitTextureEx", +[](CUIStatic* self, pcstr texture, pcstr shader) { self->InitTextureEx(texture, shader); })

.def("SetTextureColor", &CUIStatic::SetTextureColor)
.def("GetTextureColor", &CUIStatic::GetTextureColor)

.def("SetTextureOffset", &CUIStatic::SetTextureOffset)

.def("SetTextureRect", &CUIStatic::SetTextureRect_script)
Expand Down Expand Up @@ -103,34 +117,14 @@ SCRIPT_EXPORT(CUIStatic, (CUIWindow),

//.def("GetClipperState", &CUIStatic::GetClipperState)

.def("SetElipsis", &CUIStatic::SetEllipsis),
.def("SetEllipsis", &CUIStatic::SetEllipsis)
.def("SetElipsis", &CUIStatic::SetEllipsis)
.def("SetElipsis", +[](CUIStatic* self, int mode, int indent)
{
self->SetEllipsis(mode != 0);
}),

class_<CUIStaticScript, CUIStatic>("CUIStatic")
.def(constructor<>())
];
});

SCRIPT_EXPORT(CUITextWnd, (CUIWindow),
{
using namespace luabind;

module(luaState)
[
class_<CUITextWnd, CUIWindow>("CUITextWnd")
.def(constructor<>())
.def("AdjustHeightToText", &CUITextWnd::AdjustHeightToText)
.def("AdjustWidthToText", &CUITextWnd::AdjustWidthToText)
.def("SetText", &CUITextWnd::SetText)
.def("SetTextST", &CUITextWnd::SetTextST)
.def("GetText", &CUITextWnd::GetText)
.def("SetFont", &CUITextWnd::SetFont)
.def("GetFont", &CUITextWnd::GetFont)
.def("SetTextColor", &CUITextWnd::SetTextColor)
.def("GetTextColor", &CUITextWnd::GetTextColor)
.def("SetTextComplexMode", &CUITextWnd::SetTextComplexMode)
.def("SetTextAlignment", &CUITextWnd::SetTextAlignment)
.def("SetVTextAlignment", &CUITextWnd::SetVTextAlignment)
.def("SetEllipsis", &CUITextWnd::SetEllipsis)
.def("SetTextOffset", &CUITextWnd::SetTextOffset)
];
});
5 changes: 1 addition & 4 deletions src/xrUICore/Windows/UIWindow.h
Original file line number Diff line number Diff line change
Expand Up @@ -118,10 +118,7 @@ class XRUICORE_API CUIWindow : public CUISimpleWindow, public CUIDebuggable
virtual void Reset();
void ResetAll();

virtual void SetFont(CGameFont* pFont)
{
UNUSED(pFont);
}
virtual void SetFont(CGameFont* /*pFont*/) {}

virtual CGameFont* GetFont()
{
Expand Down
58 changes: 14 additions & 44 deletions src/xrUICore/XML/UIXmlInitBase.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -135,13 +135,13 @@ bool CUIXmlInitBase::InitOptionsItem(CUIXml& xml_doc, LPCSTR path, int index, CU
return false;
}

bool CUIXmlInitBase::InitStatic(CUIXml& xml_doc, LPCSTR path, int index, CUIStatic* pWnd, bool fatal /*= true*/)
bool CUIXmlInitBase::InitStatic(CUIXml& xml_doc, LPCSTR path, int index, CUIStatic* pWnd, bool fatal /*= true*/, bool textWnd /*= false*/)
{
if (!InitWindow(xml_doc, path, index, pWnd, fatal))
return false;

string256 buf;
InitText(xml_doc, strconcat(sizeof(buf), buf, path, ":text"), index, pWnd);
InitText(xml_doc, strconcat(sizeof(buf), buf, path, ":text"), index, pWnd->TextItemControl());
InitTexture(xml_doc, path, index, pWnd);
InitTextureOffset(xml_doc, path, index, pWnd);

Expand All @@ -167,7 +167,7 @@ bool CUIXmlInitBase::InitStatic(CUIXml& xml_doc, LPCSTR path, int index, CUIStat
flags |= LA_CYCLIC;
if (flag_alpha)
flags |= LA_ONLYALPHA;
if (flag_text)
if (flag_text || textWnd)
flags |= LA_TEXTCOLOR;
if (flag_texture)
flags |= LA_TEXTURECOLOR;
Expand All @@ -185,38 +185,16 @@ bool CUIXmlInitBase::InitStatic(CUIXml& xml_doc, LPCSTR path, int index, CUIStat

pWnd->m_stat_hint_text = xml_doc.ReadAttrib(path, index, "hint", "");

return true;
}

bool CUIXmlInitBase::InitTextWnd(CUIXml& xml_doc, LPCSTR path, int index, CUITextWnd* pWnd, bool fatal /*= true*/)
{
if (!InitWindow(xml_doc, path, index, pWnd, fatal))
return false;

string256 buf;
InitText(xml_doc, strconcat(sizeof(buf), buf, path, ":text"), index, &pWnd->TextItemControl());

LPCSTR str_flag = xml_doc.ReadAttrib(path, index, "light_anim", "");
int flag_cyclic = xml_doc.ReadAttribInt(path, index, "la_cyclic", 1);
int flag_alpha = xml_doc.ReadAttribInt(path, index, "la_alpha", 0);

u8 flags = LA_TEXTCOLOR;
if (flag_cyclic)
flags |= LA_CYCLIC;
if (flag_alpha)
flags |= LA_ONLYALPHA;
pWnd->SetColorAnimation(str_flag, flags);

bool bComplexMode = xml_doc.ReadAttribInt(path, index, "complex_mode", 0) ? true : false;
if (bComplexMode)
pWnd->SetTextComplexMode(bComplexMode);

strconcat(sizeof(buf), buf, path, ":texture");
R_ASSERT3(NULL == xml_doc.NavigateToNode(buf, index), xml_doc.m_xml_file_name, buf);
if (textWnd)
{
strconcat(sizeof(buf), buf, path, ":texture");
R_ASSERT3(nullptr == xml_doc.NavigateToNode(buf, index), xml_doc.m_xml_file_name, buf);

R_ASSERT(pWnd->GetChildWndList().size() == 0);
R_ASSERT2(pWnd->GetChildWndList().empty(),
"CUITextWnd should have no children. "
"Use InitStatic from Lua, if you want your UI element to have children.");
}
return true;

}

bool CUIXmlInitBase::InitCheck(CUIXml& xml_doc, LPCSTR path, int index, CUICheckButton* pWnd, bool fatal /*= true*/)
Expand Down Expand Up @@ -290,14 +268,6 @@ bool CUIXmlInitBase::InitSpin(CUIXml& xml_doc, LPCSTR path, int index, CUICustom
return true;
}

bool CUIXmlInitBase::InitText(CUIXml& xml_doc, LPCSTR path, int index, CUIStatic* pWnd)
{
if (!xml_doc.NavigateToNode(path, index))
return false;

return InitText(xml_doc, path, index, pWnd->TextItemControl());
}

bool CUIXmlInitBase::InitText(CUIXml& xml_doc, LPCSTR path, int index, CUILines* pLines)
{
if (!xml_doc.NavigateToNode(path, index))
Expand Down Expand Up @@ -366,7 +336,7 @@ bool CUIXmlInitBase::Init3tButton(CUIXml& xml_doc, LPCSTR path, int index, CUI3t
pWnd->InitButton(pWnd->GetWndPos(), pWnd->GetWndSize());

string256 buf;
InitText(xml_doc, strconcat(sizeof(buf), buf, path, ":text"), index, pWnd);
InitText(xml_doc, strconcat(sizeof(buf), buf, path, ":text"), index, pWnd->TextItemControl());
u32 color;

strconcat(sizeof(buf), buf, path, ":text_color:e");
Expand Down Expand Up @@ -1200,8 +1170,8 @@ bool CUIXmlInitBase::InitScrollView(CUIXml& xml_doc, LPCSTR path, int index, CUI

for (int i = 0; i < tabsCount; ++i)
{
CUITextWnd* newText = xr_new<CUITextWnd>();
InitText(xml_doc, "text", i, &newText->TextItemControl());
auto* newText = xr_new<CUIStatic>("Text");
InitText(xml_doc, "text", i, newText->TextItemControl());
newText->SetTextComplexMode(true);
newText->SetWidth(pWnd->GetDesiredChildWidth());
newText->AdjustHeightToText();
Expand Down
5 changes: 1 addition & 4 deletions src/xrUICore/XML/UIXmlInitBase.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ class CUIDragDropListEx;
class CUIComboBox;
class CUITrackBar;
class CUILines;
class CUITextWnd;
class CGameFont;

class XRUICORE_API CUIXmlInitBase
Expand All @@ -46,11 +45,9 @@ class XRUICORE_API CUIXmlInitBase
static bool InitTextFrameLine(CUIXml& xml_doc, LPCSTR path, int index, CUITextFrameLineWnd* pWnd, bool fatal = true);
static bool InitCustomEdit(CUIXml& xml_doc, LPCSTR paht, int index, CUICustomEdit* pWnd, bool fatal = true);
static bool InitEditBox(CUIXml& xml_doc, LPCSTR paht, int index, CUIEditBox* pWnd, bool fatal = true);
static bool InitStatic(CUIXml& xml_doc, LPCSTR path, int index, CUIStatic* pWnd, bool fatal = true);
static bool InitTextWnd(CUIXml& xml_doc, LPCSTR path, int index, CUITextWnd* pWnd, bool fatal = true);
static bool InitStatic(CUIXml& xml_doc, LPCSTR path, int index, CUIStatic* pWnd, bool fatal = true, bool textWnd = false);
static bool InitCheck(CUIXml& xml_doc, LPCSTR path, int index, CUICheckButton* pWnd, bool fatal = true);
static bool InitSpin(CUIXml& xml_doc, LPCSTR path, int index, CUICustomSpin* pWnd, bool fatal = true);
static bool InitText(CUIXml& xml_doc, LPCSTR path, int index, CUIStatic* pWnd);
static bool InitText(CUIXml& xml_doc, LPCSTR path, int index, CUILines* pLines);
static bool Init3tButton(CUIXml& xml_doc, LPCSTR path, int index, CUI3tButton* pWnd, bool fatal = true);
static bool InitProgressBar(CUIXml& xml_doc, LPCSTR path, int index, CUIProgressBar* pWnd, bool fatal = true);
Expand Down

0 comments on commit 6ce635b

Please sign in to comment.