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,
};