Modal 개발 완료. Toolbar 개발 중
This commit is contained in:
82
Assets/Scripts/UVC/UI/ToolBar/ToolbarButtonBase.cs
Normal file
82
Assets/Scripts/UVC/UI/ToolBar/ToolbarButtonBase.cs
Normal file
@@ -0,0 +1,82 @@
|
||||
using System;
|
||||
using UnityEngine;
|
||||
|
||||
namespace UVC.UI.ToolBar
|
||||
{
|
||||
/// <summary>
|
||||
/// 모든 버튼의 기본 추상 클래스입니다.
|
||||
/// 공통적인 속성 (예: 텍스트, 아이콘, 활성화 상태) 및 동작을 정의합니다.
|
||||
/// </summary>
|
||||
public abstract class ToolbarButtonBase : IToolbarItem
|
||||
{
|
||||
public event Action OnStateChanged; // 상태 변경 알림 이벤트
|
||||
|
||||
private string _text;
|
||||
public string Text
|
||||
{
|
||||
get => _text;
|
||||
set
|
||||
{
|
||||
if (_text != value)
|
||||
{
|
||||
_text = value;
|
||||
OnStateChanged?.Invoke();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private Sprite _icon;
|
||||
public Sprite Icon
|
||||
{
|
||||
get => _icon;
|
||||
set
|
||||
{
|
||||
if (_icon != value)
|
||||
{
|
||||
_icon = value;
|
||||
OnStateChanged?.Invoke();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private bool _isEnabled = true;
|
||||
public bool IsEnabled
|
||||
{
|
||||
get => _isEnabled;
|
||||
set
|
||||
{
|
||||
if (_isEnabled != value)
|
||||
{
|
||||
_isEnabled = value;
|
||||
OnStateChanged?.Invoke();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private string _tooltipKey; // 툴팁 다국어 키
|
||||
public string TooltipKey
|
||||
{
|
||||
get => _tooltipKey;
|
||||
set
|
||||
{
|
||||
if (_tooltipKey != value)
|
||||
{
|
||||
_tooltipKey = value;
|
||||
// TooltipKey 변경 시 OnStateChanged를 호출할 필요는 일반적으로 없으나,
|
||||
// 만약 UI가 TooltipKey 자체를 표시하는 등의 로직이 있다면 필요할 수 있습니다.
|
||||
// 여기서는 툴팁 내용이 동적으로 변경되는 경우가 적다고 가정하고 생략합니다.
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public Action OnClick { get; set; }
|
||||
|
||||
public abstract void ExecuteClick();
|
||||
|
||||
// OnStateChanged 이벤트를 외부에서 강제로 발생시켜야 할 때 사용 (예: 복합적인 상태 변경 후)
|
||||
public void NotifyStateChanged()
|
||||
{
|
||||
OnStateChanged?.Invoke();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user