using System; using System.Collections; using System.Collections.Generic; using UnityEngine; public class GlobalSelectionManager : MonoBehaviour { static private GlobalSelectionManager _instance; public Dictionary> _globals = new(); static public int GlobalMaxCount { get; private set; } static public int CurrentGlobalIndex { get; set; } [SerializeField] private int _GlobalCount = 3; [Header("Debug")] [SerializeField] bool _debugSetGlobalOption; [SerializeField] private GlobalOption _optionToDebug; private void Awake() { if (_instance != null && _instance != this) { Destroy(gameObject); return; } else { _instance = this; } } static public void ResetGlobals() { Dictionary> globals = _instance._globals; GlobalOption[] globalOptions = (GlobalOption[])System.Enum.GetValues(typeof(GlobalOption)); foreach (var item in globalOptions) { if (globals.ContainsKey(item)) { globals[item].Clear(); } } globals.Clear(); GlobalMaxCount = _instance._GlobalCount; CurrentGlobalIndex = 0; } // Get value using currently selected global index static public string GetValue(GlobalOption option) { return GetValue(option, CurrentGlobalIndex); } static public string GetValue(string openLibraryID) { return null; // string prefix = openLibraryID.Split("_")[0]; // _G._prefixesValue.TryGetValue(prefix, out string OutLibrary); // Enum.TryParse(OutLibrary, out Files file); // GlobalOption option;//GlobalOption.OPTIONSRECIPE_11; // switch (file) // { // case Files.CABTEXTUREList: // //option = UIT.Global(Header.Ext,_G.G); // break; // case Files.CERAMICList: // //option = GlobalOption.SPLA_9; // break; // case Files.DOORList: // //option = GlobalOption.DOORCAB_0; // break; // case Files.FACIAList: // //option = GlobalOption.FACIA_4; // break; // case Files.INTTEXTUREList: // //option = GlobalOption.INTPNL_1; // break; // case Files.KICKList: // //option = GlobalOption.KICK_3; // break; // case Files.OGEEList: // //option = GlobalOption.OGEE_5; // break; // case Files.SPLASHList: // //option = GlobalOption.SPLA_9; // break; // case Files.VALANCEList: // //option = GlobalOption.VALA_6; // break; // case Files.COUNTERList: // //option = GlobalOption.COUN_8; // break; // case Files.PANELList: // //ption = GlobalOption.EXTPNL_2; // break; // default: Debug.LogError("Case not implemented or faulty"); break; // } // return GetValue(option, CurrentGlobalIndex); } static public string GetValue(GlobalOption option, int index) { return _instance._globals[option][index]; } // Set value using currently selected global index static public void SetValue(GlobalOption option, string value) { if (_instance._debugSetGlobalOption && option == _instance._optionToDebug) { Debug.Log($"{_instance._optionToDebug.ToString()} changes == {value} "); } SetValue(option, CurrentGlobalIndex, value); } static public void SetValue(GlobalOption option, int index, string value) { if (_instance._debugSetGlobalOption && option == _instance._optionToDebug) { Debug.Log($"{_instance._optionToDebug.ToString()} changes == {value} "); } // if option doesn't exist, create dictionary entry Dictionary> globals = _instance._globals; if (!globals.ContainsKey(option)) { List newList = new(); for (int i = 0; i < GlobalMaxCount; i++) { newList.Add(""); } globals.Add(option, newList); } // set value globals[option][index] = value; } }