Fix SkinSelectors.ToString.

This commit is contained in:
2023-01-27 15:28:22 +08:00
parent 3fdc236b1d
commit d0f0c8ce6d

View File

@@ -23,7 +23,7 @@ namespace Cryville.Crtr {
bool flag = false; bool flag = false;
string r = ""; string r = "";
foreach (var a in annotations) { foreach (var a in annotations) {
if (flag) r += " " + a; if (flag) r += " @" + a;
else { r += a; flag = true; } else { r += a; flag = true; }
} }
foreach (var s in selectors) { foreach (var s in selectors) {
@@ -60,6 +60,8 @@ namespace Cryville.Crtr {
public abstract class SkinSelector { public abstract class SkinSelector {
protected SkinSelector() { } protected SkinSelector() { }
public abstract override string ToString();
public virtual void Optimize(PdtEvaluatorBase etor) { } public virtual void Optimize(PdtEvaluatorBase etor) { }
public virtual IEnumerable<SkinContext> MatchStatic(ContainerState h, SkinContext c) { throw new SelectorNotAvailableException(); } public virtual IEnumerable<SkinContext> MatchStatic(ContainerState h, SkinContext c) { throw new SelectorNotAvailableException(); }
public virtual SkinContext MatchDynamic(ContainerState h, SkinContext c) { throw new SelectorNotAvailableException(); } public virtual SkinContext MatchDynamic(ContainerState h, SkinContext c) { throw new SelectorNotAvailableException(); }
@@ -68,6 +70,8 @@ namespace Cryville.Crtr {
} }
public class CreateObject : SkinSelector { public class CreateObject : SkinSelector {
public CreateObject() { } public CreateObject() { }
public override string ToString() { return "$"; }
public override IEnumerable<SkinContext> MatchStatic(ContainerState h, SkinContext c) { public override IEnumerable<SkinContext> MatchStatic(ContainerState h, SkinContext c) {
var obj = new GameObject("__obj__"); var obj = new GameObject("__obj__");
obj.transform.SetParent(c.Transform, false); obj.transform.SetParent(c.Transform, false);
@@ -80,6 +84,7 @@ namespace Cryville.Crtr {
public Anchor(string name) { public Anchor(string name) {
Name = IdentifierManager.SharedInstance.Request(name); Name = IdentifierManager.SharedInstance.Request(name);
} }
public override string ToString() { return string.Format(".{0}", IdentifierManager.SharedInstance.Retrieve(Name)); }
public override IEnumerable<SkinContext> MatchStatic(ContainerState h, SkinContext c) { public override IEnumerable<SkinContext> MatchStatic(ContainerState h, SkinContext c) {
List<CAnchor> anchors; List<CAnchor> anchors;
@@ -97,6 +102,8 @@ namespace Cryville.Crtr {
public AtAnchor(string name) { public AtAnchor(string name) {
Name = IdentifierManager.SharedInstance.Request(name); Name = IdentifierManager.SharedInstance.Request(name);
} }
public override string ToString() { return string.Format("..{0}", IdentifierManager.SharedInstance.Retrieve(Name)); }
public override SkinContext MatchDynamic(ContainerState h, SkinContext c) { public override SkinContext MatchDynamic(ContainerState h, SkinContext c) {
return IsUpdatable(h) ? c : null; return IsUpdatable(h) ? c : null;
} }
@@ -112,6 +119,8 @@ namespace Cryville.Crtr {
_exp = exp; _exp = exp;
_op = new PropOp.Boolean(v => _flag = v); _op = new PropOp.Boolean(v => _flag = v);
} }
public override string ToString() { return string.Format("> {{{0}}}", _exp); }
public override void Optimize(PdtEvaluatorBase etor) { public override void Optimize(PdtEvaluatorBase etor) {
etor.Optimize(_exp); etor.Optimize(_exp);
} }
@@ -137,15 +146,11 @@ namespace Cryville.Crtr {
} }
} }
} }
public class State : SkinSelector {
public State(string state) { }
public override SkinContext MatchDynamic(ContainerState h, SkinContext c) {
return null;
}
}
public class ElementType : SkinSelector { public class ElementType : SkinSelector {
readonly string _type; readonly string _type;
public ElementType(string type) { _type = type; } public ElementType(string type) { _type = type; }
public override string ToString() { return _type; }
public override IEnumerable<SkinContext> MatchStatic(ContainerState h, SkinContext c) { public override IEnumerable<SkinContext> MatchStatic(ContainerState h, SkinContext c) {
return h.Handler.TypeName == _type ? new SkinContext[] { c } : Enumerable.Empty<SkinContext>(); return h.Handler.TypeName == _type ? new SkinContext[] { c } : Enumerable.Empty<SkinContext>();
} }