Pull down some judge preparation logic.

This commit is contained in:
2023-01-14 21:39:10 +08:00
parent c24372b308
commit 7662011d60
2 changed files with 10 additions and 9 deletions

View File

@@ -21,7 +21,7 @@ namespace Cryville.Crtr {
public double EndTime { get; set; }
public double StartClip { get; set; }
public double EndClip { get; set; }
public Identifier JudgeId { get; set; }
public Chart.Judge BaseEvent { get; set; }
public JudgeDefinition Definition { get; set; }
public NoteHandler Handler { get; set; }
}
@@ -37,20 +37,24 @@ namespace Cryville.Crtr {
InitJudges();
InitScores();
}
public void Prepare(double st, double et, Identifier input, Identifier judge, NoteHandler handler) {
public void Prepare(StampedEvent sev, NoteHandler handler) {
var tev = (Chart.Judge)sev.Unstamped;
Identifier input = default(Identifier);
ChartPlayer.etor.Evaluate(new PropOp.Identifier(v => input = new Identifier(v)), _rs.judges[tev.Id].input);
double st = sev.Time, et = st + sev.Duration;
List<JudgeEvent> list;
if (!evs.TryGetValue(input, out list)) {
ct.Add(input, 0);
evs.Add(input, list = new List<JudgeEvent>());
activeEvs.Add(input, new List<JudgeEvent>());
}
var def = _rs.judges[judge];
var def = _rs.judges[tev.Id];
var ev = new JudgeEvent {
StartTime = st,
EndTime = et,
StartClip = st + def.clip[0],
EndClip = et + def.clip[1],
JudgeId = judge,
BaseEvent = tev,
Definition = def,
Handler = handler,
};

View File

@@ -100,12 +100,9 @@ namespace Cryville.Crtr {
if (ev == null) { }
else if (ev.Unstamped == null) { }
else if (ev.Unstamped is Chart.Judge) {
var tev = (Chart.Judge)ev.Unstamped;
Identifier name = default(Identifier);
ChartPlayer.etor.ContextEvent = tev;
ChartPlayer.etor.ContextEvent = ev.Unstamped;
ChartPlayer.etor.ContextState = s;
ChartPlayer.etor.Evaluate(new PropOp.Identifier(v => name = new Identifier(v)), ruleset.judges[tev.Id].input);
judge.Prepare(ev.Time, ev.Time + ev.Duration, name, tev.Id, this);
judge.Prepare(ev, this);
ChartPlayer.etor.ContextState = null;
ChartPlayer.etor.ContextEvent = null;
}