public void RefreshSceneOptions() { SceneDropDown.BeginOptions(); List <string> presetOptions = new List <string>(); foreach (SpiralScene preset in DataManager.Instance.PresetScenes) { presetOptions.Add(preset.name); } SceneDropDown.AddOption("Presets", presetOptions, (x) => { LinkedSavedScene = null; DataManager.Instance.UnsavedScene.Copy(DataManager.Instance.PresetScenes[x]); LoadScene(DataManager.Instance.UnsavedScene); }); List <string> savedScenes = new List <string>(); foreach (SpiralScene saved in DataManager.Instance.SavedScenes) { savedScenes.Add(saved.name); } savedScenes.Add("[SAVE CURRENT]"); SceneDropDown.AddOption("Saved Scenes", savedScenes, (x) => { if (x < DataManager.Instance.SavedScenes.Count) { LinkedSavedScene = DataManager.Instance.SavedScenes[x]; DataManager.Instance.UnsavedScene.Copy(LinkedSavedScene); LoadScene(DataManager.Instance.UnsavedScene); } else { OnSaveAsNewScene(); } preventSave = true; }, (x) => { SpiralScene toRemove = DataManager.Instance.SavedScenes[x]; if (toRemove == LinkedSavedScene) { LinkedSavedScene = null; SceneSaveChanges.gameObject.SetActive(false); } DataManager.Instance.DeleteScene(x); UIManager.TriggerRefresh(); }); SceneDropDown.AddOption("[RESET SCENE]", (x) => { LinkedSavedScene = null; DataManager.Instance.LoadDefaultScene(); }); SceneDropDown.EndOptions(); }
public void AddOption(string name, IList <string> subOptions, System.Action <int> onSelected, System.Action <int> onDeleted = null) { if (doCache) { cachedData.Add(() => { AddOption(name, subOptions, onSelected, onDeleted); }); return; } DropDownOption option = addOption(name); option.SublistArrow.enabled = true; ScrollingDropDown subList = addSublist(); option.Delete.gameObject.SetActive(false); option.OnHover = () => { if (subList.IsExpanded) { //subList.Contract(); } else { subList.Expand(); } }; if (refresh) { subList.BeginOptions(); } for (int i = 0; i < subOptions.Count; i++) { string subOption = subOptions[i]; int index = i; if (onDeleted == null || subOption[0] == '[') { subList.AddOption(subOption, (x) => { Contract(); onSelected(index); }); } else { subList.AddOption(subOption, (x) => { Contract(); onSelected(index); }, (x) => { onDeleted(index); }); } } if (refresh) { subList.EndOptions(); } }