ChatPlexSDK-BS 1.0.1-v6.2.0
C++ ChatPlex BeatSaber SDK
Loading...
Searching...
No Matches
XUISlider.hpp
1#pragma once
2
3#include "../UI/Components/CSlider.hpp"
4#include "Generics/IXUIElement.hpp"
5#include "Generics/IXUIBindable.hpp"
6#include "Generics/IXUIElementReady.hpp"
7
8namespace CP_SDK::XUI {
9
11 class XUISlider :
12 public IXUIElement,
13 public IXUIElementReady<XUISlider, _v::CSlider>,
14 public IXUIBindable<XUISlider>,
15 public std::enable_shared_from_this<XUISlider>
16 {
17 CP_SDK_NO_COPYMOVE_CTORS(XUISlider);
18 CP_SDK_PRIV_TAG();
19
20 private:
22
24
25 public:
26 std::shared_ptr<XUISlider> AsShared() { return std::enable_shared_from_this<XUISlider>::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::CSlider> Element()
33 {
34 return m_Element;
35 }
36
37 public:
38 static constexpr ETypeID TypeID = ETypeID::Slider;
39 using Ptr = std::shared_ptr<XUISlider>;
40
41 XUISlider(CP_SDK_PRIV_TAG_ARG(), std::u16string_view p_Name)
42 : IXUIElement(p_Name, TypeID)
43 {
44
45 }
46
47 public:
49 static Ptr Make()
50 {
51 return std::make_shared<XUISlider>(CP_SDK_PRIV_TAG_VAL(), u"XUISlider");
52 }
55 static Ptr Make(std::u16string_view p_Name)
56 {
57 return std::make_shared<XUISlider>(CP_SDK_PRIV_TAG_VAL(), p_Name);
58 }
59
60 public:
63 virtual void BuildUI(_u::Transform* p_Parent) override
64 {
65 m_Element = _v::UISystem::SliderFactory->Create(IXUIElement::GetInitialName(), p_Parent);
66
67 try { m_OnReady(m_Element.Ptr()); m_OnReady.Clear(); }
68 catch (const std::exception& l_Exception)
69 {
70 ChatPlexSDK::Logger()->Error(u"[CP_SDK.XUI][XUISlider.BuildUI] Error OnReady:");
71 ChatPlexSDK::Logger()->Error(l_Exception);
72 }
73 }
74
75 public:
78 virtual XUISlider* OnReady(_v::CActionRef<_v::CSlider*> p_Functor) override
79 {
80 if (m_Element) p_Functor(m_Element.Ptr());
81 else m_OnReady += p_Functor;
82 return this;
83 }
86 virtual XUISlider* Bind(std::shared_ptr<XUISlider>* p_Target) override
87 {
88 *p_Target = std::enable_shared_from_this<XUISlider>::shared_from_this();
89 return this;
90 }
91
92 public:
96 XUISlider* OnValueChanged(_v::Action<float> p_Functor, bool p_Add = true) XUI_PROXY_IMPL(_v::CSlider, { x->OnValueChanged(p_Functor, p_Add); })
97
98 public:
101 XUISlider* SetActive(bool p_Active) XUI_PROXY_IMPL(_v::CSlider, { x->get_gameObject()->SetActive(p_Active); })
102
103 public:
106 XUISlider* SetColor(_u::Color p_Color) XUI_PROXY_IMPL(_v::CSlider, { x->SetColor(p_Color); })
109 XUISlider* SetFormatter(_v::Func<std::u16string, float> p_CustomFormatter) XUI_PROXY_IMPL(_v::CSlider, { x->SetFormatter(p_CustomFormatter); })
112 XUISlider* SetInteger(bool p_IsInteger) XUI_PROXY_IMPL(_v::CSlider, { x->SetInteger(p_IsInteger); })
115 XUISlider* SetInteractable(bool p_Interactable) XUI_PROXY_IMPL(_v::CSlider, { x->SetInteractable(p_Interactable); })
118 XUISlider* SetMinValue(float p_MinValue) XUI_PROXY_IMPL(_v::CSlider, { x->SetMinValue(p_MinValue); })
121 XUISlider* SetMaxValue(float p_MaxValue) XUI_PROXY_IMPL(_v::CSlider, { x->SetMaxValue(p_MaxValue); })
124 XUISlider* SetIncrements(float p_Increments) XUI_PROXY_IMPL(_v::CSlider, { x->SetIncrements(p_Increments); })
128 XUISlider* SetValue(float p_Value, bool p_Notify = true) XUI_PROXY_IMPL(_v::CSlider, { x->SetValue(p_Value, p_Notify); })
129
130 public:
136 XUISlider* SwitchToColorMode(bool p_H, bool p_S, bool p_V, bool p_O) XUI_PROXY_IMPL(_v::CSlider, { x->SwitchToColorMode(p_H, p_S, p_V, p_O); })
139 XUISlider* ColorModeSetHue(float p_H) XUI_PROXY_IMPL(_v::CSlider, { x->ColorModeSetHue(p_H); })
140
141 };
142
143}
static Logging::ILogger * Logger()
Logger instance.
CSlider * SetMaxValue(float p_MaxValue)
Set max value.
CSlider * SetValue(float p_Value, bool p_Notify=true)
Set value.
CSlider * SetInteractable(bool p_Interactable)
Set button interactable state.
CSlider * SetFormatter(_v::CFuncRef< std::u16string, float > p_CustomFormatter)
Set value formatter.
CSlider * ColorModeSetHue(float p_H)
Color mode set H.
CSlider * SetInteger(bool p_IsInteger)
Set integer mode.
CSlider * SetMinValue(float p_MinValue)
Set min value.
CSlider * SetIncrements(float p_Increments)
Set increments.
Event class helper.
Definition Event.hpp:100
IXUIElement Bind interface.
Element interface.
std::u16string_view GetInitialName()
Get initial name.
IXUIElement OnReady functor interface.
CSlider XUI Element.
Definition XUISlider.hpp:16
XUISlider * SetValue(float p_Value, bool p_Notify=true) XUI_PROXY_IMPL(_v
Set value.
static Ptr Make(std::u16string_view p_Name)
Constructor.
Definition XUISlider.hpp:55
virtual XUISlider * Bind(std::shared_ptr< XUISlider > *p_Target) override
On ready, bind.
Definition XUISlider.hpp:86
virtual void BuildUI(_u::Transform *p_Parent) override
BuildUI for this element into p_Parent transform.
Definition XUISlider.hpp:63
virtual XUISlider * OnReady(_v::CActionRef< _v::CSlider * > p_Functor) override
IXUIElement OnReady functor interface.
Definition XUISlider.hpp:78
XUISlider * SetMaxValue(float p_MaxValue) XUI_PROXY_IMPL(_v
Set max value.
XUISlider * SetMinValue(float p_MinValue) XUI_PROXY_IMPL(_v
Set min value.
XUISlider * ColorModeSetHue(float p_H) XUI_PROXY_IMPL(_v
Color mode set H.
XUISlider * OnValueChanged(_v::Action< float > p_Functor, bool p_Add=true) XUI_PROXY_IMPL(_v
On value changed event.
Definition XUISlider.hpp:96
XUISlider * SetActive(bool p_Active) XUI_PROXY_IMPL(_v
Set game object active state.
XUISlider * SetInteractable(bool p_Interactable) XUI_PROXY_IMPL(_v
Set interactable state.
XUISlider * SetInteger(bool p_IsInteger) XUI_PROXY_IMPL(_v
Set integer mode.
XUISlider * SetColor(_u::Color p_Color) XUI_PROXY_IMPL(_v
Set theme color.
XUISlider * SwitchToColorMode(bool p_H, bool p_S, bool p_V, bool p_O) XUI_PROXY_IMPL(_v
Switch to color mode.
XUISlider * SetFormatter(_v::Func< std::u16string, float > p_CustomFormatter) XUI_PROXY_IMPL(_v
Set value formatter.
XUISlider * SetIncrements(float p_Increments) XUI_PROXY_IMPL(_v
Set increments.
static Ptr Make()
Constructor.
Definition XUISlider.hpp:49
Tree like syntax CP_SDK::UI builder.