Add context state and context event access for judge.

This commit is contained in:
2023-06-02 18:23:12 +08:00
parent a008760918
commit 82f769f798

View File

@@ -228,6 +228,10 @@ namespace Cryville.Crtr {
if (ev.Definition.stack != cstack) break;
_numbuf1 = (float)ev.StartTime; _numsrc1.Invalidate(); _etor.ContextCascadeUpdate(_var_fn, _numsrc1);
_numbuf2 = (float)ev.EndTime; _numsrc2.Invalidate(); _etor.ContextCascadeUpdate(_var_tn, _numsrc2);
if (ev.BaseEvent != null) {
_etor.ContextEvent = ev.BaseEvent;
_etor.ContextState = ev.Handler.cs;
}
var def = ev.Definition;
if (def.hit != null) {
_etor.Evaluate(_hitop, def.hit);
@@ -237,17 +241,25 @@ namespace Cryville.Crtr {
}
}
else if (hitIndex == -1) hitIndex = index;
_etor.ContextState = null;
_etor.ContextEvent = null;
index++;
}
if (hitIndex != -1) {
var hitEvent = actlist[hitIndex];
_numbuf1 = (float)hitEvent.StartTime; _numsrc1.Invalidate(); _etor.ContextCascadeUpdate(_var_fn, _numsrc1);
_numbuf2 = (float)hitEvent.EndTime; _numsrc2.Invalidate(); _etor.ContextCascadeUpdate(_var_tn, _numsrc2);
if (hitEvent.BaseEvent != null) {
_etor.ContextEvent = hitEvent.BaseEvent;
_etor.ContextState = hitEvent.Handler.cs;
}
var def = hitEvent.Definition;
if (def == _judgePause) _sys.TogglePause();
if (def.on_hit != null) Execute(hitEvent, (ft + tt) / 2, def.on_hit, false);
if (def.persist != null) _etor.Evaluate(_flagop, def.persist);
else _flag = false;
_etor.ContextState = null;
_etor.ContextEvent = null;
if (!_flag) {
actlist.RemoveAt(hitIndex);
--index;