This repository has been archived on 2026-04-18. You can view files and clone it, but cannot push or open issues or pull requests.
Virtual-Memory-Demo/Assets/Scripts/UI/SimulationDetailDrawerView.cs

94 lines
2.4 KiB
C#

using UnityEngine;
using UnityEngine.UI;
namespace VMdemo.UI
{
public class SimulationDetailDrawerView : MonoBehaviour
{
[SerializeField] private GameObject drawerRoot;
[SerializeField] private GameObject tablesTabRoot;
[SerializeField] private GameObject eventsTabRoot;
[SerializeField] private bool openOnStart;
[Header("Drawer Buttons")] [SerializeField]
private Button tablesTabButton;
[SerializeField] private Button eventsTabButton;
[SerializeField] private Button closeDrawerButton;
private bool _isOpen;
private void Awake()
{
BindButtons();
_isOpen = openOnStart;
ApplyDrawerState();
ShowTablesTab();
}
public void ToggleDrawer()
{
_isOpen = !_isOpen;
ApplyDrawerState();
}
public void OpenDrawer()
{
_isOpen = true;
ApplyDrawerState();
}
public void CloseDrawer()
{
_isOpen = false;
ApplyDrawerState();
}
public void ShowTablesTab()
{
SetActiveSafe(tablesTabRoot, true);
SetActiveSafe(eventsTabRoot, false);
}
public void ShowEventsTab()
{
SetActiveSafe(tablesTabRoot, false);
SetActiveSafe(eventsTabRoot, true);
}
private void BindButtons()
{
if (tablesTabButton != null)
{
tablesTabButton.onClick.RemoveAllListeners();
tablesTabButton.onClick.AddListener(ShowTablesTab);
}
if (eventsTabButton != null)
{
eventsTabButton.onClick.RemoveAllListeners();
eventsTabButton.onClick.AddListener(ShowEventsTab);
}
if (closeDrawerButton != null)
{
closeDrawerButton.onClick.RemoveAllListeners();
closeDrawerButton.onClick.AddListener(CloseDrawer);
}
}
private void ApplyDrawerState()
{
SetActiveSafe(drawerRoot, _isOpen);
}
private static void SetActiveSafe(GameObject target, bool active)
{
if (target != null)
{
target.SetActive(active);
}
}
}
}