ChatPlexSDK-BS 1.0.1-v6.2.0
C++ ChatPlex BeatSaber SDK
Loading...
Searching...
No Matches
XUIText.hpp
1#pragma once
2
3#include "../UI/Components/CText.hpp"
4#include "Generics/IXUIElement.hpp"
5#include "Generics/IXUIBindable.hpp"
6#include "Generics/IXUIElementReady.hpp"
7
8namespace CP_SDK::XUI {
9
11 class XUIText :
12 public IXUIElement,
13 public IXUIElementReady<XUIText, _v::CText>,
14 public IXUIBindable<XUIText>,
15 public std::enable_shared_from_this<XUIText>
16 {
17 CP_SDK_NO_COPYMOVE_CTORS(XUIText);
18 CP_SDK_PRIV_TAG();
19
20 private:
21 _v::MonoPtr<_v::CText> m_Element;
22
23 _v::Event<_v::CText*> m_OnReady;
24
25 public:
26 std::shared_ptr<XUIText> AsShared() { return std::enable_shared_from_this<XUIText>::shared_from_this(); }
27
28 virtual _v::UIFieldRef<_u::RectTransform> RTransform() override
29 {
30 return m_Element ? m_Element->RTransform() : _v::UIFieldDefault<_u::RectTransform>::Value;
31 }
32 virtual _v::UIFieldRef<_v::CText> Element()
33 {
34 return m_Element;
35 }
36
37 public:
38 static constexpr ETypeID TypeID = ETypeID::Text;
39 using Ptr = std::shared_ptr<XUIText>;
40
41 XUIText(CP_SDK_PRIV_TAG_ARG(), std::u16string_view p_Name, std::u16string_view p_Text)
42 : IXUIElement(p_Name, TypeID)
43 {
44 SetText(std::u16string(p_Text));
45 }
46
47 public:
50 static Ptr Make(std::u16string_view p_Text)
51 {
52 return std::make_shared<XUIText>(CP_SDK_PRIV_TAG_VAL(), u"XUIText", p_Text);
53 }
57 static Ptr Make(std::u16string_view p_Name, std::u16string_view p_Text)
58 {
59 return std::make_shared<XUIText>(CP_SDK_PRIV_TAG_VAL(), p_Name, p_Text);
60 }
61
62 public:
65 virtual void BuildUI(_u::Transform* p_Parent) override
66 {
67 m_Element = _v::UISystem::TextFactory->Create(IXUIElement::GetInitialName(), p_Parent);
68
69 try { m_OnReady(m_Element.Ptr()); m_OnReady.Clear(); }
70 catch (const std::exception& l_Exception)
71 {
72 ChatPlexSDK::Logger()->Error(u"[CP_SDK.XUI][XUIText.BuildUI] Error OnReady:");
73 ChatPlexSDK::Logger()->Error(l_Exception);
74 }
75 }
76
77 public:
80 virtual XUIText* OnReady(_v::CActionRef<_v::CText*> p_Functor) override
81 {
82 if (m_Element) p_Functor(m_Element.Ptr());
83 else m_OnReady += p_Functor;
84 return this;
85 }
88 virtual XUIText* Bind(std::shared_ptr<XUIText>* p_Target) override
89 {
90 *p_Target = std::enable_shared_from_this<XUIText>::shared_from_this();
91 return this;
92 }
93
94 public:
97 XUIText* SetActive(bool p_Active) XUI_PROXY_IMPL(_v::CText, { x->get_gameObject()->SetActive(p_Active); })
98
99 public:
102 XUIText* SetAlign(_u::TextAlignmentOptions p_Align) XUI_PROXY_IMPL(_v::CText, { x->SetAlign(p_Align); })
105 XUIText* SetAlpha(float p_Alpha) XUI_PROXY_IMPL(_v::CText, { x->SetAlpha(p_Alpha); })
108 XUIText* SetColor(Color p_Color) XUI_PROXY_IMPL(_v::CText, { x->SetColor(p_Color); })
111 XUIText* SetFontSize(float p_Size) XUI_PROXY_IMPL(_v::CText, { x->SetFontSize(p_Size); })
115 XUIText* SetFontSizes(float p_MinSize, float p_MaxSize) XUI_PROXY_IMPL(_v::CText, { x->SetFontSizes(p_MinSize, p_MaxSize); })
121 XUIText* SetMargins(float p_Left, float p_Top, float p_Right, float p_Bottom) XUI_PROXY_IMPL(_v::CText, { x->SetMargins(p_Left, p_Top, p_Right, p_Bottom); })
124 XUIText* SetOverflowMode(_u::TextOverflowModes p_OverflowMode) XUI_PROXY_IMPL(_v::CText, { x->SetOverflowMode(p_OverflowMode); })
127 XUIText* SetStyle(_u::FontStyles p_Style) XUI_PROXY_IMPL(_v::CText, { x->SetStyle(p_Style); })
130 XUIText* SetText(std::u16string p_Text) XUI_PROXY_IMPL(_v::CText, { x->SetText(p_Text); })
133 XUIText* SetWrapping(bool p_Wrapping) XUI_PROXY_IMPL(_v::CText, { x->SetWrapping(p_Wrapping); })
134
135 };
136
137}
static Logging::ILogger * Logger()
Logger instance.
CText * SetMargins(float p_Left, float p_Top, float p_Right, float p_Bottom)
Set margins.
CText * SetFontSize(float p_Size)
Set font size.
CText * SetColor(_u::Color p_Color)
Set color.
CText * SetText(std::u16string_view p_Text)
Set button text.
CText * SetAlpha(float p_Alpha)
Set alpha.
CText * SetStyle(_u::FontStyles p_Style)
Set style.
CText * SetOverflowMode(_u::TextOverflowModes p_OverflowMode)
Set overflow mode.
CText * SetWrapping(bool p_Wrapping)
Set wrapping.
CText * SetFontSizes(float p_MinSize, float p_MaxSize)
Set font sizes.
Event class helper.
Definition Event.hpp:100
IXUIElement Bind interface.
Element interface.
std::u16string_view GetInitialName()
Get initial name.
IXUIElement OnReady functor interface.
CText XUI Element.
Definition XUIText.hpp:16
XUIText * SetStyle(_u::FontStyles p_Style) XUI_PROXY_IMPL(_v
Set style.
Definition XUIText.hpp:127
XUIText * SetMargins(float p_Left, float p_Top, float p_Right, float p_Bottom) XUI_PROXY_IMPL(_v
Set margins.
Definition XUIText.hpp:121
XUIText * SetText(std::u16string p_Text) XUI_PROXY_IMPL(_v
Set button text.
Definition XUIText.hpp:130
XUIText * SetFontSize(float p_Size) XUI_PROXY_IMPL(_v
Set font size.
Definition XUIText.hpp:111
virtual XUIText * OnReady(_v::CActionRef< _v::CText * > p_Functor) override
IXUIElement OnReady functor interface.
Definition XUIText.hpp:80
XUIText * SetFontSizes(float p_MinSize, float p_MaxSize) XUI_PROXY_IMPL(_v
Set font size.
Definition XUIText.hpp:115
static Ptr Make(std::u16string_view p_Name, std::u16string_view p_Text)
Constructor.
Definition XUIText.hpp:57
XUIText * SetColor(Color p_Color) XUI_PROXY_IMPL(_v
Set color.
Definition XUIText.hpp:108
XUIText * SetOverflowMode(_u::TextOverflowModes p_OverflowMode) XUI_PROXY_IMPL(_v
Set overflow mode.
Definition XUIText.hpp:124
XUIText * SetWrapping(bool p_Wrapping) XUI_PROXY_IMPL(_v
Set wrapping.
Definition XUIText.hpp:133
XUIText * SetAlign(_u::TextAlignmentOptions p_Align) XUI_PROXY_IMPL(_v
Set align.
Definition XUIText.hpp:102
static Ptr Make(std::u16string_view p_Text)
Constructor.
Definition XUIText.hpp:50
virtual void BuildUI(_u::Transform *p_Parent) override
BuildUI for this element into p_Parent transform.
Definition XUIText.hpp:65
XUIText * SetActive(bool p_Active) XUI_PROXY_IMPL(_v
Set game object active state.
Definition XUIText.hpp:97
virtual XUIText * Bind(std::shared_ptr< XUIText > *p_Target) override
On ready, bind.
Definition XUIText.hpp:88
XUIText * SetAlpha(float p_Alpha) XUI_PROXY_IMPL(_v
Set alpha.
Definition XUIText.hpp:105
Tree like syntax CP_SDK::UI builder.