79 lines
1.5 KiB
C++
79 lines
1.5 KiB
C++
/**
|
|
* @file dl_ui_button_scale.h
|
|
* @brief 精灵按钮
|
|
*
|
|
*
|
|
* @version 1.0
|
|
* @author lveyou
|
|
* @date 24-03-09
|
|
*
|
|
* @note
|
|
*/
|
|
#pragma once
|
|
|
|
#ifndef DL_DISABLE_RENDER
|
|
#include "ui/dl_ui_button_base.h"
|
|
#include "render/dl_sprite.h"
|
|
#include "render/dl_text.h"
|
|
#include "ui/dl_ui_panel.h"
|
|
|
|
namespace dl::UI
|
|
{
|
|
class Panel;
|
|
//! 缩放按钮(注意精灵没有Coor)
|
|
class ButtonScale : public Button
|
|
{
|
|
public:
|
|
/**
|
|
* @brief 缩放按钮
|
|
* @param[in] panel 组件面板
|
|
* @note 你或许应该将panel的定位器设为空
|
|
*/
|
|
static ButtonScale* Create(Panel* panel, float min = 1.0f, float max = 1.2f, float dt = 1.0f);
|
|
|
|
virtual ButtonScale* Clone() override;
|
|
|
|
virtual bool IsPickup() override
|
|
{
|
|
return _panel->IsPickup();
|
|
}
|
|
virtual void SetOrder(float order) override
|
|
{
|
|
_panel->SetOrder(Math::OffsetOrder(order, 0, 0, 0));
|
|
}
|
|
virtual float GetOrder() override
|
|
{
|
|
return _panel->GetOrder();
|
|
}
|
|
virtual Position GetSize() override { return toPosition(_panel->GetSize()); }
|
|
virtual Position GetAnchor() override { return {}; }
|
|
virtual void RenderDebug() override {}
|
|
|
|
~ButtonScale();
|
|
private:
|
|
ButtonScale() : _cur{ 1.0f }
|
|
{}
|
|
|
|
void _init()
|
|
{
|
|
_panel->SetAutoRun(false);
|
|
_panel->SetAutoCoor(false);
|
|
_update_coor();
|
|
_panel->SetOrderMode(Panel::FORCE);
|
|
}
|
|
void _update_coor()
|
|
{
|
|
_panel->GetCoorRef()->SetParent(_coor);
|
|
}
|
|
Panel* _panel;
|
|
float _min;
|
|
float _max;
|
|
float _dt;
|
|
float _cur;
|
|
|
|
virtual void UpdateChild(State state_pre, State state) override;
|
|
};
|
|
|
|
}
|
|
|
|
#endif |