75 lines
2.3 KiB
C#
75 lines
2.3 KiB
C#
using NEG.UI.Area;
|
|
using NEG.UI.UnityUi.Buttons;
|
|
using NEG.UI.UnityUi.WindowSlot;
|
|
using NEG.UI.Window;
|
|
using NEG.UI.WindowSlot;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.EventSystems;
|
|
|
|
namespace NEG.UI.UnityUi.Window
|
|
{
|
|
public class MonoWindow : MonoBehaviour, IWindow
|
|
{
|
|
public IEnumerable<IWindowSlot> AvailableSlots => windowSlots;
|
|
public IWindowSlot Parent { get; private set; }
|
|
|
|
public bool IsMainWindow { get; private set; }
|
|
|
|
private IWindowSlot DefaultWindowSlot => windowSlots[0];
|
|
|
|
[SerializeField] private List<MonoWindowSlot> windowSlots;
|
|
[SerializeField] private WindowController controller;
|
|
|
|
[SerializeField] private GameObject defaultSelectedItem;
|
|
|
|
public void SetOpenedState(IWindowSlot parentSlot)
|
|
{
|
|
gameObject.SetActive(true);
|
|
Parent = parentSlot;
|
|
EventSystem.current.SetSelectedGameObject(defaultSelectedItem);
|
|
if (controller != null)
|
|
controller.OnOpened();
|
|
}
|
|
|
|
public void SetData(object data)
|
|
{
|
|
if (controller != null)
|
|
controller.SetData(data);
|
|
}
|
|
|
|
public void SetClosedState()
|
|
{
|
|
gameObject.SetActive(false);
|
|
Parent = null;
|
|
((ISlotsHolder)this).CloseAllWindows();
|
|
if(controller != null)
|
|
controller.OnClosed();
|
|
}
|
|
|
|
public void SetHiddenState() => gameObject.SetActive(false);
|
|
|
|
public void SeVisibleState() => gameObject.SetActive(true);
|
|
|
|
private void Awake() => ((IWindow)this).SetHiddenState();
|
|
|
|
private void OnValidate()
|
|
{
|
|
if (controller == null)
|
|
controller = GetComponent<WindowController>();
|
|
#if !NEG_UI_DISABLE_WARNING_DEFAULT_SELECTION
|
|
if(defaultSelectedItem == null)
|
|
Debug.LogWarning($"Window {name} should have default selected item set");
|
|
#endif
|
|
}
|
|
|
|
public void OpenWindow(IWindow window, object data = null)
|
|
{
|
|
DefaultWindowSlot.AttachWindow(window);
|
|
window.SetData(data);
|
|
}
|
|
|
|
public void SetDefaultSelectedItem(GameObject item) => defaultSelectedItem = item;
|
|
}
|
|
} |