using UnityEngine; using UVC.UI.Toolbar.Model; using UVC.UI.Toolbar.View; namespace UVC.UI.Toolbar.View { /// /// 툴바 버튼의 UI 생성, 설정 및 업데이트 로직을 처리하는 인터페이스입니다. /// 각 버튼 타입(표준, 토글, 라디오, 확장 등)에 대한 구체적인 UI 처리 클래스가 이 인터페이스를 구현합니다. /// public interface IButtonViewProcessor { /// /// 지정된 버튼 모델에 대한 UI GameObject를 생성하고 초기화합니다. /// /// UI를 생성할 버튼의 데이터 모델입니다. /// 생성된 UI GameObject가 자식으로 추가될 부모 Transform입니다. /// 현재 ToolbarView의 컨텍스트입니다. 프리팹 참조, 헬퍼 메서드 접근 등에 사용됩니다. /// 생성된 UI GameObject입니다. 생성 실패 시 null을 반환할 수 있습니다. GameObject CreateButtonUI(ToolbarButtonBase buttonModel, Transform parentContainer, ToolbarView viewContext); /// /// 생성된 버튼 UI GameObject에 대해 초기 시각적 요소(텍스트, 아이콘 등)를 설정하고, /// 사용자 상호작용(예: 클릭 이벤트) 시 모델의 메서드가 호출되도록 이벤트를 바인딩합니다. /// 또한, 모델의 상태 변경 이벤트(OnStateChanged, OnToggleStateChanged 등)를 구독하여 UI가 업데이트되도록 설정합니다. /// /// 설정할 버튼의 데이터 모델입니다. /// 모델에 해당하는, 화면에 표시될 UI GameObject입니다. /// 현재 ToolbarView의 컨텍스트입니다. void SetupButtonInteractions(ToolbarButtonBase buttonModel, GameObject buttonUIObject, ToolbarView viewContext); /// /// 버튼 모델의 공통적인 상태(텍스트, 아이콘, 활성화 상태 등)가 변경되었을 때, /// 해당 버튼 UI의 시각적 요소를 업데이트합니다. /// /// 상태가 변경된 버튼의 모델입니다. /// 업데이트할 UI GameObject입니다. /// 현재 ToolbarView의 컨텍스트입니다. void UpdateCommonButtonVisuals(ToolbarButtonBase buttonModel, GameObject buttonUIObject, ToolbarView viewContext); /// /// 토글 가능한 버튼(ToolbarToggleButton, ToolbarRadioButton)의 선택 상태(IsSelected)가 모델에서 변경되었을 때 호출됩니다. /// 해당 UI Toggle 컴포넌트의 isOn 상태를 모델의 IsSelected 값과 동기화합니다. /// /// IsSelected 상태가 변경된 토글/라디오 버튼의 모델입니다. /// 업데이트할 UI GameObject입니다. /// 모델의 새로운 IsSelected 값입니다. /// 현재 ToolbarView의 컨텍스트입니다. void UpdateToggleStateVisuals(ToolbarToggleButton toggleButtonModel, GameObject buttonUIObject, bool isSelected, ToolbarView viewContext); } }