Implement judge_result contextual variable.

This commit is contained in:
2023-01-16 20:54:53 +08:00
parent 5b9149cb34
commit 79f11b9c33

View File

@@ -25,19 +25,27 @@ namespace Cryville.Crtr {
readonly Dictionary<Chart.Judge, JudgeState> judges = new Dictionary<Chart.Judge, JudgeState>();
readonly Dictionary<int, DynamicJudgeAnchorPair> dynJudgeAnchors = new Dictionary<int, DynamicJudgeAnchorPair>();
class JudgeState {
static readonly int _var_judge_result = IdentifierManager.SharedInstance.Request("judge_result");
public Anchor StaticAnchor { get; private set; }
public DynamicJudgeAnchorPair DynamicAnchors { get; private set; }
public bool Judged { get; private set; }
public float AbsoluteTime { get; private set; }
public float RelativeTime { get; private set; }
int _result = 0;
PropSrc _resultPropSrc;
public JudgeState(NoteHandler handler, int name) {
StaticAnchor = handler.RegisterAnchor(handler.judge.judgeMap[name]);
StaticAnchor = handler.RegisterAnchor(handler.judge.judgeMap[name], true);
DynamicAnchors = handler.GetDynamicJudgeAnchorPair(name);
}
public void MarkJudged(float abs, float rel) {
public void MarkJudged(float abs, float rel, int result) {
Judged = true;
AbsoluteTime = abs;
RelativeTime = rel;
_result = result;
_resultPropSrc.Invalidate();
}
public void InitPropSrcs() {
StaticAnchor.PropSrcs.Add(_var_judge_result, _resultPropSrc = new PropSrc.Identifier(() => _result));
}
}
class DynamicJudgeAnchorPair {
@@ -68,6 +76,7 @@ namespace Cryville.Crtr {
public override void Init() {
base.Init();
sgos = gogroup.GetComponentsInChildren<SectionalGameObject>();
foreach (var judge in judges.Values) judge.InitPropSrcs();
}
protected override void PreAwake(ContainerState s) {
base.PreAwake(s);