@@ -32,7 +32,7 @@ public class Layer : INotifyPropertyChanged, ICloneable, IDisposable
3232
3333 public bool Enabled { get ; set ; } = true ;
3434
35- public Dictionary < string , IOverrideLogic > ? OverrideLogic { get ; set ; }
35+ public Dictionary < string , IOverrideLogic > OverrideLogic { get ; set ; } = [ ] ;
3636 // private void OnOverrideLogicChanged() => // Make the logic collection changed event trigger a property change to ensure it gets saved?
3737
3838 #region Constructors
@@ -66,32 +66,38 @@ public EffectLayer Render(IGameState gs)
6666 {
6767 try
6868 {
69- if ( OverrideLogic != null )
69+ // first check Enabled override, if it exists, and if it says disabled, return an empty layer
70+ if ( OverrideLogic . TryGetValue ( nameof ( LayerHandlerProperties . Enabled ) , out var enabledLogic ) ||
71+ OverrideLogic . TryGetValue ( nameof ( LayerHandlerProperties . _Enabled ) , out enabledLogic ) )
7072 {
71- // For every property which has an override logic assigned
72- foreach ( var ( key , overrideLogic ) in OverrideLogic )
73- // Set the value of the logic evaluation as the override for this property
73+ var enabledValue = enabledLogic . Evaluate ( gs ) ;
74+ if ( enabledValue is false )
75+ return EmptyLayer . Instance ;
76+ }
77+
78+ // For every property which has an override logic assigned
79+ foreach ( var ( key , overrideLogic ) in OverrideLogic )
80+ {
81+ // Set the value of the logic evaluation as the override for this property
82+ var value = overrideLogic . Evaluate ( gs ) ;
83+ try
7484 {
75- var value = overrideLogic . Evaluate ( gs ) ;
76- try
85+ if ( overrideLogic . VarType is { IsEnum : true } )
7786 {
78- if ( overrideLogic . VarType is { IsEnum : true } )
79- {
80- Handler . Properties . SetOverride ( key ,
81- value == null ? null : Enum . ToObject ( overrideLogic . VarType , value ) ) ;
82- }
83- else
84- {
85- Handler . Properties . SetOverride ( key , value ) ;
86- }
87+ Handler . Properties . SetOverride ( key ,
88+ value == null ? null : Enum . ToObject ( overrideLogic . VarType , value ) ) ;
8789 }
88- catch ( OverrideNameRefactoredException )
90+ else
8991 {
90- OverrideLogic . Remove ( key ) ;
91- OverrideLogic . Add ( key [ 1 ..] , overrideLogic ) ;
92- break ;
92+ Handler . Properties . SetOverride ( key , value ) ;
9393 }
9494 }
95+ catch ( OverrideNameRefactoredException )
96+ {
97+ OverrideLogic . Remove ( key ) ;
98+ OverrideLogic . Add ( key [ 1 ..] , overrideLogic ) ;
99+ break ;
100+ }
95101 }
96102
97103 if ( ! Handler . Properties . Enabled )
0 commit comments