Prune code.

This commit is contained in:
2022-09-30 18:19:19 +08:00
parent e8e36b83bd
commit cd4ea557c3
41 changed files with 22 additions and 3592 deletions

View File

@@ -1,14 +1,11 @@
using Cryville.Common;
using Cryville.Common.Pdt;
using Cryville.Crtr.Components;
using Microsoft.Windows.PropSys;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Text;
using UnityEngine.Animations;
namespace Cryville.Crtr {
public class Ruleset {
@@ -21,9 +18,6 @@ namespace Cryville.Crtr {
[JsonRequired]
public string pdt;
/*[JsonIgnore][Obsolete]
public CompiledRuleset c;*/
[JsonIgnore]
public PdtRuleset Root { get; private set; }
@@ -31,119 +25,10 @@ namespace Cryville.Crtr {
using (StreamReader pdtreader = new StreamReader(dir.FullName + "/" + pdt + ".pdt", Encoding.UTF8)) {
var src = pdtreader.ReadToEnd();
Root = new RulesetInterpreter(src, null).Interpret();
/*c = PdtReader.Read<CompiledRuleset>(src);
c.PreEval(new Evaluator());*/
}
}
}
#region Obsolete
#if false
[Binder(typeof(RulesetBinder))][Obsolete]
public class CompiledRuleset {
public Dictionary<string, PrimaryJudge> primary_judges;
public Dictionary<string, SecondaryJudge> secondary_judges;
public Dictionary<string, TertiaryJudge> tertiary_judges;
public Dictionary<string, Score> scores;
public void PreEval(Evaluator etor) {
foreach (var j in primary_judges.Values) {
foreach (var i in j.pass)
j.PassCh.Add(i, secondary_judges[i]);
if (j.time != null) j.time.PreEval(etor);
}
foreach (var j in secondary_judges.Values) {
if (j.call != null) foreach (var i in j.call)
j.CallCh.Add(i, secondary_judges[i]);
if (j.pass != null) foreach (var i in j.pass)
j.PassCh.Add(i, tertiary_judges[i]);
if (j.time != null) j.time.PreEval(etor);
etor.Context = new EvaluatorContext() { Reservations = new List<string>() { "npos" } };
if (j.area != null) j.area.PreEval(etor);
etor.Context = default(EvaluatorContext);
}
var scoreNames = scores.Keys.ToList();
foreach (var j in tertiary_judges.Values) {
if (j.time != null) j.time.PreEval(etor);
etor.Context = new EvaluatorContext() { Reservations = new List<string>() { "npos" } };
if (j.area != null) j.area.PreEval(etor);
etor.Context = new EvaluatorContext() { Reservations = scoreNames };
foreach (var s in j.scores.Values) {
s.PreEval(etor);
}
etor.Context = default(EvaluatorContext);
}
}
/*public void PatchChart(EventBatcher b) {
var etor = new EvalImpl();
List<StampedEvent> app = new List<StampedEvent>();
foreach (var ev in b.stampedEvents) {
if (ev.Event is Chart.Note) {
var tev = (Chart.Note)ev.Event;
if (tev.judge != null)
PatchJudge(tev, primary_judges[tev.judge], ev.Time, etor, app);
if (tev.endjudge != null)
PatchJudge(tev, primary_judges[tev.endjudge], ev.Time + ev.Duration, etor, app);
}
}
b.stampedEvents.AddRange(app);
}*/
public static void PatchJudge(Chart.Note tev, PrimaryJudge pj, float t, IEvaluator etor, List<StampedEvent.Judge> l, bool endjudge = false) {
float? min = null; float? max = null;
if (pj.time != null) {
var r = pj.time.Eval<List<float>>(etor);
min = r[0]; max = r[1];
}
else {
foreach (var sj in pj.PassCh.Values) {
if (sj.time == null) continue;
var r = sj.time.Eval<List<float>>(etor);
if (r[0] > min || min == null) min = r[0];
if (r[1] < max || max == null) max = r[1];
}
}
var sev = new StampedEvent.Judge() {
Time = t + (min ?? 0),
NoteTime = t,
Container = tev,
TargetJudge = pj,
IsEndJudge = endjudge,
};
var scev = new StampedEvent.Judge() {
Time = t,
NoteTime = t,
Container = tev,
StartEvent = sev,
IsEndJudge = endjudge,
};
var seev = new StampedEvent.Judge() {
Time = t + (max ?? 0),
NoteTime = t,
Container = tev,
TargetJudge = pj,
StartEvent = sev,
IsEndJudge = endjudge,
};
l.Add(sev); l.Add(scev); l.Add(seev);
}
}
[Obsolete]
public class RulesetBinder : EmptyBinder {
public override object ChangeType(object value, Type type, System.Globalization.CultureInfo culture) {
try {
var etor = new Evaluator();
var r = ((Expression)value).Eval(etor);
return etor.Cast(type, r);
}
catch (Exception) {
return base.ChangeType(value, type, culture);
}
}
}
#endif
#endregion
[Binder(typeof(PdtRulesetBinder))]
public class PdtRuleset {
public Dictionary<string, InputDefinition> inputs;