83 lines
2.3 KiB
C#
83 lines
2.3 KiB
C#
|
|
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();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|