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;
if (tev.Id.Key == _var_pause) throw new InvalidOperationException("Cannot assign the special judge \"pause\" to notes");
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;
var list = evs[input];
var def = _rs.judges[tev.Id];
var ev = new JudgeEvent {
StartTime = st,
EndTime = et,
StartClip = st + def.clip.Behind,
EndClip = et + def.clip.Ahead,
StartClip = st + clip.Behind,
EndClip = et + clip.Ahead,
BaseEvent = tev,
Definition = def,
Handler = handler,
@@ -304,7 +306,7 @@ namespace Cryville.Crtr {
public PairList<Identifier, PdtExpression> pass;
}
public class JudgeDefinition {
public Clip clip;
public PdtExpression clip;
public PdtExpression input;
public PdtExpression hit;
public PdtExpression persist;