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); } } } }