Make clip field in JudgeDefinition dynamic.

This commit is contained in:
2023-04-09 22:13:50 +08:00
parent c57c82bdd1
commit d6e3d3ad00

View File

@@ -65,15 +65,17 @@ namespace Cryville.Crtr {
var tev = (Chart.Judge)sev.Unstamped; var tev = (Chart.Judge)sev.Unstamped;
if (tev.Id.Key == _var_pause) throw new InvalidOperationException("Cannot assign the special judge \"pause\" to notes"); if (tev.Id.Key == _var_pause) throw new InvalidOperationException("Cannot assign the special judge \"pause\" to notes");
Identifier input = default(Identifier); Identifier input = default(Identifier);
ChartPlayer.etor.Evaluate(new PropOp.Identifier(v => input = new Identifier(v)), _rs.judges[tev.Id].input); Clip clip = default(Clip);
var def = _rs.judges[tev.Id];
ChartPlayer.etor.Evaluate(new PropOp.Identifier(v => input = new Identifier(v)), def.input);
ChartPlayer.etor.Evaluate(new PropOp.Clip(v => clip = v), def.clip);
double st = sev.Time, et = st + sev.Duration; double st = sev.Time, et = st + sev.Duration;
var list = evs[input]; var list = evs[input];
var def = _rs.judges[tev.Id];
var ev = new JudgeEvent { var ev = new JudgeEvent {
StartTime = st, StartTime = st,
EndTime = et, EndTime = et,
StartClip = st + def.clip.Behind, StartClip = st + clip.Behind,
EndClip = et + def.clip.Ahead, EndClip = et + clip.Ahead,
BaseEvent = tev, BaseEvent = tev,
Definition = def, Definition = def,
Handler = handler, Handler = handler,
@@ -304,7 +306,7 @@ namespace Cryville.Crtr {
public PairList<Identifier, PdtExpression> pass; public PairList<Identifier, PdtExpression> pass;
} }
public class JudgeDefinition { public class JudgeDefinition {
public Clip clip; public PdtExpression clip;
public PdtExpression input; public PdtExpression input;
public PdtExpression hit; public PdtExpression hit;
public PdtExpression persist; public PdtExpression persist;