dl
dl_ui_button_sprite.h
浏览该文件的文档.
1
12#pragma once
13
14#ifndef DL_DISABLE_RENDER
16#include "render/dl_sprite.h"
17#include "render/dl_text.h"
18
19namespace dl::UI
20{
21
23class ButtonSprite : public Button
24{
25public:
33 static ButtonSprite* Create(const std::vector<gcSprite>& mul_spr)
34 {
35 ButtonSprite* ret = new ButtonSprite;
36 ret->_init(mul_spr);
39 return ret;
40 }
41
42 virtual ButtonSprite* Clone() override;
43
50 void SetSpriteQuad(Button::State state, const Quad& quad);
57 void SetSpriteColor(Button::State state, const Color& color);
58
59 gcSprite GetSpriteCurrent() { return _spr[GetState()]; }
60
61 virtual bool IsPickup() override
62 {
63 return _spr[GetState()]->IsPickup();
64 }
65 virtual void SetOrder(float order) override
66 {
67 for (auto& spr : _spr)
68 spr->SetOrder(Math::OffsetOrder(order, 0, 0, 0));
70 }
71 virtual float GetOrder() override
72 {
73 return _spr[0]->GetOrder();
74 }
75 virtual Position GetSize() override { return _spr[GetState()]->GetSize(); }
76 virtual Position GetAnchor() override { return _spr[GetState()]->GetAnchor(); }
77 virtual void RenderDebug() override;
78
80private:
81 ButtonSprite() {}
82
83 void _init(const std::vector<gcSprite>& mul_spr);
84
86
87 virtual void RenderChild(State state_pre, State state) override
88 {
89 Button::RenderChild(state_pre, state);
90 _spr[state]->Render();
91 }
92
93 void _update_coor()
94 {
95 for (auto& iter : _spr)
96 {
97 iter->SetCoor(_coor);
98 }
99 }
100};
101
102}
103
104#endif
枚举类数组
void UpdateTextOrder(float order)
order变化时需要调用
virtual void RenderChild(State state_pre, State state)
精灵按钮(注意精灵没有Coor)
virtual Position GetAnchor() override
virtual ButtonSprite * Clone() override
必须实现的函数
void SetSpriteQuad(Button::State state, const Quad &quad)
设置精灵quad
virtual void RenderDebug() override
virtual Position GetSize() override
static ButtonSprite * Create(const std::vector< gcSprite > &mul_spr)
精灵组成的按钮
void SetSpriteColor(Button::State state, const Color &color)
设置精灵颜色
virtual void SetOrder(float order) override
virtual bool IsPickup() override
virtual float GetOrder() override
2d绘图元素
文本绘制
UI系统之按钮基类
constexpr float OffsetOrder(float order, int u=1, int v=0, int w=0)
偏移order
Position2 Position
constexpr float Z_DEFAULT_UI
GC< Sprite > gcSprite
Array< float, 4 > Color
Array< Position, 4 > Quad