ChatPlexSDK-BS 1.0.1-v6.2.0
C++ ChatPlex BeatSaber SDK
Loading...
Searching...
No Matches
XUIImage.hpp
1#pragma once
2
3#include "../UI/Components/CImage.hpp"
4#include "Generics/IXUIElement.hpp"
5#include "Generics/IXUIBindable.hpp"
6#include "Generics/IXUIElementReady.hpp"
7
8namespace CP_SDK::XUI {
9
10 using namespace UnityEngine;
11 using namespace UnityEngine::UI;
12
14 class XUIImage :
15 public IXUIElement,
16 public IXUIElementReady<XUIImage, _v::CImage>,
17 public IXUIBindable<XUIImage>,
18 public std::enable_shared_from_this<XUIImage>
19 {
20 CP_SDK_NO_COPYMOVE_CTORS(XUIImage);
21 CP_SDK_PRIV_TAG();
22
23 private:
25
26 _v::Event<_v::CImage*> m_OnReady;
27
28 public:
29 std::shared_ptr<XUIImage> AsShared() { return std::enable_shared_from_this<XUIImage>::shared_from_this(); }
30
31 virtual _v::UIFieldRef<_u::RectTransform> RTransform() override
32 {
33 return m_Element ? m_Element->RTransform() : _v::UIFieldDefault<_u::RectTransform>::Value;
34 }
35 virtual _v::UIFieldRef<_v::CImage> Element()
36 {
37 return m_Element;
38 }
39
40 public:
41 static constexpr ETypeID TypeID = ETypeID::Image;
42 using Ptr = std::shared_ptr<XUIImage>;
43
44 XUIImage(CP_SDK_PRIV_TAG_ARG(), std::u16string_view p_Name, _u::Sprite* p_Sprite)
45 : IXUIElement(p_Name, TypeID)
46 {
47 if (p_Sprite)
48 SetSprite(p_Sprite);
49 }
50
51 public:
54 static Ptr Make(_u::Sprite* p_Sprite = nullptr)
55 {
56 return std::make_shared<XUIImage>(CP_SDK_PRIV_TAG_VAL(), u"XUIImage", p_Sprite);
57 }
61 static Ptr Make(std::u16string_view p_Name, _u::Sprite* p_Sprite = nullptr)
62 {
63 return std::make_shared<XUIImage>(CP_SDK_PRIV_TAG_VAL(), p_Name, p_Sprite);
64 }
65
66 public:
69 virtual void BuildUI(_u::Transform* p_Parent) override
70 {
71 m_Element = _v::UISystem::ImageFactory->Create(IXUIElement::GetInitialName(), p_Parent);
72
73 try { m_OnReady(m_Element.Ptr()); m_OnReady.Clear(); }
74 catch (const std::exception& l_Exception)
75 {
76 ChatPlexSDK::Logger()->Error(u"[CP_SDK.XUI][XUIImage.BuildUI] Error OnReady:");
77 ChatPlexSDK::Logger()->Error(l_Exception);
78 }
79 }
80
81 public:
84 virtual XUIImage* OnReady(_v::CActionRef<_v::CImage*> p_Functor) override
85 {
86 if (m_Element) p_Functor(m_Element.Ptr());
87 else m_OnReady += p_Functor;
88 return this;
89 }
92 virtual XUIImage* Bind(std::shared_ptr<XUIImage>* p_Target) override
93 {
94 *p_Target = std::enable_shared_from_this<XUIImage>::shared_from_this();
95 return this;
96 }
97
98 public:
101 XUIImage* SetActive(bool p_Active) XUI_PROXY_IMPL(_v::CImage, { x->get_gameObject()->SetActive(p_Active); })
102
103 public:
106 XUIImage* SetWidth(float p_Width) XUI_PROXY_IMPL(_v::CImage, { x->SetWidth(p_Width); })
109 XUIImage* SetHeight(float p_Height) XUI_PROXY_IMPL(_v::CImage, { x->SetHeight(p_Height); })
110
111 public:
114 XUIImage* SetMinWidth(float p_Width) XUI_PROXY_IMPL(_v::CImage, { x->SetMinWidth(p_Width); })
117 XUIImage* SetMinHeight(float p_Height) XUI_PROXY_IMPL(_v::CImage, { x->SetMinHeight(p_Height); })
118
119 public:
122 XUIImage* SetColor(_u::Color p_Color) XUI_PROXY_IMPL(_v::CImage, { x->SetColor(p_Color); })
125 XUIImage* SetEnhancedImage(Unity::EnhancedImage::Ptr p_EnhancedImage) XUI_PROXY_IMPL(_v::CImage, { x->SetEnhancedImage(p_EnhancedImage); })
128 XUIImage* SetPixelsPerUnitMultiplier(float p_Multiplier) XUI_PROXY_IMPL(_v::CImage, { x->SetPixelsPerUnitMultiplier(p_Multiplier); })
131 XUIImage* SetSprite(_u::Sprite* p_Sprite) XUI_PROXY_IMPL(_v::CImage, { x->SetSprite(p_Sprite); })
134 XUIImage* SetType(_u::Image::Type p_Type) XUI_PROXY_IMPL(_v::CImage, { x->SetType(p_Type); })
135
136 };
137
138}
static Logging::ILogger * Logger()
Logger instance.
CImage * SetType(_u::Image::Type p_Type)
Set type.
CImage * SetMinHeight(float p_Height)
Set min height.
CImage * SetHeight(float p_Height)
Set preferred height.
CImage * SetSprite(_u::Sprite *p_Sprite)
Set sprite.
CImage * SetEnhancedImage(const Unity::EnhancedImage::Ptr &p_EnhancedImage)
Set enhanced image.
CImage * SetPixelsPerUnitMultiplier(float p_Multiplier)
Set pixels per unit multiplier.
Event class helper.
Definition Event.hpp:100
IXUIElement Bind interface.
Element interface.
std::u16string_view GetInitialName()
Get initial name.
IXUIElement OnReady functor interface.
CImage XUI Element.
Definition XUIImage.hpp:19
virtual XUIImage * OnReady(_v::CActionRef< _v::CImage * > p_Functor) override
IXUIElement OnReady functor interface.
Definition XUIImage.hpp:84
virtual void BuildUI(_u::Transform *p_Parent) override
BuildUI for this element into p_Parent transform.
Definition XUIImage.hpp:69
static Ptr Make(_u::Sprite *p_Sprite=nullptr)
Constructor.
Definition XUIImage.hpp:54
virtual XUIImage * Bind(std::shared_ptr< XUIImage > *p_Target) override
On ready, bind.
Definition XUIImage.hpp:92
XUIImage * SetPixelsPerUnitMultiplier(float p_Multiplier) XUI_PROXY_IMPL(_v
Set pixels per unit multiplier.
Definition XUIImage.hpp:128
XUIImage * SetMinWidth(float p_Width) XUI_PROXY_IMPL(_v
Set min width.
Definition XUIImage.hpp:114
static Ptr Make(std::u16string_view p_Name, _u::Sprite *p_Sprite=nullptr)
Constructor.
Definition XUIImage.hpp:61
XUIImage * SetActive(bool p_Active) XUI_PROXY_IMPL(_v
Set game object active state.
Definition XUIImage.hpp:101
XUIImage * SetSprite(_u::Sprite *p_Sprite) XUI_PROXY_IMPL(_v
Set sprite.
Definition XUIImage.hpp:131
XUIImage * SetType(_u::Image::Type p_Type) XUI_PROXY_IMPL(_v
Set type.
Definition XUIImage.hpp:134
XUIImage * SetMinHeight(float p_Height) XUI_PROXY_IMPL(_v
Set min height.
Definition XUIImage.hpp:117
XUIImage * SetEnhancedImage(Unity::EnhancedImage::Ptr p_EnhancedImage) XUI_PROXY_IMPL(_v
Set enhanced image.
Definition XUIImage.hpp:125
XUIImage * SetWidth(float p_Width) XUI_PROXY_IMPL(_v
Set preferred width.
Definition XUIImage.hpp:106
XUIImage * SetHeight(float p_Height) XUI_PROXY_IMPL(_v
Set preferred height.
Definition XUIImage.hpp:109
XUIImage * SetColor(_u::Color p_Color) XUI_PROXY_IMPL(_v
Set color.
Definition XUIImage.hpp:122
Tree like syntax CP_SDK::UI builder.