Tokenize ruleset keys. Remove MotionName.
This commit is contained in:
@@ -276,8 +276,8 @@ namespace Cryville.Crtr {
|
||||
private void LoadFromString(string s) {
|
||||
Match m = Regex.Match(s, @"^(.+?)(#(\d+))?(@(.+?))?(\^(.+?))?(\*(.+?))?(:(.+))?$");
|
||||
if (!m.Success) throw new ArgumentException(); // TODO
|
||||
name = new MotionName(m.Groups[1].Value);
|
||||
var registry = ChartPlayer.motionRegistry[name.MainName];
|
||||
name = new Identifier(m.Groups[1].Value);
|
||||
var registry = ChartPlayer.motionRegistry[name];
|
||||
if (m.Groups[3].Success) {
|
||||
ushort id = ushort.Parse(m.Groups[3].Value);
|
||||
Vec1 time = m.Groups[5].Success ? new Vec1(m.Groups[5].Value) : null;
|
||||
@@ -313,15 +313,15 @@ namespace Cryville.Crtr {
|
||||
return result;
|
||||
}
|
||||
|
||||
private MotionName name;
|
||||
private Identifier name;
|
||||
[JsonIgnore]
|
||||
public MotionName Name {
|
||||
public Identifier Name {
|
||||
get {
|
||||
return name;
|
||||
}
|
||||
private set {
|
||||
MotionRegistry reg;
|
||||
if (!ChartPlayer.motionRegistry.TryGetValue(value.MainName, out reg))
|
||||
if (!ChartPlayer.motionRegistry.TryGetValue(value, out reg))
|
||||
throw new ArgumentException("Invalid motion name");
|
||||
if (RelativeNode != null) RelativeNode.Value = reg.InitValue;
|
||||
else AbsoluteValue = reg.InitValue;
|
||||
@@ -351,16 +351,16 @@ namespace Cryville.Crtr {
|
||||
else return AbsoluteValue;
|
||||
}));
|
||||
SubmitPropOp("motion", new PropOp.String(v => motion = v));
|
||||
SubmitPropOp("name", new PropOp.String(v => {
|
||||
var n = new MotionName(v);
|
||||
SubmitPropOp("name", new PropOp.Identifier(v => {
|
||||
var n = new Identifier(v);
|
||||
if (Name.Equals(n)) { }
|
||||
else if (Name.Equals(default(MotionName))) Name = n;
|
||||
else if (Name.Equals(default(Identifier))) Name = n;
|
||||
else throw new RulesetViolationException(string.Format(
|
||||
"Motion name not matched, expected {0}, got {1}", n, Name
|
||||
));
|
||||
}));
|
||||
SubmitPropOp("value", new VectorOp(v => {
|
||||
var vec = Vector.Construct(ChartPlayer.motionRegistry[Name.MainName].Type, v);
|
||||
var vec = Vector.Construct(ChartPlayer.motionRegistry[Name].Type, v);
|
||||
if (RelativeNode != null) RelativeNode.Value = vec;
|
||||
else AbsoluteValue = vec;
|
||||
}));
|
||||
@@ -379,7 +379,7 @@ namespace Cryville.Crtr {
|
||||
|
||||
public Note() {
|
||||
SubmitPropSrc("track", new PropSrc.Float(() => {
|
||||
var i = motions.FirstOrDefault(m => m.RelativeNode == null && m.Name.MainName == "track");
|
||||
var i = motions.FirstOrDefault(m => m.RelativeNode == null && m.Name == "track");
|
||||
if (i == null) return ((Vec1)ChartPlayer.motionRegistry["track"].InitValue).Value;
|
||||
else return ((Vec1)i.AbsoluteValue).Value;
|
||||
}));
|
||||
|
Reference in New Issue
Block a user