123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- namespace SRDebugger.Scripts
- {
- using System;
- using System.Linq;
- using SRF;
- using UI.Other;
- using UnityEngine;
- public class DebuggerTabController : SRMonoBehaviourEx
- {
- private SRTab _aboutTabInstance;
- private DefaultTabs? _activeTab;
- private bool _hasStarted;
- public SRTab AboutTab;
- [RequiredField] public SRTabController TabController;
- public DefaultTabs? ActiveTab
- {
- get
- {
- var key = TabController.ActiveTab.Key;
- if (string.IsNullOrEmpty(key))
- {
- return null;
- }
- var t = Enum.Parse(typeof (DefaultTabs), key);
- if (!Enum.IsDefined(typeof (DefaultTabs), t))
- {
- return null;
- }
- return (DefaultTabs) t;
- }
- }
- protected override void Start()
- {
- base.Start();
- _hasStarted = true;
- // Loads all available tabs from resources
- var tabs = Resources.LoadAll<SRTab>("SRDebugger/UI/Prefabs/Tabs");
- var defaultTabs = Enum.GetNames(typeof (DefaultTabs));
- foreach (var srTab in tabs)
- {
- var enabler = srTab.GetComponent(typeof (IEnableTab)) as IEnableTab;
- if (enabler != null && !enabler.IsEnabled)
- {
- continue;
- }
- if (defaultTabs.Contains(srTab.Key))
- {
- var tabValue = Enum.Parse(typeof (DefaultTabs), srTab.Key);
- if (Enum.IsDefined(typeof (DefaultTabs), tabValue) &&
- Settings.Instance.DisabledTabs.Contains((DefaultTabs) tabValue))
- {
- continue;
- }
- }
- TabController.AddTab(SRInstantiate.Instantiate(srTab));
- }
- // Add about tab (has no button, accessed via "Stompy" logo
- if (AboutTab != null)
- {
- _aboutTabInstance = SRInstantiate.Instantiate(AboutTab);
- TabController.AddTab(_aboutTabInstance, false);
- }
- // Open active tab (set before panel loaded), or default tab from settings
- var defaultTab = _activeTab ?? Settings.Instance.DefaultTab;
- if (!OpenTab(defaultTab))
- {
- TabController.ActiveTab = TabController.Tabs.FirstOrDefault();
- }
- }
- public bool OpenTab(DefaultTabs tab)
- {
- if (!_hasStarted)
- {
- _activeTab = tab;
- return true;
- }
- var tabName = tab.ToString();
- foreach (var t in TabController.Tabs)
- {
- if (t.Key == tabName)
- {
- TabController.ActiveTab = t;
- return true;
- }
- }
- return false;
- }
- public void ShowAboutTab()
- {
- if (_aboutTabInstance != null)
- {
- TabController.ActiveTab = _aboutTabInstance;
- }
- }
- }
- }
|