95 lines
1.9 KiB
C++
95 lines
1.9 KiB
C++
#include "dl_ui_button_sprite9.h"
|
|
|
|
#ifndef DL_DISABLE_RENDER
|
|
#include "render/dl_factory.h"
|
|
#include "render/dl_graphics.h"
|
|
|
|
namespace dl::UI
|
|
{
|
|
|
|
UI::ButtonSprite9* ButtonSprite9::Clone()
|
|
{
|
|
// 注意基类Control复制的正确性
|
|
ButtonSprite9* ret = new ButtonSprite9(*this);
|
|
ret->_init_cpt_1();
|
|
|
|
for (size_t i = 0; i != _spr.size(); ++i)
|
|
{
|
|
ret->_spr[i] = _spr[i]->Clone();
|
|
}
|
|
ret->_update_coor();
|
|
return ret;
|
|
}
|
|
|
|
void ButtonSprite9::_init(const std::vector<Sprite9*>& mul_spr)
|
|
{
|
|
for (size_t i = 0; i < (size_t)State::MAX_NUM; ++i)
|
|
{
|
|
if(i < mul_spr.size())
|
|
_spr[i] = mul_spr[i];
|
|
}
|
|
|
|
if (!_spr[State::NORMAL])
|
|
_spr[State::NORMAL] = Sprite9::Create("");
|
|
|
|
if (!_spr[State::OVER])
|
|
_spr[State::OVER] = _spr[State::NORMAL]->Clone();
|
|
|
|
if (!_spr[State::DOWN])
|
|
_spr[State::DOWN] = _spr[State::NORMAL]->Clone();
|
|
|
|
if (!_spr[State::DISABLE])
|
|
_spr[State::DISABLE] = _spr[State::NORMAL]->Clone();
|
|
|
|
if (!_spr[State::DOWN_OVER])
|
|
_spr[State::DOWN_OVER] = _spr[State::DOWN]->Clone();
|
|
|
|
if (!_spr[State::DOWN_DISABLE])
|
|
_spr[State::DOWN_DISABLE] = _spr[State::DOWN]->Clone();
|
|
|
|
|
|
for (auto& iter : _spr)
|
|
iter->SetUI(true);
|
|
//
|
|
_update_coor();
|
|
}
|
|
|
|
void ButtonSprite9::SetSpriteRect(Button::State state, const Rect& rect)
|
|
{
|
|
if (state < Button::State::MAX_NUM)
|
|
_spr[state]->SetRect(rect);
|
|
else
|
|
{
|
|
for (auto& spr : _spr)
|
|
spr->SetRect(rect);
|
|
}
|
|
_refresh_element_data();
|
|
}
|
|
|
|
void ButtonSprite9::SetSpriteColor(Button::State state, const Color& color)
|
|
{
|
|
if (state < Button::State::MAX_NUM)
|
|
_spr[state]->SetColor(color);
|
|
else
|
|
{
|
|
for (auto& spr : _spr)
|
|
spr->SetColor(color);
|
|
}
|
|
}
|
|
|
|
void ButtonSprite9::RenderDebug()
|
|
{
|
|
Button::RenderDebug();
|
|
{
|
|
Position p0 = {};
|
|
Position p1 = toPosition(GetSpriteCurrent()->GetSize());
|
|
g_gfx->SetCoor(GetSpriteCurrent()->GetCoor());
|
|
g_gfx->SetColor(createColor(ColorDef::PURPLE, 1.0f));
|
|
g_gfx->Rectangle2D(p0, p1);
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
|
|
#endif |