59 lines
1.6 KiB
C#
59 lines
1.6 KiB
C#
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using NEG.UI.Popup;
|
|
using NEG.UI.UnityUi.Window;
|
|
using NEG.UI.UnityUi.WindowSlot;
|
|
using NEG.UI.Window;
|
|
using NEG.UI.WindowSlot;
|
|
using NegUtils.NEG.UI;
|
|
using System;
|
|
|
|
namespace NEG.UI.Area
|
|
{
|
|
public class MonoArea : MonoBehaviour, IArea
|
|
{
|
|
public event Action<object> OnOpened;
|
|
public event Action OnClosed;
|
|
public event Action<IControllable.BackUsed> OnBackUsed;
|
|
|
|
public IEnumerable<IWindowSlot> AvailableSlots => windowSlots;
|
|
public IWindowSlot DefaultWindowSlot => windowSlots[0];
|
|
|
|
[SerializeField] private bool setAsDefaultArea;
|
|
|
|
[SerializeField] private List<MonoWindowSlot> windowSlots;
|
|
|
|
public void Open()
|
|
{
|
|
gameObject.SetActive(true);
|
|
OnOpened?.Invoke(null);
|
|
}
|
|
|
|
public void Close(){
|
|
gameObject.SetActive(false);
|
|
OnClosed?.Invoke();
|
|
}
|
|
|
|
public void OpenWindow(IWindow window, object data = null) => DefaultWindowSlot.AttachWindow(window, data);
|
|
|
|
private void Awake()
|
|
{
|
|
if (setAsDefaultArea)
|
|
UiManager.Instance.CurrentArea = this;
|
|
}
|
|
|
|
private void Start()
|
|
{
|
|
if(!setAsDefaultArea)
|
|
Close();
|
|
}
|
|
|
|
private void OnDestroy()
|
|
{
|
|
if (ReferenceEquals(UiManager.Instance.CurrentArea, this))
|
|
UiManager.Instance.CurrentArea = null;
|
|
}
|
|
|
|
public void TryUseBack(ref IControllable.BackUsed backUsed) => OnBackUsed?.Invoke(backUsed);
|
|
}
|
|
} |