42 lines
1.2 KiB
C#
42 lines
1.2 KiB
C#
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using NEG.UI.Popup;
|
|
using NEG.UI.UnityUi.WindowSlot;
|
|
using NEG.UI.Window;
|
|
using NEG.UI.WindowSlot;
|
|
using System;
|
|
|
|
namespace NEG.UI.Area
|
|
{
|
|
public class MonoArea : MonoBehaviour, IArea
|
|
{
|
|
public IEnumerable<IWindowSlot> AvailableSlots => windowSlots;
|
|
public IWindowSlot DefaultWindowSlot => windowSlots[0];
|
|
|
|
[SerializeField] private bool setAsDefaultArea;
|
|
|
|
[SerializeField] private List<MonoWindowSlot> windowSlots;
|
|
|
|
[SerializeField] private Queue<IPopup> currentPopups = new();
|
|
|
|
public virtual void SetEnabled(bool setEnabled) => gameObject.SetActive(setEnabled);
|
|
|
|
public virtual void OpenWindow(IWindow window, object data = null)
|
|
{
|
|
DefaultWindowSlot.AttachWindow(window);
|
|
window.SetData(data);
|
|
}
|
|
|
|
protected virtual void Awake()
|
|
{
|
|
if (setAsDefaultArea)
|
|
UiManager.Instance.CurrentArea = this;
|
|
}
|
|
|
|
protected virtual void OnDestroy()
|
|
{
|
|
if (ReferenceEquals(UiManager.Instance.CurrentArea, this))
|
|
UiManager.Instance.CurrentArea = null;
|
|
}
|
|
}
|
|
} |