Add static judge anchor. Change dynamic anchors to single only.
This commit is contained in:
@@ -64,10 +64,12 @@ namespace Cryville.Crtr {
|
||||
}
|
||||
#endregion
|
||||
#region Judge
|
||||
internal readonly Dictionary<int, int> judgeMap = new Dictionary<int, int>();
|
||||
internal readonly Dictionary<int, int> jtabsMap = new Dictionary<int, int>();
|
||||
internal readonly Dictionary<int, int> jtrelMap = new Dictionary<int, int>();
|
||||
void InitJudges() {
|
||||
foreach (var i in _rs.judges.Keys) {
|
||||
judgeMap.Add(i.Key, IdentifierManager.SharedInstance.Request("judge_" + i.Name));
|
||||
jtabsMap.Add(i.Key, IdentifierManager.SharedInstance.Request("jtabs_" + i.Name));
|
||||
jtrelMap.Add(i.Key, IdentifierManager.SharedInstance.Request("jtrel_" + i.Name));
|
||||
}
|
||||
|
@@ -23,15 +23,16 @@ namespace Cryville.Crtr {
|
||||
|
||||
SectionalGameObject[] sgos;
|
||||
readonly Dictionary<Chart.Judge, JudgeState> judges = new Dictionary<Chart.Judge, JudgeState>();
|
||||
readonly Dictionary<int, DynamicJudgeAnchorPair> dynJudgeAnchors = new Dictionary<int, DynamicJudgeAnchorPair>();
|
||||
class JudgeState {
|
||||
public Anchor AbsoluteAnchor { get; private set; }
|
||||
public Anchor RelativeAnchor { get; private set; }
|
||||
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; }
|
||||
public JudgeState(NoteHandler handler, int name) {
|
||||
AbsoluteAnchor = handler.RegisterAnchor(handler.judge.jtabsMap[name]);
|
||||
RelativeAnchor = handler.RegisterAnchor(handler.judge.jtrelMap[name]);
|
||||
StaticAnchor = handler.RegisterAnchor(handler.judge.judgeMap[name]);
|
||||
DynamicAnchors = handler.GetDynamicJudgeAnchorPair(name);
|
||||
}
|
||||
public void MarkJudged(float abs, float rel) {
|
||||
Judged = true;
|
||||
@@ -39,6 +40,24 @@ namespace Cryville.Crtr {
|
||||
RelativeTime = rel;
|
||||
}
|
||||
}
|
||||
class DynamicJudgeAnchorPair {
|
||||
public Anchor Absolute { get; private set; }
|
||||
public Anchor Relative { get; private set; }
|
||||
public DynamicJudgeAnchorPair(Anchor absolute, Anchor relative) {
|
||||
Absolute = absolute;
|
||||
Relative = relative;
|
||||
}
|
||||
}
|
||||
DynamicJudgeAnchorPair GetDynamicJudgeAnchorPair(int name) {
|
||||
DynamicJudgeAnchorPair result;
|
||||
if (!dynJudgeAnchors.TryGetValue(name, out result)) {
|
||||
dynJudgeAnchors.Add(name, result = new DynamicJudgeAnchorPair(
|
||||
RegisterAnchor(judge.jtabsMap[name]),
|
||||
RegisterAnchor(judge.jtrelMap[name])
|
||||
));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public override void PreInit() {
|
||||
base.PreInit();
|
||||
@@ -112,8 +131,8 @@ namespace Cryville.Crtr {
|
||||
if (cs.Working) {
|
||||
foreach (var j in judges.Values) {
|
||||
if (!j.Judged) continue;
|
||||
PushAnchorEvent(j.AbsoluteTime, j.AbsoluteAnchor);
|
||||
PushAnchorEvent(j.RelativeTime + cs.Time, j.RelativeAnchor);
|
||||
PushAnchorEvent(j.AbsoluteTime, j.DynamicAnchors.Absolute);
|
||||
PushAnchorEvent(j.RelativeTime + cs.Time, j.DynamicAnchors.Relative);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user