Example #1
0
    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();
    }
Example #2
0
    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);
        }
    }