]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Replace `SpriteStateChange` construction action with `AppearanceChange` (#15914)
authorLeon Friedrich <60421075+ElectroJr@users.noreply.github.com>
Sat, 29 Apr 2023 21:04:31 +0000 (09:04 +1200)
committerGitHub <noreply@github.com>
Sat, 29 Apr 2023 21:04:31 +0000 (07:04 +1000)
58 files changed:
Content.Client/ParticleAccelerator/ParticleAcceleratorPartVisualizerSystem.cs
Content.Client/ParticleAccelerator/UI/ParticleAcceleratorControlMenu.cs
Content.Server/Construction/Completions/AppearanceChange.cs [new file with mode: 0644]
Content.Server/Construction/Completions/SpriteStateChange.cs [deleted file]
Content.Server/Construction/ConstructionSystem.Graph.cs
Content.Shared/Construction/ConstructionGraphNode.cs
Content.Shared/Construction/Enums.cs [new file with mode: 0644]
Resources/Prototypes/Catalog/Cargo/cargo_engines.yml
Resources/Prototypes/Entities/Objects/Weapons/Throwable/grenades.yml
Resources/Prototypes/Entities/Structures/Doors/Firelocks/frame.yml
Resources/Prototypes/Entities/Structures/Machines/Computers/base_structurecomputers.yml
Resources/Prototypes/Entities/Structures/Machines/Computers/frame.yml
Resources/Prototypes/Entities/Structures/Piping/Disposal/high_pressure_machine_frame.yml
Resources/Prototypes/Entities/Structures/Power/Generation/PA/base_particleaccelerator.yml
Resources/Prototypes/Entities/Structures/Power/Generation/PA/control_box.yml
Resources/Prototypes/Entities/Structures/Power/Generation/PA/emitter.yml
Resources/Prototypes/Entities/Structures/Power/Generation/PA/end_cap.yml
Resources/Prototypes/Entities/Structures/Power/Generation/PA/fuel_chamber.yml
Resources/Prototypes/Entities/Structures/Power/Generation/PA/power_box.yml
Resources/Prototypes/Entities/Structures/Wallmounts/air_alarm.yml
Resources/Prototypes/Entities/Structures/Wallmounts/fire_alarm.yml
Resources/Prototypes/Recipes/Construction/Graphs/machines/computer.yml
Resources/Prototypes/Recipes/Construction/Graphs/structures/airlock.yml
Resources/Prototypes/Recipes/Construction/Graphs/structures/firelock.yml
Resources/Prototypes/Recipes/Construction/Graphs/structures/shuttle.yml
Resources/Prototypes/Recipes/Construction/Graphs/utilities/air_alarms.yml
Resources/Prototypes/Recipes/Construction/Graphs/utilities/air_sensor.yml
Resources/Prototypes/Recipes/Construction/Graphs/utilities/disposal_machines.yml
Resources/Prototypes/Recipes/Construction/Graphs/utilities/particle_accelerator.yml
Resources/Prototypes/Recipes/Construction/Graphs/weapons/modular_grenade.yml
Resources/Textures/Structures/Power/Generation/PA/control_box.rsi/completed.png [moved from Resources/Textures/Structures/Power/Generation/PA/control_box.rsi/boxc.png with 100% similarity]
Resources/Textures/Structures/Power/Generation/PA/control_box.rsi/meta.json
Resources/Textures/Structures/Power/Generation/PA/control_box.rsi/unwired.png [moved from Resources/Textures/Structures/Power/Generation/PA/control_box.rsi/box.png with 100% similarity]
Resources/Textures/Structures/Power/Generation/PA/control_box.rsi/wired.png [moved from Resources/Textures/Structures/Power/Generation/PA/control_box.rsi/boxw.png with 100% similarity]
Resources/Textures/Structures/Power/Generation/PA/emitter_center.rsi/completed.png [moved from Resources/Textures/Structures/Power/Generation/PA/emitter_center.rsi/centerc.png with 100% similarity]
Resources/Textures/Structures/Power/Generation/PA/emitter_center.rsi/meta.json
Resources/Textures/Structures/Power/Generation/PA/emitter_center.rsi/unwired.png [moved from Resources/Textures/Structures/Power/Generation/PA/emitter_center.rsi/center.png with 100% similarity]
Resources/Textures/Structures/Power/Generation/PA/emitter_center.rsi/wired.png [moved from Resources/Textures/Structures/Power/Generation/PA/emitter_center.rsi/centerw.png with 100% similarity]
Resources/Textures/Structures/Power/Generation/PA/emitter_left.rsi/completed.png [moved from Resources/Textures/Structures/Power/Generation/PA/emitter_left.rsi/leftc.png with 100% similarity]
Resources/Textures/Structures/Power/Generation/PA/emitter_left.rsi/meta.json
Resources/Textures/Structures/Power/Generation/PA/emitter_left.rsi/unwired.png [moved from Resources/Textures/Structures/Power/Generation/PA/emitter_left.rsi/left.png with 100% similarity]
Resources/Textures/Structures/Power/Generation/PA/emitter_left.rsi/wired.png [moved from Resources/Textures/Structures/Power/Generation/PA/emitter_left.rsi/leftw.png with 100% similarity]
Resources/Textures/Structures/Power/Generation/PA/emitter_right.rsi/completed.png [moved from Resources/Textures/Structures/Power/Generation/PA/emitter_right.rsi/rightc.png with 100% similarity]
Resources/Textures/Structures/Power/Generation/PA/emitter_right.rsi/meta.json
Resources/Textures/Structures/Power/Generation/PA/emitter_right.rsi/unwired.png [moved from Resources/Textures/Structures/Power/Generation/PA/emitter_right.rsi/right.png with 100% similarity]
Resources/Textures/Structures/Power/Generation/PA/emitter_right.rsi/wired.png [moved from Resources/Textures/Structures/Power/Generation/PA/emitter_right.rsi/rightw.png with 100% similarity]
Resources/Textures/Structures/Power/Generation/PA/end_cap.rsi/completed.png [moved from Resources/Textures/Structures/Power/Generation/PA/end_cap.rsi/capc.png with 100% similarity]
Resources/Textures/Structures/Power/Generation/PA/end_cap.rsi/meta.json
Resources/Textures/Structures/Power/Generation/PA/end_cap.rsi/unwired.png [moved from Resources/Textures/Structures/Power/Generation/PA/end_cap.rsi/cap.png with 100% similarity]
Resources/Textures/Structures/Power/Generation/PA/end_cap.rsi/wired.png [moved from Resources/Textures/Structures/Power/Generation/PA/end_cap.rsi/capw.png with 100% similarity]
Resources/Textures/Structures/Power/Generation/PA/fuel_chamber.rsi/completed.png [moved from Resources/Textures/Structures/Power/Generation/PA/fuel_chamber.rsi/chamberc.png with 100% similarity]
Resources/Textures/Structures/Power/Generation/PA/fuel_chamber.rsi/meta.json
Resources/Textures/Structures/Power/Generation/PA/fuel_chamber.rsi/unwired.png [moved from Resources/Textures/Structures/Power/Generation/PA/fuel_chamber.rsi/chamber.png with 100% similarity]
Resources/Textures/Structures/Power/Generation/PA/fuel_chamber.rsi/wired.png [moved from Resources/Textures/Structures/Power/Generation/PA/fuel_chamber.rsi/chamberw.png with 100% similarity]
Resources/Textures/Structures/Power/Generation/PA/power_box.rsi/completed.png [moved from Resources/Textures/Structures/Power/Generation/PA/power_box.rsi/boxc.png with 100% similarity]
Resources/Textures/Structures/Power/Generation/PA/power_box.rsi/meta.json
Resources/Textures/Structures/Power/Generation/PA/power_box.rsi/unwired.png [moved from Resources/Textures/Structures/Power/Generation/PA/power_box.rsi/box.png with 100% similarity]
Resources/Textures/Structures/Power/Generation/PA/power_box.rsi/wired.png [moved from Resources/Textures/Structures/Power/Generation/PA/power_box.rsi/boxw.png with 100% similarity]

index 254dc87ffbd570cb72685c94c61bb43e7a3e793e..bcfcc64e21126e1909c9bd74e647e93584112623 100644 (file)
@@ -10,7 +10,10 @@ public sealed class ParticleAcceleratorPartVisualizerSystem : VisualizerSystem<P
     {
         if (args.Sprite == null)
             return;
-        
+
+        if (!args.Sprite.LayerMapTryGet(ParticleAcceleratorVisualLayers.Unlit, out var index))
+            return;
+
         if (!AppearanceSystem.TryGetData<ParticleAcceleratorVisualState>(uid, ParticleAcceleratorVisuals.VisualState, out var state, args.Component))
         {
             state = ParticleAcceleratorVisualState.Unpowered;
@@ -18,12 +21,12 @@ public sealed class ParticleAcceleratorPartVisualizerSystem : VisualizerSystem<P
 
         if (state != ParticleAcceleratorVisualState.Unpowered)
         {
-            args.Sprite.LayerSetVisible(ParticleAcceleratorVisualLayers.Unlit, true);
-            args.Sprite.LayerSetState(ParticleAcceleratorVisualLayers.Unlit, comp.StateBase + comp.StatesSuffixes[state]);
+            args.Sprite.LayerSetVisible(index, true);
+            args.Sprite.LayerSetState(index, comp.StateBase + comp.StatesSuffixes[state]);
         }
         else
         {
-            args.Sprite.LayerSetVisible(ParticleAcceleratorVisualLayers.Unlit, false);
+            args.Sprite.LayerSetVisible(index, false);
         }
     }
 }
index 3fba48a490a73252a2f9c02b96f695a449a47d92..0b916c76001671a009cc71e03f85c6beae271049 100644 (file)
@@ -259,17 +259,17 @@ namespace Content.Client.ParticleAccelerator.UI
                                                 Children =
                                                 {
                                                     new Control {MinSize = imgSize},
-                                                    (_endCapTexture = Segment("end_cap", "capc")),
+                                                    (_endCapTexture = Segment("end_cap")),
                                                     new Control {MinSize = imgSize},
-                                                    (_controlBoxTexture = Segment("control_box", "boxc")),
-                                                    (_fuelChamberTexture = Segment("fuel_chamber", "chamberc")),
+                                                    (_controlBoxTexture = Segment("control_box")),
+                                                    (_fuelChamberTexture = Segment("fuel_chamber")),
                                                     new Control {MinSize = imgSize},
                                                     new Control {MinSize = imgSize},
-                                                    (_powerBoxTexture = Segment("power_box", "boxc")),
+                                                    (_powerBoxTexture = Segment("power_box")),
                                                     new Control {MinSize = imgSize},
-                                                    (_emitterLeftTexture = Segment("emitter_left", "leftc")),
-                                                    (_emitterCenterTexture = Segment("emitter_center", "centerc")),
-                                                    (_emitterRightTexture = Segment("emitter_right", "rightc")),
+                                                    (_emitterLeftTexture = Segment("emitter_left")),
+                                                    (_emitterCenterTexture = Segment("emitter_center")),
+                                                    (_emitterRightTexture = Segment("emitter_right")),
                                                 }
                                             }
                                         }
@@ -326,9 +326,9 @@ namespace Content.Client.ParticleAccelerator.UI
                 }
             };
 
-            PASegmentControl Segment(string name, string state)
+            PASegmentControl Segment(string name)
             {
-                return new(this, resourceCache, name, state);
+                return new(this, resourceCache, name);
             }
 
             UpdateUI(false, false, false, false);
@@ -470,13 +470,13 @@ namespace Content.Client.ParticleAccelerator.UI
             private readonly TextureRect _unlit;
             private readonly RSI _rsi;
 
-            public PASegmentControl(ParticleAcceleratorControlMenu menu, IResourceCache cache, string name, string state)
+            public PASegmentControl(ParticleAcceleratorControlMenu menu, IResourceCache cache, string name)
             {
                 _menu = menu;
                 _baseState = name;
                 _rsi = cache.GetResource<RSIResource>($"/Textures/Structures/Power/Generation/PA/{name}.rsi").RSI;
 
-                AddChild(_base = new TextureRect {Texture = _rsi[$"{state}"].Frame0});
+                AddChild(_base = new TextureRect {Texture = _rsi[$"completed"].Frame0});
                 AddChild(_unlit = new TextureRect());
                 MinSize = _rsi.Size;
             }
diff --git a/Content.Server/Construction/Completions/AppearanceChange.cs b/Content.Server/Construction/Completions/AppearanceChange.cs
new file mode 100644 (file)
index 0000000..4b05281
--- /dev/null
@@ -0,0 +1,42 @@
+using Content.Server.Construction.Components;
+using Content.Shared.Construction;
+using JetBrains.Annotations;
+using Robust.Server.GameObjects;
+
+namespace Content.Server.Construction.Completions;
+
+[UsedImplicitly]
+[DataDefinition]
+public sealed class AppearanceChange : IGraphAction
+{
+    /// <summary>
+    /// The appearance key to use.
+    /// </summary>
+    [DataField("key")]
+    public Enum Key = ConstructionVisuals.Key;
+
+    /// <summary>
+    /// The enum data to set. If not specified, will set the data to the name of the current edges' target node
+    /// (or the current node). This is because appearance changes are usually associated with reaching a new node.
+    /// </summary>
+    [DataField("data")]
+    public Enum? Data;
+
+    public void PerformAction(EntityUid uid, EntityUid? userUid, IEntityManager entityManager)
+    {
+        if (!entityManager.TryGetComponent(uid, out AppearanceComponent? appearance))
+            return;
+
+        if (Data != null)
+        {
+            entityManager.System<AppearanceSystem>().SetData(uid, Key, Data, appearance);
+            return;
+        }
+
+        var (node, edge) = entityManager.System<ConstructionSystem>().GetCurrentNodeAndEdge(uid);
+        var nodeName = edge?.Target ?? node?.Name;
+
+        if (nodeName != null)
+            entityManager.System<AppearanceSystem>().SetData(uid, Key, nodeName, appearance);
+    }
+}
diff --git a/Content.Server/Construction/Completions/SpriteStateChange.cs b/Content.Server/Construction/Completions/SpriteStateChange.cs
deleted file mode 100644 (file)
index f15fd8b..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-using Content.Shared.Construction;
-using JetBrains.Annotations;
-using Robust.Server.GameObjects;
-
-namespace Content.Server.Construction.Completions
-{
-    [UsedImplicitly]
-    [DataDefinition]
-    public sealed class SpriteStateChange : IGraphAction
-    {
-        [DataField("layer")] public int Layer { get; private set; } = 0;
-        [DataField("state")] public string? State { get; private set; } = string.Empty;
-
-        public void PerformAction(EntityUid uid, EntityUid? userUid, IEntityManager entityManager)
-        {
-            if (string.IsNullOrEmpty(State) || !entityManager.TryGetComponent(uid, out SpriteComponent? sprite))
-                return;
-
-            // That layer doesn't exist, we do nothing.
-            if (sprite.LayerCount <= Layer)
-                return;
-
-            sprite.LayerSetState(Layer, State);
-        }
-    }
-}
index b2be31d8361b2fd6ebd54b5c7904127f20ed7a76..79a7c5e39c1ac6f877622a97ec0208234608191e 100644 (file)
@@ -90,6 +90,23 @@ namespace Content.Server.Construction
             return GetCurrentNode(uid, construction) is not {} node ? null : GetEdgeFromNode(node, edgeIndex);
         }
 
+        /// <summary>
+        ///     Variant of <see cref="GetCurrentEdge"/> that returns both the node and edge.
+        /// </summary>
+        public (ConstructionGraphNode?, ConstructionGraphEdge?) GetCurrentNodeAndEdge(EntityUid uid, ConstructionComponent? construction = null)
+        {
+            if (!Resolve(uid, ref construction, false))
+                return (null, null);
+
+            if (GetCurrentNode(uid, construction) is not { } node)
+                return (null, null);
+
+            if (construction.EdgeIndex is not {} edgeIndex)
+                return (node, null);
+
+            return (node, GetEdgeFromNode(node, edgeIndex));
+        }
+
         /// <summary>
         ///     Gets the construction graph step the entity is currently at, or null.
         /// </summary>
index c72031cffb52f3fc5b82c26a25769f006d60dbbb..eab54f8a229a17a7e52768830ea75dedf730c447 100644 (file)
@@ -1,4 +1,6 @@
 using System.Diagnostics.CodeAnalysis;
+using Robust.Shared.Prototypes;
+using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
 
 namespace Content.Shared.Construction
 {
@@ -21,7 +23,7 @@ namespace Content.Shared.Construction
         [ViewVariables]
         public IReadOnlyList<IGraphAction> Actions => _actions;
 
-        [DataField("entity")]
+        [DataField("entity", customTypeSerializer:typeof(PrototypeIdSerializer<EntityPrototype>))]
         public string? Entity { get; private set; }
 
         public ConstructionGraphEdge? GetEdge(string target)
diff --git a/Content.Shared/Construction/Enums.cs b/Content.Shared/Construction/Enums.cs
new file mode 100644 (file)
index 0000000..0eb949a
--- /dev/null
@@ -0,0 +1,11 @@
+using Robust.Shared.Serialization;
+
+namespace Content.Shared.Construction;
+
+[Serializable, NetSerializable]
+public enum ConstructionVisuals : byte
+{
+    Key,
+    Layer,
+    Wired,
+}
index eac6dfcc9b6f39da6d84bcde80137b85157bae30..bdbfd53333178c2b9606b0da52219fed9efd0c0c 100644 (file)
@@ -74,7 +74,7 @@
   id: EngineParticleAccelerator
   icon:
     sprite: Structures/Power/Generation/PA/control_box.rsi
-    state: boxc
+    state: completed
   product: CrateEngineeringParticleAccelerator
   cost: 2000
   category: Engineering
index 9a511b5db93d3bebdd8ba59c21b10a51c5215d6a..fe469e79c3dcec7ebc3029a8ae0927783d5eb113 100644 (file)
   components:
   - type: Sprite
     sprite: Objects/Weapons/Grenades/modular.rsi
-    state: empty
+    layers:
+    - state: empty
+      map: [ "enum.ConstructionVisuals.Layer" ]
   - type: Item
     size: 8
   - type: PayloadCase
       states:
         enum.Trigger.TriggerVisualState.Primed: primed
         enum.Trigger.TriggerVisualState.Unprimed: complete
+  - type: GenericVisualizer
+    visuals:
+      enum.ConstructionVisuals.Key:
+        enum.ConstructionVisuals.Layer:
+          emptyCase: { state: empty }
+          wiredCase: { state: wired }
+          caseWithTrigger: { state: no-payload }
+          grenade: { state: complete }
   - type: StaticPrice
     price: 25
 
index c6a5795070306a1350126be2ae2aec0ffd97909e..516fbb4adef5c27bb737bb103c9ece60b1bc8b6a 100644 (file)
@@ -6,7 +6,18 @@
   components:
   - type: Sprite
     sprite: Structures/Doors/Airlocks/Standard/firelock.rsi
-    state: frame1
+    layers:
+    - state: frame1
+      map: [ "enum.ConstructionVisuals.Layer" ]
+  - type: Appearance
+  - type: GenericVisualizer
+    visuals:
+      enum.ConstructionVisuals.Key:
+        enum.ConstructionVisuals.Layer:
+          frame1: { state: frame1 }
+          frame2: { state: frame2 }
+          frame3: { state: frame3 }
+          frame4: { state: frame4 }
   - type: Construction
     graph: Firelock
     node: frame1
index 6d90c0f2b8c68caec989a4a6f79d9bd130503d27..6e5233e6253b3cec104674f3bec1d084956890ce 100644 (file)
@@ -1,5 +1,5 @@
 - type: entity
-  parent: ComputerFrame
+  parent: BaseStructureComputer
   id: BaseComputer
   name: computer
   placement:
index b0b2c0ebae4933fdd4ae5d387a3f8659c4a4d4ce..729e06880b24055e74ccd06302ed41d12fe99d30 100644 (file)
@@ -1,8 +1,7 @@
 - type: entity
-  id: ComputerFrame
+  id: BaseStructureComputer
   parent: BaseStructure
-  name: computer frame
-  description: A computer under construction.
+  abstract: true
   components:
   - type: Physics
     bodyType: Static
@@ -23,9 +22,7 @@
     graph: Computer
     node: frameUnsecured
   - type: Sprite
-    sprite: Structures/Machines/parts.rsi
     drawdepth: Objects
-    state: 0
   - type: Damageable
     damageContainer: Inorganic
     damageModifierSet: Metallic
         acts: ["Destruction"]
 
 - type: entity
-  parent: ComputerFrame
+  id: ComputerFrame
+  parent: BaseStructureComputer
+  name: computer frame
+  description: A computer under construction.
+  components:
+  - type: Sprite
+    sprite: Structures/Machines/parts.rsi
+    layers:
+    - state: 0
+      map: [ "enum.ConstructionVisuals.Layer" ]
+  - type: Appearance
+  - type: GenericVisualizer
+    visuals:
+      enum.ConstructionVisuals.Key:
+        enum.ConstructionVisuals.Layer:
+          frameUnsecured: { state: 0 }
+          boardUnsecured: { state: 1 }
+          missingWires: { state: 2 }
+          monitorMissing: { state: 3 }
+          monitorUnsecured: { state: 4 }
+
+- type: entity
+  parent: BaseStructureComputer
   id: ComputerBroken
   name: broken computer
   description: This computer has seen better days.
index 3d3d6dd16d4376f30e39cc1be3c6f956c73f5d79..f5a94e5cb02b7ed57777974b1dc8a86391af18c9 100644 (file)
               acts: [ "Destruction" ]
     - type: Sprite
       sprite: Structures/Piping/high_pressure_machine_frame.rsi
-      state: frame
+      layers:
+      - state: frame
+        map: [ "enum.ConstructionVisuals.Layer" ]
+    - type: Appearance
+    - type: GenericVisualizer
+      visuals:
+        enum.ConstructionVisuals.Key:
+          enum.ConstructionVisuals.Layer:
+            frame_cable: { state: frame_cables }
+            frame_electronics: { state: frame_electronics }
+            frame_unit: { state: frame_unit }
+            frame_mailing: { state: frame_unit } # not a typo, there is no frame_mailing state.
+            frame_inlet: { state: frame_inlet }
+            frame_outlet: { state: frame_outlet }
index 034185b18d70ca20488e8d7cef53c04a023a9a30..aa668fdbbcf3e16cf23b7fada7348c41f24f7d3a 100644 (file)
       noRot: false
     - type: Pullable
     - type: Clickable
+    - type: GuideHelp
+      guides: [ Singularity, Power ]
+    - type: Appearance
+
+- type: entity
+  id: ParticleAcceleratorFinishedPart
+  parent: ParticleAcceleratorBase
+  abstract: true
+  components:
+  - type: Sprite
+    layers:
+    - state: completed
+      map: [ "enum.ParticleAcceleratorVisualLayers.Base" ]
+    - state: unlitp
+      map: [ "enum.ParticleAcceleratorVisualLayers.Unlit" ]
+      shader: unshaded
+      visible: false
+  - type: ParticleAcceleratorPart
+  - type: ParticleAcceleratorPartVisuals
+    stateBase: unlit
+  - type: Construction
+    node: completed
+
+- type: entity
+  id: ParticleAcceleratorUnfinishedBase
+  parent: ParticleAcceleratorBase
+  abstract: true
+  components:
+  - type: Sprite
+    layers:
+    - state: unwired
+      map: [ "enum.ConstructionVisuals.Layer" ]
+  - type: GenericVisualizer
+    visuals:
+      enum.ConstructionVisuals.Key:
+        enum.ConstructionVisuals.Layer:
+          start: { state: unwired}
+          wired: { state: wired}
+  - type: Construction
+    node: start
+    defaultTarget: completed
index de0f223933260aecc70639271e01c5383c86df26..3aa3393390fb6f9ca466bf044f5f9e1cd0de7fb0 100644 (file)
@@ -7,7 +7,7 @@
     - type: Sprite
       sprite: Structures/Power/Generation/PA/control_box.rsi
       layers:
-        - state: boxc
+        - state: completed
           map: [ "enum.ParticleAcceleratorVisualLayers.Base" ]
         - state: unlitp
           map: [ "enum.ParticleAcceleratorVisualLayers.Unlit" ]
     - type: Wires
       BoardName: "Mk2 Particle Accelerator"
       LayoutId: ParticleAccelerator
-    - type: GuideHelp
-      guides: [ Singularity, Power ]
-      
       
 # Unfinished
 
 - type: entity
-  parent: ParticleAcceleratorBase
+  parent: ParticleAcceleratorUnfinishedBase
   id: ParticleAcceleratorControlBoxUnfinished
   name: PA control computer
   suffix: Unfinished
       bodyType: Dynamic
     - type: Sprite
       sprite: Structures/Power/Generation/PA/control_box.rsi
-      state: box
     - type: Construction
       graph: ParticleAcceleratorControlBox
-      node: start
-      defaultTarget: completed
-    - type: GuideHelp
-      guides: [ Singularity, Power ]
index df862ec2659e703ff74bd5f3a8c29f32899b73cc..331341adfec5089236ef3eed0d5527a60f77e17e 100644 (file)
@@ -1,88 +1,46 @@
 - type: entity
-  parent: ParticleAcceleratorBase
+  parent: ParticleAcceleratorFinishedPart
   id: ParticleAcceleratorEmitterLeft
   name: PA containment emitter L
   description: This launchs the Alpha particles, might not want to stand near this end.
   components:
     - type: Sprite
       sprite: Structures/Power/Generation/PA/emitter_left.rsi
-      layers:
-        - state: leftc
-          map: [ "enum.ParticleAcceleratorVisualLayers.Base" ]
-        - state: unlitp
-          map: [ "enum.ParticleAcceleratorVisualLayers.Unlit" ]
-          shader: unshaded
-          visible: false
-    - type: Appearance
-    - type: ParticleAcceleratorPartVisuals
-      stateBase: unlit
-    - type: ParticleAcceleratorPart
     - type: ParticleAcceleratorEmitter
       emitterType: Left
     - type: Construction
       graph: ParticleAcceleratorEmitterLeft
-      node: completed
-    - type: GuideHelp
-      guides: [ Singularity, Power ]
-
 
 - type: entity
-  parent: ParticleAcceleratorBase
+  parent: ParticleAcceleratorFinishedPart
   id: ParticleAcceleratorEmitterCenter
   name: PA containment emitter C
   description: This launchs the Alpha particles, might not want to stand near this end.
   components:
     - type: Sprite
       sprite: Structures/Power/Generation/PA/emitter_center.rsi
-      layers:
-        - state: centerc
-          map: [ "enum.ParticleAcceleratorVisualLayers.Base" ]
-        - state: unlitp
-          map: [ "enum.ParticleAcceleratorVisualLayers.Unlit" ]
-          shader: unshaded
-          visible: false
-    - type: Appearance
-    - type: ParticleAcceleratorPartVisuals
-      stateBase: unlit
-    - type: ParticleAcceleratorPart
     - type: ParticleAcceleratorEmitter
       emitterType: Center
+    - type: Construction
       graph: ParticleAcceleratorEmitterCenter
-      node: completed
-    - type: GuideHelp
-      guides: [ Singularity, Power ]
 
 - type: entity
-  parent: ParticleAcceleratorBase
+  parent: ParticleAcceleratorFinishedPart
   id: ParticleAcceleratorEmitterRight
   name: PA containment emitter R
   description: This launchs the Alpha particles, might not want to stand near this end.
   components:
     - type: Sprite
       sprite: Structures/Power/Generation/PA/emitter_right.rsi
-      layers:
-        - state: rightc
-          map: [ "enum.ParticleAcceleratorVisualLayers.Base" ]
-        - state: unlitp
-          map: [ "enum.ParticleAcceleratorVisualLayers.Unlit" ]
-          shader: unshaded
-          visible: false
-    - type: Appearance
-    - type: ParticleAcceleratorPartVisuals
-      stateBase: unlit
-    - type: ParticleAcceleratorPart
     - type: ParticleAcceleratorEmitter
       emitterType: Right
     - type: Construction
       graph: ParticleAcceleratorEmitterRight
-      node: completed
-    - type: GuideHelp
-      guides: [ Singularity, Power ]
 
 # Unfinished
 
 - type: entity
-  parent: ParticleAcceleratorBase
+  parent: ParticleAcceleratorUnfinishedBase
   id: ParticleAcceleratorEmitterLeftUnfinished
   name: PA containment emitter L
   suffix: Unfinished, Left
       bodyType: Dynamic
     - type: Sprite
       sprite: Structures/Power/Generation/PA/emitter_left.rsi
-      state: left
     - type: Construction
       graph: ParticleAcceleratorEmitterLeft
-      node: start
-      defaultTarget: completed
-    - type: GuideHelp
-      guides: [ Singularity, Power ]
 
 - type: entity
-  parent: ParticleAcceleratorBase
+  parent: ParticleAcceleratorUnfinishedBase
   id: ParticleAcceleratorEmitterCenterUnfinished
   name: PA containment emitter C
   suffix: Unfinished
       bodyType: Dynamic
     - type: Sprite
       sprite: Structures/Power/Generation/PA/emitter_center.rsi
-      state: center
     - type: Construction
       graph: ParticleAcceleratorEmitterCenter
-      node: start
-      defaultTarget: completed
-    - type: GuideHelp
-      guides: [ Singularity, Power ]
 
 - type: entity
-  parent: ParticleAcceleratorBase
+  parent: ParticleAcceleratorUnfinishedBase
   id: ParticleAcceleratorEmitterRightUnfinished
   name: PA containment emitter R
   suffix: Unfinished
       bodyType: Dynamic
     - type: Sprite
       sprite: Structures/Power/Generation/PA/emitter_right.rsi
-      state: right
     - type: Construction
       graph: ParticleAcceleratorEmitterRight
-      node: start
-      defaultTarget: completed
-    - type: GuideHelp
-      guides: [ Singularity, Power ]
index 3622206d7d60341445fdaff4d01bf8243e3faf63..676b95b2ccff273d1c2bc704e7a3834314d28a00 100644 (file)
@@ -1,24 +1,22 @@
 - type: entity
-  parent: ParticleAcceleratorBase
+  parent: ParticleAcceleratorFinishedPart
   id: ParticleAcceleratorEndCap
   name: PA end-cap
   description: Formally known as the Alpha Particle Generation Array. This is where Alpha particles are generated from [REDACTED].
   components:
     - type: Sprite
       sprite: Structures/Power/Generation/PA/end_cap.rsi
-      state: capc
-    - type: ParticleAcceleratorPart
+      layers:
+      - state: completed
+        map: [ "enum.ParticleAcceleratorVisualLayers.Base" ]
     - type: ParticleAcceleratorEndCap
     - type: Construction
       graph: ParticleAcceleratorEndCap
-      node: completed
-    - type: GuideHelp
-      guides: [ Singularity, Power ]
 
 # Unfinished
 
 - type: entity
-  parent: ParticleAcceleratorBase
+  parent: ParticleAcceleratorUnfinishedBase
   id: ParticleAcceleratorEndCapUnfinished
   name: PA end-cap
   suffix: Unfinished
       bodyType: Dynamic
     - type: Sprite
       sprite: Structures/Power/Generation/PA/end_cap.rsi
-      state: cap
     - type: Construction
       graph: ParticleAcceleratorEndCap
-      node: start
-      defaultTarget: completed
-    - type: GuideHelp
-      guides: [ Singularity, Power ]
index acd3551a7dbccbab0ac35c41ce439a3f3c485a17..63661830c4d33133bcd9aa63469a4f1a21da89a3 100644 (file)
@@ -1,33 +1,19 @@
 - type: entity
-  parent: ParticleAcceleratorBase
+  parent: ParticleAcceleratorFinishedPart
   id: ParticleAcceleratorFuelChamber
   name: PA fuel chamber
   description: Formally known as the EM Acceleration Chamber. This is where the Alpha particles are accelerated to radical speeds.
   components:
     - type: Sprite
       sprite: Structures/Power/Generation/PA/fuel_chamber.rsi
-      layers:
-        - state: chamberc
-          map: [ "enum.ParticleAcceleratorVisualLayers.Base" ]
-        - state: unlitp
-          map: [ "enum.ParticleAcceleratorVisualLayers.Unlit" ]
-          shader: unshaded
-          visible: false
-    - type: Appearance
-    - type: ParticleAcceleratorPartVisuals
-      stateBase: unlit
-    - type: ParticleAcceleratorPart
     - type: ParticleAcceleratorFuelChamber
     - type: Construction
       graph: ParticleAcceleratorFuelChamber
-      node: completed
-    - type: GuideHelp
-      guides: [ Singularity, Power ]
 
 # Unfinished
 
 - type: entity
-  parent: ParticleAcceleratorBase
+  parent: ParticleAcceleratorUnfinishedBase
   id: ParticleAcceleratorFuelChamberUnfinished
   name: PA fuel chamber
   suffix: Unfinished
       bodyType: Dynamic
     - type: Sprite
       sprite: Structures/Power/Generation/PA/fuel_chamber.rsi
-      state: chamber
     - type: Construction
       graph: ParticleAcceleratorFuelChamber
-      node: start
-      defaultTarget: completed
-    - type: GuideHelp
-      guides: [ Singularity, Power ]
index 669fbdf66492708fce96a5ac158940453b861acd..cf98367287c0ba5d64ac86cc8022d9bfc64cb3fd 100644 (file)
@@ -1,22 +1,11 @@
 - type: entity
-  parent: ParticleAcceleratorBase
+  parent: ParticleAcceleratorFinishedPart
   id: ParticleAcceleratorPowerBox
   name: PA power box
   description: Formally known as the Particle Focusing EM Lens. This uses electromagnetic waves to focus the Alpha-Particles.
   components:
     - type: Sprite
       sprite: Structures/Power/Generation/PA/power_box.rsi
-      layers:
-        - state: boxc
-          map: [ "enum.ParticleAcceleratorVisualLayers.Base" ]
-        - state: unlitp
-          map: [ "enum.ParticleAcceleratorVisualLayers.Unlit" ]
-          shader: unshaded
-          visible: false
-    - type: Appearance
-    - type: ParticleAcceleratorPartVisuals
-      stateBase: unlit
-    - type: ParticleAcceleratorPart
     - type: ParticleAcceleratorPowerBox
     - type: PowerConsumer
       voltage: High
           nodeGroupID: HVPower
     - type: Construction
       graph: ParticleAcceleratorPowerBox
-      node: completed
-    - type: GuideHelp
-      guides: [ Singularity, Power ]
 
 - type: entity
-  parent: ParticleAcceleratorBase
+  parent: ParticleAcceleratorUnfinishedBase
   id: ParticleAcceleratorPowerBoxUnfinished
   name: PA power box
   suffix: Unfinished
       bodyType: Dynamic
     - type: Sprite
       sprite: Structures/Power/Generation/PA/power_box.rsi
-      state: box
     - type: Construction
       graph: ParticleAcceleratorPowerBox
-      node: start
-      defaultTarget: completed
-    - type: GuideHelp
-      guides: [ Singularity, Power ]
+
index ffa091e288e0763cfe93e5a9e0a1bd2396950f30..6c9bf80eff917b6a7d96704596ef004220de0491 100644 (file)
   - type: InteractionOutline
   - type: Sprite
     sprite: Structures/Wallmounts/air_monitors.rsi
-    state: alarm_b1
+    layers:
+    - state: alarm_b1
+      map: [ "enum.ConstructionVisuals.Layer" ]
+  - type: Appearance
+  - type: GenericVisualizer
+    visuals:
+      enum.ConstructionVisuals.Key:
+        enum.ConstructionVisuals.Layer:
+          assembly: { state: alarm_b1 }
+          electronics: { state: alarm_b1 }
   - type: Construction
     graph: AirAlarm
     node: assembly
index 68980374482e1764faa61b75670a72042ce6d2a2..03c4d7264cd7de84890d0f11fd17cfa60b89c1c8 100644 (file)
   - type: InteractionOutline
   - type: Sprite
     sprite: Structures/Wallmounts/air_monitors.rsi
-    state: fire_b1
+    layers:
+    - state: fire_b1
+      map: [ "enum.ConstructionVisuals.Layer" ]
+  - type: Appearance
+  - type: GenericVisualizer
+    visuals:
+      enum.ConstructionVisuals.Key:
+        enum.ConstructionVisuals.Layer:
+          assembly: { state: fire_b1 }
+          electronics: { state: fire_b2 }
   - type: Construction
     graph: FireAlarm
     node: assembly
index 611da0a753a9c73213f24e9f6b6d6ffa23cb920d..9a05f3daf0bef323a33e2831c402e6ee7d2016bb 100644 (file)
@@ -14,8 +14,7 @@
 
     - node: frameUnsecured
       actions:
-        - !type:SpriteStateChange
-          state: "0"
+      - !type:AppearanceChange
       entity: ComputerFrame
       edges:
         - to: boardUnsecured
@@ -44,8 +43,7 @@
 
     - node: boardUnsecured
       actions:
-        - !type:SpriteStateChange
-          state: "1"
+      - !type:AppearanceChange
       edges:
         - to: missingWires
           conditions:
             - !type:EntityAnchored { }
           completed:
             - !type:EmptyAllContainers {}
-            - !type:SpriteStateChange
-              state: 0
           steps:
             - tool: Prying
 
     - node: missingWires
       actions:
-        - !type:SpriteStateChange
-          state: "2"
+      - !type:AppearanceChange
       edges:
         - to: monitorMissing
           conditions:
@@ -85,8 +80,7 @@
       entity: ComputerFrame
       actions:
         - !type:SetAnchor { }
-        - !type:SpriteStateChange
-          state: "3"
+        - !type:AppearanceChange
       edges:
         - to: monitorUnsecured
           conditions:
 
     - node: monitorUnsecured
       actions:
-        - !type:SpriteStateChange
-          state: "4"
+      - !type:AppearanceChange
       entity: ComputerFrame
       edges:
         - to: computer
index 949006ba635c46d420bd212045cc951dbc95f413..853c86f48ee08293318fc6d20bb935fe3b41f1e0 100644 (file)
@@ -16,8 +16,6 @@
   - node: assembly
     entity: AirlockAssembly
     actions:
-    - !type:SpriteStateChange
-      state: assembly
     - !type:SnapToGrid {}
     - !type:SetAnchor {}
     edges:
index 40f09e947af06e9168ddc7bf20433dc5a831c47e..9d5b2945a65f7ab4713985e9ba26ebdec04d894d 100644 (file)
@@ -16,8 +16,7 @@
     - node: frame1
       entity: FirelockFrame
       actions:
-        - !type:SpriteStateChange
-          state: frame1
+      - !type:AppearanceChange
       edges:
         - to: frame2
           conditions:
@@ -42,8 +41,7 @@
 
     - node: frame2
       actions:
-        - !type:SpriteStateChange
-          state: frame2
+      - !type:AppearanceChange
       edges:
         - to: frame3
           conditions:
@@ -71,8 +69,7 @@
 
     - node: frame3
       actions:
-        - !type:SpriteStateChange
-          state: frame3
+      - !type:AppearanceChange
       edges:
         - to: frame4
           conditions:
@@ -94,8 +91,7 @@
     - node: frame4
       entity: FirelockFrame
       actions:
-        - !type:SpriteStateChange
-          state: frame4
+      - !type:AppearanceChange
       edges:
         - to: Firelock
           conditions:
index 99e102d6d2489c23113d08afc8aed0e20c9a4e7d..2af75f6afc5306ff09dd83b9e971639f791fabae 100644 (file)
@@ -16,8 +16,6 @@
   - node: assembly
     entity: AirlockShuttleAssembly
     actions:
-#    - !type:SpriteStateChange
-#      state: assembly # TODO Need assembly sprite
     - !type:SnapToGrid {}
     - !type:SetAnchor {}
     edges:
index afa20ea2ef04ea52bf4839dc2d4534f1752354ca..ca5cb5f10817ba5298249e7a2d130c1508cf96b2 100644 (file)
@@ -13,8 +13,7 @@
   - node: assembly
     entity: AirAlarmAssembly
     actions:
-    - !type:SpriteStateChange
-      state: alarm_b1
+    - !type:AppearanceChange
     edges:
     - to: wired
       steps:
@@ -54,8 +53,7 @@
 
   - node: electronics
     actions:
-    - !type:SpriteStateChange
-      state: alarm_b2
+    - !type:AppearanceChange
     edges:
     - to: air_alarm
       steps:
@@ -92,8 +90,7 @@
   - node: assembly
     entity: FireAlarmAssembly
     actions:
-    - !type:SpriteStateChange
-      state: fire_b1
+    - !type:AppearanceChange
     edges:
     - to: wired
       steps:
 
   - node: electronics
     actions:
-    - !type:SpriteStateChange
-      state: fire_b2
+    - !type:AppearanceChange
     edges:
     - to: fire_alarm
       steps:
index 3e10d1ca5e3fda8c8f94825237aab32b267f2d1d..c100cbefb476014ed83b76c9f18b979d28d037bd 100644 (file)
@@ -11,9 +11,6 @@
              doAfter: 1
     - node: assembly
       entity: AirSensorAssembly
-      actions:
-        - !type:SpriteStateChange
-          state: gsensor0
       edges:
         - to: start
           conditions:
index c722021e7b66fe65a3e355b30e9681d0c34fdd02..2f151336959dff2471a630e6f0566a927154ee6d 100644 (file)
@@ -29,8 +29,7 @@
     - node: frame_cable
       entity: DisposalMachineFrame
       actions:
-        - !type:SpriteStateChange
-          state: "frame_cables"
+      - !type:AppearanceChange
       edges:
         - to: frame
           completed:
@@ -48,8 +47,7 @@
     - node: frame_electronics
       entity: DisposalMachineFrame
       actions:
-        - !type:SpriteStateChange
-          state: "frame_electronics"
+      - !type:AppearanceChange
       edges:
         - to: frame_cable
           completed:
@@ -75,8 +73,7 @@
     - node: frame_unit
       entity: DisposalMachineFrame
       actions:
-        - !type:SpriteStateChange
-          state: "frame_unit"
+      - !type:AppearanceChange
       edges:
         - to: frame_inlet
           steps:
     - node: frame_mailing
       entity: DisposalMachineFrame
       actions:
-        - !type:SpriteStateChange
-          state: "frame_unit"
+      - !type:AppearanceChange
       edges:
         - to: frame_electronics
           steps:
     - node: frame_inlet
       entity: DisposalMachineFrame
       actions:
-        - !type:SpriteStateChange
-          state: "frame_inlet"
+      - !type:AppearanceChange
       edges:
         - to: frame_outlet
           steps:
     - node: frame_outlet
       entity: DisposalMachineFrame
       actions:
-        - !type:SpriteStateChange
-          state: "frame_outlet"
+      - !type:AppearanceChange
       edges:
         - to: frame_electronics
           steps:
index 053e7b9d3f866e83be26f1fe1fd44aa6b75ac342..1c8c2e75fcf1963da781fa2e8f504f4b0acf5605 100644 (file)
@@ -5,8 +5,7 @@
     - node: start
       entity: ParticleAcceleratorControlBoxUnfinished
       actions:
-        - !type:SpriteStateChange
-          state: "box"
+      - !type:AppearanceChange
       edges:
         - to: wired
           conditions:
@@ -18,8 +17,7 @@
     - node: wired
       entity: ParticleAcceleratorControlBoxUnfinished
       actions:
-        - !type:SpriteStateChange
-          state: "boxw"
+      - !type:AppearanceChange
       edges:
         - to: completed
           conditions:
@@ -57,8 +55,7 @@
     - node: start
       entity: ParticleAcceleratorPowerBoxUnfinished
       actions:
-        - !type:SpriteStateChange
-          state: "box"
+      - !type:AppearanceChange
       edges:
         - to: wired
           conditions:
@@ -70,8 +67,7 @@
     - node: wired
       entity: ParticleAcceleratorPowerBoxUnfinished
       actions:
-        - !type:SpriteStateChange
-          state: "boxw"
+      - !type:AppearanceChange
       edges:
         - to: completed
           conditions:
     - node: start
       entity: ParticleAcceleratorFuelChamberUnfinished
       actions:
-        - !type:SpriteStateChange
-          state: "chamber"
+      - !type:AppearanceChange
       edges:
         - to: wired
           conditions:
     - node: wired
       entity: ParticleAcceleratorFuelChamberUnfinished
       actions:
-        - !type:SpriteStateChange
-          state: "chamberw"
+      - !type:AppearanceChange
       edges:
         - to: completed
           conditions:
     - node: start
       entity: ParticleAcceleratorEndCapUnfinished
       actions:
-        - !type:SpriteStateChange
-          state: "cap"
+      - !type:AppearanceChange
       edges:
         - to: wired
           conditions:
     - node: wired
       entity: ParticleAcceleratorEndCapUnfinished
       actions:
-        - !type:SpriteStateChange
-          state: "capw"
+      - !type:AppearanceChange
       edges:
         - to: completed
           conditions:
     - node: start
       entity: ParticleAcceleratorEmitterLeftUnfinished
       actions:
-        - !type:SpriteStateChange
-          state: "left"
+      - !type:AppearanceChange
       edges:
         - to: wired
           conditions:
     - node: wired
       entity: ParticleAcceleratorEmitterLeftUnfinished
       actions:
-        - !type:SpriteStateChange
-          state: "leftw"
+      - !type:AppearanceChange
       edges:
         - to: completed
           conditions:
     - node: start
       entity: ParticleAcceleratorEmitterCenterUnfinished
       actions:
-        - !type:SpriteStateChange
-          state: "center"
+      - !type:AppearanceChange
       edges:
         - to: wired
           conditions:
     - node: wired
       entity: ParticleAcceleratorEmitterCenterUnfinished
       actions:
-        - !type:SpriteStateChange
-          state: "centerw"
+      - !type:AppearanceChange
       edges:
         - to: completed
           conditions:
     - node: start
       entity: ParticleAcceleratorEmitterRightUnfinished
       actions:
-        - !type:SpriteStateChange
-          state: "right"
+      - !type:AppearanceChange
       edges:
         - to: wired
           conditions:
     - node: wired
       entity: ParticleAcceleratorEmitterRightUnfinished
       actions:
-        - !type:SpriteStateChange
-          state: "rightw"
+      - !type:AppearanceChange
       edges:
         - to: completed
           conditions:
index 7f93512811d3e1ac7b4417da94dae09c902ab909..020be4e09c3de2f2f34ab264779d4d0f0dc36f24 100644 (file)
@@ -14,8 +14,7 @@
   - node: emptyCase
     entity: ModularGrenade      
     actions:
-    - !type:SpriteStateChange
-      state: empty
+    - !type:AppearanceChange
     edges:
     - to: wiredCase
       steps:
@@ -34,8 +33,7 @@
   - node: wiredCase
     entity: ModularGrenade      
     actions:
-    - !type:SpriteStateChange
-      state: wired
+    - !type:AppearanceChange
     - !type:PlaySound
       sound: /Audio/Machines/button.ogg
     edges:
@@ -55,8 +53,7 @@
 
   - node: caseWithTrigger
     actions:
-    - !type:SpriteStateChange
-      state: no-payload
+    - !type:AppearanceChange
     - !type:PlaySound
       sound: /Audio/Machines/button.ogg
     edges:
@@ -76,8 +73,7 @@
 
   - node: grenade
     actions:
-    - !type:SpriteStateChange
-      state: complete
+    - !type:AppearanceChange
     - !type:PlaySound
       sound: /Audio/Machines/button.ogg
     - !type:AdminLog
index e5444a86fbe17a0a6fa6c0195c82088f085f8de9..407803837f7106ab6f8ea7184f7e845d5c32a01b 100644 (file)
@@ -8,10 +8,10 @@
   },
   "states": [
     {
-      "name": "box"
+      "name": "unwired"
     },
     {
-      "name": "boxc",
+      "name": "completed",
       "directions": 4
     },
     {
@@ -41,7 +41,7 @@
       ]
     },
     {
-      "name": "boxw",
+      "name": "wired",
       "directions": 4
     }
   ]
index ded24ca946504d5dacb4e88053f5a0974d34f493..b7bbfd98d8ff7003d465ee4625e5e89ae6afdcdd 100644 (file)
@@ -8,11 +8,11 @@
   },
   "states": [
     {
-      "name": "center",
+      "name": "unwired",
       "directions": 4
     },
     {
-      "name": "centerc",
+      "name": "completed",
       "directions": 4
     },
     {
@@ -36,7 +36,7 @@
       "directions": 4
     },
     {
-      "name": "centerw",
+      "name": "wired",
       "directions": 4
     }
   ]
index 3f83f9ca74c51320f09e00a820e91373fd97ea30..b7bbfd98d8ff7003d465ee4625e5e89ae6afdcdd 100644 (file)
@@ -8,11 +8,11 @@
   },
   "states": [
     {
-      "name": "left",
+      "name": "unwired",
       "directions": 4
     },
     {
-      "name": "leftc",
+      "name": "completed",
       "directions": 4
     },
     {
@@ -36,7 +36,7 @@
       "directions": 4
     },
     {
-      "name": "leftw",
+      "name": "wired",
       "directions": 4
     }
   ]
index 507321730901c4acbf2c5ed2422a5493536f1961..b7bbfd98d8ff7003d465ee4625e5e89ae6afdcdd 100644 (file)
@@ -8,11 +8,11 @@
   },
   "states": [
     {
-      "name": "right",
+      "name": "unwired",
       "directions": 4
     },
     {
-      "name": "rightc",
+      "name": "completed",
       "directions": 4
     },
     {
@@ -36,7 +36,7 @@
       "directions": 4
     },
     {
-      "name": "rightw",
+      "name": "wired",
       "directions": 4
     }
   ]
index 985c82d7cf1807b2655c7a29a89210f0f343c872..5a1eccdf3d8dd4aa08c2f6fd0fa779da55878607 100644 (file)
@@ -8,15 +8,15 @@
   },
   "states": [
     {
-      "name": "cap",
+      "name": "unwired",
       "directions": 4
     },
     {
-      "name": "capc",
+      "name": "completed",
       "directions": 4
     },
     {
-      "name": "capw",
+      "name": "wired",
       "directions": 4
     }
   ]
index 7094efe3c2515a7d9340b7221568dac46f810f9a..b7bbfd98d8ff7003d465ee4625e5e89ae6afdcdd 100644 (file)
@@ -8,11 +8,11 @@
   },
   "states": [
     {
-      "name": "chamber",
+      "name": "unwired",
       "directions": 4
     },
     {
-      "name": "chamberc",
+      "name": "completed",
       "directions": 4
     },
     {
@@ -36,7 +36,7 @@
       "directions": 4
     },
     {
-      "name": "chamberw",
+      "name": "wired",
       "directions": 4
     }
   ]
index 71b1a9415e58c626550fae634e4df6ca46ca2419..b7bbfd98d8ff7003d465ee4625e5e89ae6afdcdd 100644 (file)
@@ -8,11 +8,11 @@
   },
   "states": [
     {
-      "name": "box",
+      "name": "unwired",
       "directions": 4
     },
     {
-      "name": "boxc",
+      "name": "completed",
       "directions": 4
     },
     {
@@ -36,7 +36,7 @@
       "directions": 4
     },
     {
-      "name": "boxw",
+      "name": "wired",
       "directions": 4
     }
   ]