Remove some dedicated properties on ISkinnableGroup.
This commit is contained in:
@@ -33,11 +33,7 @@ namespace Cryville.Crtr {
|
||||
public void MatchStatic(ISkinnableGroup group) {
|
||||
var stack = _stacks[0];
|
||||
stack.Clear();
|
||||
if (group.State != null) ChartPlayer.etor.ContextState = group.State;
|
||||
if (group.Container != null) ChartPlayer.etor.ContextEvent = group.Container;
|
||||
MatchStatic(_rootElement, group, stack, new RuntimeSkinContext(group.SkinContext));
|
||||
ChartPlayer.etor.ContextEvent = null;
|
||||
ChartPlayer.etor.ContextState = null;
|
||||
}
|
||||
void MatchStatic(SkinElement rel, ISkinnableGroup group, DynamicStack stack, RuntimeSkinContext ctx) {
|
||||
var rc = ctx.ReadContext;
|
||||
@@ -70,17 +66,15 @@ namespace Cryville.Crtr {
|
||||
}
|
||||
if (rc.PropSrcs != null) ChartPlayer.etor.ContextCascadeDiscard();
|
||||
}
|
||||
public void MatchDynamic(ISkinnableGroup group) {
|
||||
var stack = _stacks[group.DynamicLevel];
|
||||
var nstack = group.DynamicLevel + 1 < _stacks.Length ? _stacks[group.DynamicLevel + 1] : null;
|
||||
if (nstack != null) nstack.Clear();
|
||||
public void MatchDynamic(ISkinnableGroup group, int dl) {
|
||||
var stack = _stacks[dl];
|
||||
if (stack.Properties.Count == 0 && stack.Elements.Count == 0) return;
|
||||
var nstack = dl + 1 < _stacks.Length ? _stacks[dl + 1] : null;
|
||||
if (nstack != null) nstack.Clear();
|
||||
Profiler.BeginSample("SkinContainer.MatchDynamic");
|
||||
if (group.State != null) ChartPlayer.etor.ContextState = group.State;
|
||||
if (group.Container != null) ChartPlayer.etor.ContextEvent = group.Container;
|
||||
for (int i = 0; i < stack.Properties.Count; i++) {
|
||||
DynamicProperty p = stack.Properties[i];
|
||||
p.Key.ExecuteDynamic(group, p.Context, p.Value);
|
||||
p.Key.ExecuteDynamic(group, p.Context, p.Value, dl);
|
||||
}
|
||||
for (int i = 0; i < stack.Elements.Count; i++) {
|
||||
DynamicElement e = stack.Elements[i];
|
||||
@@ -94,27 +88,25 @@ namespace Cryville.Crtr {
|
||||
if (nstack == null) throw;
|
||||
nstack.Elements.Add(e);
|
||||
}
|
||||
if (nctx != null) MatchDynamic(e.Element, group, nstack, new RuntimeSkinContext(
|
||||
if (nctx != null) MatchDynamic(e.Element, group, dl, nstack, new RuntimeSkinContext(
|
||||
nctx, e.Context, e.Selectors.annotations.Contains("if"), e.Selectors.annotations.Contains("then")
|
||||
));
|
||||
if (psrcs != null) ChartPlayer.etor.ContextCascadeDiscard();
|
||||
}
|
||||
ChartPlayer.etor.ContextEvent = null;
|
||||
ChartPlayer.etor.ContextState = null;
|
||||
Profiler.EndSample();
|
||||
}
|
||||
void MatchDynamic(SkinElement rel, ISkinnableGroup group, DynamicStack stack, RuntimeSkinContext ctx) {
|
||||
void MatchDynamic(SkinElement rel, ISkinnableGroup group, int dl, DynamicStack stack, RuntimeSkinContext ctx) {
|
||||
var rc = ctx.ReadContext;
|
||||
ChartPlayer.etor.ContextTransform = rc.Transform;
|
||||
if (rc.PropSrcs != null) ChartPlayer.etor.ContextCascadeInsert(rc.PropSrcs);
|
||||
foreach (var p in rel.properties) {
|
||||
p.Key.ExecuteDynamic(group, ctx, p.Value);
|
||||
p.Key.ExecuteDynamic(group, ctx, p.Value, dl);
|
||||
}
|
||||
ChartPlayer.etor.ContextTransform = null;
|
||||
foreach (var e in rel.elements) {
|
||||
if (e.Key.IsUpdatable(group)) {
|
||||
if (e.Key.IsUpdatable(group, dl)) {
|
||||
SkinContext nctx = e.Key.MatchDynamic(group, rc);
|
||||
if (nctx != null) MatchDynamic(e.Value, group, stack, new RuntimeSkinContext(
|
||||
if (nctx != null) MatchDynamic(e.Value, group, dl, stack, new RuntimeSkinContext(
|
||||
nctx, ctx, e.Key.annotations.Contains("if"), e.Key.annotations.Contains("then")
|
||||
));
|
||||
}
|
||||
@@ -163,10 +155,7 @@ namespace Cryville.Crtr {
|
||||
}
|
||||
}
|
||||
public interface ISkinnableGroup {
|
||||
int DynamicLevel { get; }
|
||||
string TypeName { get; }
|
||||
ContainerState State { get; }
|
||||
EventContainer Container { get; }
|
||||
SkinContext SkinContext { get; }
|
||||
Anchor OpenedAnchor { get; }
|
||||
bool TryGetAnchorsByName(int name, out IReadOnlyCollection<Anchor> result);
|
||||
|
Reference in New Issue
Block a user