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