Change fixed skin root to configurable root element in skin container.

This commit is contained in:
2023-02-15 18:09:21 +08:00
parent c7ea6f1d4b
commit b6e238780e
2 changed files with 5 additions and 5 deletions

View File

@@ -72,7 +72,7 @@ namespace Cryville.Crtr.Event {
SkinContainer skinContainer; SkinContainer skinContainer;
protected Judge judge; protected Judge judge;
public void AttachSystems(PdtSkin skin, Judge judge) { public void AttachSystems(PdtSkin skin, Judge judge) {
skinContainer = new SkinContainer(skin); skinContainer = new SkinContainer(skin.elements);
this.judge = judge; this.judge = judge;
} }

View File

@@ -6,7 +6,7 @@ using UnityEngine.Profiling;
namespace Cryville.Crtr { namespace Cryville.Crtr {
public class SkinContainer { public class SkinContainer {
readonly PdtSkin skin; readonly SkinElement _rootElement;
readonly DynamicStack[] _stacks = new DynamicStack[2]; readonly DynamicStack[] _stacks = new DynamicStack[2];
class DynamicStack { class DynamicStack {
public readonly List<DynamicProperty> Properties = new List<DynamicProperty>(); public readonly List<DynamicProperty> Properties = new List<DynamicProperty>();
@@ -26,8 +26,8 @@ namespace Cryville.Crtr {
public SkinSelectors Selectors { get; set; } public SkinSelectors Selectors { get; set; }
public SkinElement Element { get; set; } public SkinElement Element { get; set; }
} }
public SkinContainer(PdtSkin _skin) { public SkinContainer(SkinElement rootElement) {
skin = _skin; _rootElement = rootElement;
for (int i = 0; i < _stacks.Length; i++) _stacks[i] = new DynamicStack(); for (int i = 0; i < _stacks.Length; i++) _stacks[i] = new DynamicStack();
} }
public void MatchStatic(ContainerState state) { public void MatchStatic(ContainerState state) {
@@ -35,7 +35,7 @@ namespace Cryville.Crtr {
stack.Clear(); stack.Clear();
ChartPlayer.etor.ContextState = state; ChartPlayer.etor.ContextState = state;
ChartPlayer.etor.ContextEvent = state.Container; ChartPlayer.etor.ContextEvent = state.Container;
MatchStatic(skin, state, stack, new RuntimeSkinContext(state.Handler.SkinContext)); MatchStatic(_rootElement, state, stack, new RuntimeSkinContext(state.Handler.SkinContext));
ChartPlayer.etor.ContextEvent = null; ChartPlayer.etor.ContextEvent = null;
ChartPlayer.etor.ContextState = null; ChartPlayer.etor.ContextState = null;
} }