54 lines
2.2 KiB
C#
54 lines
2.2 KiB
C#
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
using UVC.UI.Toolbar.Model;
|
|
using UVC.UI.ToolBar.View;
|
|
|
|
namespace UVC.UI.Toolbar.View
|
|
{
|
|
public class ToolbarStandardButtonViewProcessor : IButtonViewProcessor
|
|
{
|
|
public GameObject CreateButtonUI(ToolbarButtonBase buttonModel, Transform parentContainer, ToolbarView viewContext)
|
|
{
|
|
if (viewContext.standardButtonPrefab == null)
|
|
{
|
|
Debug.LogError("StandardButtonViewProcessor: standardButtonPrefab이 ToolbarView에 할당되지 않았습니다.", viewContext);
|
|
return null;
|
|
}
|
|
return Object.Instantiate(viewContext.standardButtonPrefab, parentContainer);
|
|
}
|
|
|
|
public void SetupButtonInteractions(ToolbarButtonBase buttonModel, GameObject buttonUIObject, ToolbarView viewContext)
|
|
{
|
|
ToolbarStandardButton standardModel = buttonModel as ToolbarStandardButton;
|
|
if (standardModel == null) return;
|
|
|
|
Button uiButton = buttonUIObject.GetComponent<Button>();
|
|
if (uiButton != null)
|
|
{
|
|
uiButton.onClick.AddListener(() =>
|
|
{
|
|
standardModel.ExecuteClick(standardModel.Text);
|
|
});
|
|
}
|
|
else
|
|
{
|
|
Debug.LogError($"StandardButtonViewProcessor: StandardButton '{standardModel.Text}'의 GameObject에 Button 컴포넌트가 없습니다.", buttonUIObject);
|
|
}
|
|
|
|
// 공통적인 모델 상태 변경 구독은 ToolbarView의 RenderToolbar에서 처리하거나,
|
|
// 각 Processor가 viewContext를 통해 UpdateCommonButtonVisuals 등을 직접 호출하도록 할 수 있습니다.
|
|
// 여기서는 ToolbarView에서 공통 구독을 처리한다고 가정합니다.
|
|
UpdateCommonButtonVisuals(buttonModel, buttonUIObject, viewContext);
|
|
}
|
|
|
|
public void UpdateCommonButtonVisuals(ToolbarButtonBase buttonModel, GameObject buttonUIObject, ToolbarView viewContext)
|
|
{
|
|
viewContext.InternalUpdateCommonButtonVisuals(buttonModel, buttonUIObject);
|
|
}
|
|
|
|
public void UpdateToggleStateVisuals(ToolbarToggleButton toggleButtonModel, GameObject buttonUIObject, bool isSelected, ToolbarView viewContext)
|
|
{
|
|
// 표준 버튼은 토글 상태가 없음
|
|
}
|
|
}
|
|
} |