Reads score operation as structure.
This commit is contained in:
@@ -11,7 +11,6 @@ namespace Cryville.Common {
|
||||
Key = IdentifierManager.SharedInstance.Request(name);
|
||||
}
|
||||
public override bool Equals(object obj) {
|
||||
if (obj == null && Key == 0) return true;
|
||||
if (obj == null || !(obj is Identifier)) return false;
|
||||
return Equals((Identifier)obj);
|
||||
}
|
||||
@@ -22,6 +21,7 @@ namespace Cryville.Common {
|
||||
return Key;
|
||||
}
|
||||
public override string ToString() {
|
||||
if (Key == 0) return "";
|
||||
return Name.ToString();
|
||||
}
|
||||
public static implicit operator Identifier(string identifier) {
|
||||
|
@@ -53,11 +53,15 @@ namespace Cryville.Crtr {
|
||||
public PdtExpression hit;
|
||||
public Identifier[] pass;
|
||||
public Identifier miss;
|
||||
public Dictionary<Identifier, PdtExpression> scores;
|
||||
public Dictionary<ScoreOperation, PdtExpression> scores;
|
||||
}
|
||||
public class ScoreOperation {
|
||||
public int name;
|
||||
public PdtOperator op;
|
||||
public Identifier name;
|
||||
public Identifier op;
|
||||
public override string ToString() {
|
||||
if (op == default(Identifier)) return name.ToString();
|
||||
else return string.Format("{0} {1}", name, op);
|
||||
}
|
||||
}
|
||||
public class ScoreDefinition {
|
||||
public PdtExpression value;
|
||||
|
@@ -6,6 +6,7 @@ using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using SIdentifier = Cryville.Common.Identifier;
|
||||
|
||||
namespace Cryville.Crtr {
|
||||
@@ -163,6 +164,13 @@ namespace Cryville.Crtr {
|
||||
if (type.Equals(typeof(Identifier))) {
|
||||
return (Identifier)exp;
|
||||
}
|
||||
else if (type == typeof(ScoreOperation)) {
|
||||
var m = Regex.Match(exp, @"^(\S+)\s*?(\S+)?$");
|
||||
var name = new Identifier(m.Groups[1].Value);
|
||||
if (!m.Groups[2].Success) return new ScoreOperation { name = name };
|
||||
var op = new Identifier(m.Groups[2].Value);
|
||||
return new ScoreOperation { name = name, op = op };
|
||||
}
|
||||
}
|
||||
return base.ChangeType(value, type, culture);
|
||||
}
|
||||
|
Reference in New Issue
Block a user