private void Save() { List <string> commandTexts = new List <string>(_widgetDatas.Count); CommandSaveData[] saveData = new CommandSaveData[_widgetDatas.Count]; for (int i = 0; i < _widgetDatas.Count; i++) { var item = _widgetDatas[i]; saveData[i] = new CommandSaveData() { Active = item.Active, Name = item.GameConsoleInvokable.DisplayName, Parameters = item.Parameters }; if (item.Active) { if (item.Parameters != null && item.Parameters.Length > 0) { commandTexts.Add($"-{item.GameConsoleInvokable.DisplayName} {string.Join(" ", item.Parameters)}"); } else { commandTexts.Add($"-{item.GameConsoleInvokable.DisplayName}"); } } } string json = JsonConvert.SerializeObject(new CommandSaveDataContainer() { CommandSaveDatas = saveData }); EditorPrefs.SetString("launch-commands-window", json); GameConsole.EditorPlayCommands = commandTexts.ToArray(); }
private void Load() { _widgetDatas.Clear(); var allInvokables = GameConsole.Invokables.ToArray(); string json = EditorPrefs.GetString("launch-commands-window", ""); var saveData = JsonConvert.DeserializeObject <CommandSaveDataContainer>(json).CommandSaveDatas; if (saveData == null) { saveData = new CommandSaveData[0]; } foreach (var item in saveData) { var invokable = FindInvokable(item.Name); if (invokable != null) { var widgetData = CreateWidgetDataElement(); widgetData.GameConsoleInvokable = invokable; widgetData.Active = item.Active; widgetData.Parameters = item.Parameters; _widgetDatas.Add(widgetData); } } IGameConsoleInvokable FindInvokable(string name) { for (int i = 0; i < allInvokables.Length; i++) { if (string.Equals(allInvokables[i].DisplayName, name)) { return(allInvokables[i]); } } return(null); } }