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