Implement ruleset config browser.

This commit is contained in:
2023-11-30 21:25:38 +08:00
parent 05db2cc32e
commit 091d6307d1
12 changed files with 2336 additions and 136 deletions

View File

@@ -8,10 +8,11 @@ namespace Cryville.Crtr.Config {
internal class RulesetConfigPropertyMasterAdapter : IPropertyMasterAdapter {
readonly List<RulesetConfigPropertyAdapter> _props = new List<RulesetConfigPropertyAdapter>();
readonly RulesetConfigStore _store;
public PdtEvaluator Evaluator { get; private set; }
public RulesetConfigPropertyMasterAdapter(Dictionary<Identifier, ConfigDefinition> defs, Dictionary<string, object> values) {
_store = new RulesetConfigStore(defs, values);
PdtEvaluator.Instance.ContextRulesetConfig = _store;
Evaluator = new PdtEvaluator() { ContextRulesetConfig = _store };
if (defs == null) return;
foreach (var def in defs) {
_props.Add(new RulesetConfigPropertyAdapter(def.Key, def.Value, this));
@@ -64,7 +65,7 @@ namespace Cryville.Crtr.Config {
public object[] Range {
get {
if (_def.range != null)
PdtEvaluator.Instance.Evaluate(_rangeOp, _def.range);
_master.Evaluator.Evaluate(_rangeOp, _def.range);
return m_range;
}
}
@@ -89,9 +90,9 @@ namespace Cryville.Crtr.Config {
public object MapValue(object value) {
_numst.Value = (float)(double)value;
if (_def.value == null) return _numst.Value;
PdtEvaluator.Instance.ContextSelfValue = _numst.Source;
PdtEvaluator.Instance.Evaluate(_numst.Target, _def.value);
PdtEvaluator.Instance.ContextSelfValue = null;
_master.Evaluator.ContextSelfValue = _numst.Source;
_master.Evaluator.Evaluate(_numst.Target, _def.value);
_master.Evaluator.ContextSelfValue = null;
return _numst.Value;
}