]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Resolves GenericEnumVisualizer is Obsolete (#13914)
authorTemporalOroboros <TemporalOroboros@gmail.com>
Mon, 15 May 2023 18:55:36 +0000 (11:55 -0700)
committerGitHub <noreply@github.com>
Mon, 15 May 2023 18:55:36 +0000 (14:55 -0400)
Content.Client/Visualizer/GenericEnumVisualizer.cs [deleted file]
Resources/Prototypes/Entities/Mobs/Player/silicon.yml
Resources/Prototypes/Entities/Objects/Devices/mousetrap.yml
Resources/Prototypes/Entities/Objects/Devices/payload.yml
Resources/Prototypes/Entities/Objects/Fun/pai.yml
Resources/Prototypes/Entities/Objects/Tools/t-ray.yml
Resources/Prototypes/Entities/Objects/Weapons/Bombs/funny.yml
Resources/Prototypes/Entities/Objects/Weapons/Bombs/plastic.yml
Resources/Prototypes/Entities/Objects/Weapons/Throwable/grenades.yml
Resources/Prototypes/Entities/Structures/Machines/cloning_machine.yml
Resources/Prototypes/Entities/Structures/meat_spike.yml

diff --git a/Content.Client/Visualizer/GenericEnumVisualizer.cs b/Content.Client/Visualizer/GenericEnumVisualizer.cs
deleted file mode 100644 (file)
index df2bcf8..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using JetBrains.Annotations;
-using Robust.Client.GameObjects;
-using Robust.Shared.GameObjects;
-using Robust.Shared.IoC;
-using Robust.Shared.Log;
-using Robust.Shared.Reflection;
-using Robust.Shared.Serialization;
-using Robust.Shared.Serialization.Manager.Attributes;
-
-namespace Content.Client.Visualizer
-{
-    [UsedImplicitly]
-    public sealed class GenericEnumVisualizer : AppearanceVisualizer, ISerializationHooks
-    {
-        public Enum Key { get; set; } = default!;
-
-        public Dictionary<object, string> States { get; set; } = default!;
-
-        [DataField("layer")]
-        public int Layer { get; set; } = 0;
-
-        [DataField("key", readOnly: true, required: true)]
-        private string _keyRaw = default!;
-
-        [DataField("states", readOnly: true, required: true)]
-        private Dictionary<string, string> _statesRaw { get; set; } = default!;
-
-        void ISerializationHooks.AfterDeserialization()
-        {
-            var reflectionManager = IoCManager.Resolve<IReflectionManager>();
-
-            object ResolveRef(string raw)
-            {
-                if (reflectionManager.TryParseEnumReference(raw, out var @enum))
-                {
-                    return @enum;
-                }
-                else
-                {
-                    Logger.WarningS("c.c.v.genum", $"Unable to convert enum reference: {raw}");
-                }
-
-                return raw;
-            }
-
-            // It's important that this conversion be done here so that it may "fail-fast".
-            Key = (Enum) ResolveRef(_keyRaw);
-            States = _statesRaw.ToDictionary(kvp => ResolveRef(kvp.Key), kvp => kvp.Value);
-        }
-
-        [Obsolete("Subscribe to AppearanceChangeEvent instead.")]
-        public override void OnChangeData(AppearanceComponent component)
-        {
-            base.OnChangeData(component);
-
-            var entities = IoCManager.Resolve<IEntityManager>();
-            if (!entities.TryGetComponent(component.Owner, out SpriteComponent? sprite)) return;
-            if (!component.TryGetData(Key, out object status)) return;
-            if (!States.TryGetValue(status, out var val)) return;
-            sprite.LayerSetState(Layer, val);
-        }
-    }
-}
index 4b28e6e82175c8252d6178560866acd918acd405..71b3677350b72bb0451f03670d0a11202ea12984 100644 (file)
     layers:
     - state: shell
       sprite: Mobs/Silicon/drone.rsi
+      map: ["base"]
   - type: MovementIgnoreGravity
   - type: Fixtures
     fixtures:
         layer:
         - SmallMobLayer
   - type: Appearance
+  - type: GenericVisualizer
     visuals:
-      - type: GenericEnumVisualizer
-        key: enum.DroneVisuals.Status
-        layer: 0
-        states:
-          enum.DroneStatus.Off: shell
-          enum.DroneStatus.On: drone
+      enum.DroneVisuals.Status:
+        base:
+          Off: { state: shell }
+          On: { state: drone }
   - type: ReplacementAccent
     accent: silicon
   - type: Repairable
index 74f8462802002496bcf48f5d74b288679886b6b0..b09460ce974683880043c992d74952d8d67a4433 100644 (file)
@@ -10,6 +10,7 @@
       drawdepth: SmallMobs # if mice can hide under tables, so can mousetraps
       layers:
         - state: mousetrap
+          map: ["base"]
     - type: StepTrigger
       intersectRatio: 0.2
       requiredTriggeredSpeed: 0
     - type: Item
       sprite: Objects/Devices/mousetrap.rsi
     - type: Appearance
+    - type: GenericVisualizer
       visuals:
-        - type: GenericEnumVisualizer
-          key: enum.MousetrapVisuals.Visual
-          layer: 0
-          states:
-            enum.MousetrapVisuals.Armed: mousetraparmed
-            enum.MousetrapVisuals.Unarmed: mousetrap
+        enum.MousetrapVisuals.Visual:
+          base:
+            Armed: { state: mousetraparmed }
+            Unarmed: { state: mousetrap }
     - type: Physics
       bodyType: Dynamic
     - type: CollisionWake
index beab635e9e7000a6f7fb1153b8bf8273a3a86e72..4752ac1ba2538fcf37f0e4f615f2a8a9235304c1 100644 (file)
@@ -60,6 +60,9 @@
   - type: Sprite
     sprite: Objects/Devices/payload.rsi
     state: payload-empty
+    layers:
+    - state: payload-empty
+      map: ["base"]
   - type: ChemicalPayload
     beakerSlotA: &slotDef
       whitelist:
       swap: false
     beakerSlotB: *slotDef
   - type: Appearance
+  - type: GenericVisualizer
     visuals:
-    - type: GenericEnumVisualizer
-      key: enum.ChemicalPayloadVisuals.Slots
-      states:
-        enum.ChemicalPayloadFilledSlots.None: payload-empty
-        enum.ChemicalPayloadFilledSlots.Left: payload-chemical-left
-        enum.ChemicalPayloadFilledSlots.Right: payload-chemical-right
-        enum.ChemicalPayloadFilledSlots.Both: payload-chemical-armed
+      enum.ChemicalPayloadVisuals.Slots:
+        base:
+          None: { state: payload-empty }
+          Left: { state: payload-chemical-left }
+          Right: { state: payload-chemical-right }
+          Both: { state: payload-chemical-armed }
   - type: ItemSlots
   - type: ContainerContainer
     containers:
index c5c4035cfb45474d0774f47aad25b60d62456103..6f34e113fafb25657f762e9590e129bf2a50b1f6 100644 (file)
@@ -22,6 +22,7 @@
     - state: pai-base
     - state: pai-off-overlay
       shader: unshaded
+      map: ["screen"]
   - type: Input
     context: "human"
   - type: PAI
     allowedStates:
       - Alive
   - type: Appearance
+  - type: GenericVisualizer
     visuals:
-      - type: GenericEnumVisualizer
-        key: enum.PAIVisuals.Status
-        layer: 1
-        states:
-          enum.PAIStatus.Off: pai-off-overlay
-          enum.PAIStatus.Searching: pai-searching-overlay
-          enum.PAIStatus.On: pai-on-overlay
-
+      enum.PAIVisuals.Status:
+        screen:
+          Off: { state: pai-off-overlay }
+          Searching: { state: pai-searching-overlay }
+          On: { state: pai-on-overlay }
index 24a6a238e2d12884161ff28ecd35512012ab3f2c..189f653033c0311fd332ad454b2cf435946b9389 100644 (file)
@@ -8,17 +8,17 @@
     netsync: false
     layers:
     - state: tray-off
+      map: ["base"]
   - type: TrayScanner
   - type: Item
     sprite: Objects/Tools/t-ray.rsi
   - type: Appearance
+  - type: GenericVisualizer
     visuals:
-    - type: GenericEnumVisualizer
-      key: enum.TrayScannerVisual.Visual
-      layer: 0
-      states:
-        enum.TrayScannerVisual.On: tray-on
-        enum.TrayScannerVisual.Off: tray-off
+      enum.TrayScannerVisual.Visual:
+        base:
+          On: { state: tray-on }
+          Off: { state: tray-off }
   - type: Tag
     tags:
       - DroneUsable
index a0f646d1e165b04d7dc1969bc4d8d63c359dfafa..27cea3bdb7e8da5d399911c8a215a026876b14ba 100644 (file)
@@ -8,6 +8,9 @@
       sprite: Objects/Weapons/Bombs/hot_potato.rsi
       state: icon
       netsync: false
+      layers:
+      - state: icon
+        map: ["base"]
     - type: Item
       sprite: Objects/Weapons/Bombs/hot_potato.rsi
       size: 5
         types:
           Heat: 1
     - type: Appearance
+    - type: GenericVisualizer
       visuals:
-        - type: GenericEnumVisualizer
-          key: enum.Trigger.TriggerVisuals.VisualState
-          states:
-            enum.Trigger.TriggerVisualState.Primed: activated
-            enum.Trigger.TriggerVisualState.Unprimed: complete
+        enum.Trigger.TriggerVisuals.VisualState:
+          base:
+            Primed: { state: activated }
+            Unprimed: { state: complete }
 
 - type: entity
   id: HotPotatoEffect
index 13ab7309d545ca3404d626e1959b149fab9243db..4d9fed1f914db12f19698028c9e5420d51685e28 100644 (file)
@@ -4,56 +4,59 @@
   parent: BaseItem
   id: C4
   components:
-    - type: Sprite
-      sprite: Objects/Weapons/Bombs/c4.rsi
-      state: icon
-    - type: Item
-      sprite: Objects/Weapons/Bombs/c4.rsi
-      size: 10
-    - type: OnUseTimerTrigger
-      delay: 10
-      delayOptions: [10, 30, 60, 120, 300]
-      initialBeepDelay: 0
-      beepSound: /Audio/Machines/Nuke/general_beep.ogg
-      startOnStick: true
-      canToggleStartOnStick: true
-    - type: TriggerOnSignal
-    - type: DeviceLinkSink
-      ports:
-        - Trigger
-    - type: Sticky
-      stickDelay: 5
-      unstickDelay: 5
-      stickPopupStart: comp-sticky-start-stick-bomb
-      stickPopupSuccess: comp-sticky-success-stick-bomb
-      unstickPopupStart: comp-sticky-start-unstick-bomb
-      unstickPopupSuccess: comp-sticky-success-unstick-bomb
-      blacklist: # can't stick it to other items
-        components:
-          - Item
-    - type: Explosive # Powerful explosion in a very small radius. Doesn't break underplating.
-      explosionType: DemolitionCharge
-      totalIntensity: 60
-      intensitySlope: 5
-      maxIntensity: 30
-      canCreateVacuum: false
-    - type: ExplodeOnTrigger
-    - type: Damageable
-      damageContainer: Inorganic
-    - type: Destructible
-      thresholds:
-        - trigger:
-            !type:DamageTrigger
-            damage: 50
-          behaviors:
-            - !type:DoActsBehavior
-              acts: ["Destruction"]
-            - !type:ExplodeBehavior
-    - type: StickyVisualizer
-    - type: Appearance
-      visuals:
-        - type: GenericEnumVisualizer
-          key: enum.Trigger.TriggerVisuals.VisualState
-          states:
-            enum.Trigger.TriggerVisualState.Primed: primed
-            enum.Trigger.TriggerVisualState.Unprimed: complete
+  - type: Sprite
+    sprite: Objects/Weapons/Bombs/c4.rsi
+    state: icon
+    layers:
+    - state: icon
+      map: ["base"]
+  - type: Item
+    sprite: Objects/Weapons/Bombs/c4.rsi
+    size: 10
+  - type: OnUseTimerTrigger
+    delay: 10
+    delayOptions: [10, 30, 60, 120, 300]
+    initialBeepDelay: 0
+    beepSound: /Audio/Machines/Nuke/general_beep.ogg
+    startOnStick: true
+    canToggleStartOnStick: true
+  - type: TriggerOnSignal
+  - type: DeviceLinkSink
+    ports:
+      - Trigger
+  - type: Sticky
+    stickDelay: 5
+    unstickDelay: 5
+    stickPopupStart: comp-sticky-start-stick-bomb
+    stickPopupSuccess: comp-sticky-success-stick-bomb
+    unstickPopupStart: comp-sticky-start-unstick-bomb
+    unstickPopupSuccess: comp-sticky-success-unstick-bomb
+    blacklist: # can't stick it to other items
+      components:
+        - Item
+  - type: Explosive # Powerful explosion in a very small radius. Doesn't break underplating.
+    explosionType: DemolitionCharge
+    totalIntensity: 60
+    intensitySlope: 5
+    maxIntensity: 30
+    canCreateVacuum: false
+  - type: ExplodeOnTrigger
+  - type: Damageable
+    damageContainer: Inorganic
+  - type: Destructible
+    thresholds:
+      - trigger:
+          !type:DamageTrigger
+          damage: 50
+        behaviors:
+          - !type:DoActsBehavior
+            acts: ["Destruction"]
+          - !type:ExplodeBehavior
+  - type: StickyVisualizer
+  - type: Appearance
+  - type: GenericVisualizer
+    visuals:
+      enum.Trigger.TriggerVisuals.VisualState:
+        base:
+          Primed: { state: primed }
+          Unprimed: { state: complete }
index b1bf565bb2c56192ca5f8ed6532be1408274837a..77f61f894341e509aa1c3f438c749fbefa7dbbdf 100644 (file)
       - !type:DoActsBehavior
         acts: [ "Destruction" ]
   - type: Appearance
-    visuals:
-    - type: GenericEnumVisualizer
-      key: enum.Trigger.TriggerVisuals.VisualState
-      states:
-        enum.Trigger.TriggerVisualState.Primed: primed
-        enum.Trigger.TriggerVisualState.Unprimed: complete
   - type: GenericVisualizer
     visuals:
       enum.ConstructionVisuals.Key:
           wiredCase: { state: wired }
           caseWithTrigger: { state: no-payload }
           grenade: { state: complete }
+      enum.Trigger.TriggerVisuals.VisualState:
+        enum.ConstructionVisuals.Layer:
+          Primed: { state: primed }
+          Unprimed: { state: complete }
   - type: StaticPrice
     price: 25
 
index b58b49fb98d2f0e6a7e1ca7d6b86ce2295632a9f..9db97829dc53c6e53cc72b0b12573d376ee38da8 100644 (file)
@@ -18,6 +18,7 @@
     snapCardinals: true
     layers:
       - state: pod_0
+        map: ["base"]
   - type: Physics
     bodyType: Static
   - type: Fixtures
   - type: ApcPowerReceiver
     powerLoad: 200 #Receives most of its power from the console
   - type: Appearance
+  - type: GenericVisualizer
     visuals:
-      - type: GenericEnumVisualizer
-        key: enum.CloningPodVisuals.Status
-        layer: 0
-        states:
-          enum.CloningPodStatus.Cloning: pod_1
-          enum.CloningPodStatus.NoMind: pod_e
-          enum.CloningPodStatus.Gore: pod_g
-          enum.CloningPodStatus.Idle: pod_0
+      enum.CloningPodVisuals.Status:
+        base:
+          Cloning: { state: pod_1 }
+          NoMind: { state: pod_e }
+          Gore: { state: pod_g }
+          Idle: { state: pod_0 }
   - type: Climbable
   - type: StaticPrice
     price: 1000
index 03b22865e960871fc1313bbe7aa2e22c36ed6916..92922f09d4ff49fd5485dc1132bd5090cb000dca 100644 (file)
@@ -10,6 +10,9 @@
     # temp to make clickmask work
     sprite: Structures/meat_spike.rsi
     state: spike
+    layers:
+    - state: spike
+      map: ["base"]
   - type: Damageable
     damageContainer: Inorganic
     damageModifierSet: Metallic
   - type: Anchorable
   - type: Pullable
   - type: Appearance
+  - type: GenericVisualizer
     visuals:
-      - type: GenericEnumVisualizer
-        key: enum.KitchenSpikeVisuals.Status
-        layer: 0
-        states:
-          enum.KitchenSpikeStatus.Empty: spike
-          enum.KitchenSpikeStatus.Bloody: spikebloody
+      enum.KitchenSpikeVisuals.Status:
+        base:
+          Empty: { state: spike }
+          Bloody: { state: spikebloody }
   - type: Construction
     graph: MeatSpike
     node: MeatSpike