Add generic ruleset config.

This commit is contained in:
2022-11-16 00:25:08 +08:00
parent 15e66d29c4
commit 852c93c6d0
3 changed files with 23 additions and 11 deletions

View File

@@ -1,7 +1,7 @@
using Newtonsoft.Json; using Newtonsoft.Json;
using System;
using System.IO; using System.IO;
using System.Text; using System.Text;
using System;
using UnityEngine; using UnityEngine;
using UnityEngine.SceneManagement; using UnityEngine.SceneManagement;
@@ -10,6 +10,9 @@ namespace Cryville.Crtr.Config {
[SerializeField] [SerializeField]
Transform m_content; Transform m_content;
[SerializeField]
SettingsPanel m_genericConfigPanel;
[SerializeField] [SerializeField]
InputConfigPanel m_inputConfigPanel; InputConfigPanel m_inputConfigPanel;
@@ -43,6 +46,9 @@ namespace Cryville.Crtr.Config {
}); });
} }
} }
m_genericConfigPanel.Target = _rscfg.generic;
var proxy = new InputProxy(ruleset.Root, null); var proxy = new InputProxy(ruleset.Root, null);
proxy.LoadFrom(_rscfg.inputs); proxy.LoadFrom(_rscfg.inputs);
m_inputConfigPanel.proxy = proxy; m_inputConfigPanel.proxy = proxy;

View File

@@ -1,12 +1,18 @@
using System.Collections.Generic; using Newtonsoft.Json;
using System.Collections.Generic;
namespace Cryville.Crtr.Config { namespace Cryville.Crtr.Config {
public class RulesetConfig { public class RulesetConfig {
public Dictionary<string, InputConfigEntry> inputs public Generic generic = new Generic();
= new Dictionary<string, InputConfigEntry>(); public class Generic {
} [JsonProperty("skin")]
public class InputConfigEntry { public string Skin { get; set; }
public string handler; }
public int type; public Dictionary<string, InputEntry> inputs
= new Dictionary<string, InputEntry>();
public class InputEntry {
public string handler;
public int type;
}
} }
} }

View File

@@ -37,7 +37,7 @@ namespace Cryville.Crtr {
readonly Dictionary<string, int> _use = new Dictionary<string, int>(); readonly Dictionary<string, int> _use = new Dictionary<string, int>();
readonly Dictionary<string, List<string>> _rev = new Dictionary<string, List<string>>(); readonly Dictionary<string, List<string>> _rev = new Dictionary<string, List<string>>();
public event EventHandler<ProxyChangedEventArgs> ProxyChanged; public event EventHandler<ProxyChangedEventArgs> ProxyChanged;
public void LoadFrom(Dictionary<string, InputConfigEntry> config) { public void LoadFrom(Dictionary<string, RulesetConfig.InputEntry> config) {
foreach (var cfg in config) { foreach (var cfg in config) {
Set(new InputProxyEntry { Set(new InputProxyEntry {
Target = cfg.Key, Target = cfg.Key,
@@ -48,10 +48,10 @@ namespace Cryville.Crtr {
}); });
} }
} }
public void SaveTo(Dictionary<string, InputConfigEntry> config) { public void SaveTo(Dictionary<string, RulesetConfig.InputEntry> config) {
config.Clear(); config.Clear();
foreach (var p in _tproxies) { foreach (var p in _tproxies) {
config.Add(p.Key, new InputConfigEntry { config.Add(p.Key, new RulesetConfig.InputEntry {
handler = ReflectionHelper.GetNamespaceQualifiedName(p.Value.Source.Value.Handler.GetType()), handler = ReflectionHelper.GetNamespaceQualifiedName(p.Value.Source.Value.Handler.GetType()),
type = p.Value.Source.Value.Type type = p.Value.Source.Value.Type
}); });