Files
dl_old/dl/ui/dl_ui_button_scale.h
2026-06-01 18:58:19 +08:00

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