]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Health analyzer displays turns off when the battery dies (#16125)
authorVasilis <vasilis@pikachu.systems>
Sat, 13 May 2023 16:28:11 +0000 (18:28 +0200)
committerGitHub <noreply@github.com>
Sat, 13 May 2023 16:28:11 +0000 (12:28 -0400)
Content.Server/Power/EntitySystems/BatterySystem.cs
Content.Server/PowerCell/PowerCellSystem.cs
Content.Shared/PowerCell/Components/PowerCellComponent.cs
Content.Shared/PowerCell/SharedPowerCellSystem.cs
Resources/Prototypes/Entities/Objects/Specific/Medical/healthanalyzer.yml
Resources/Textures/Objects/Specific/Medical/healthanalyzer.rsi/analyzer.png
Resources/Textures/Objects/Specific/Medical/healthanalyzer.rsi/icon.png

index 410aa30bba21f505a21a04a804c8c77706f39cf9..7906682a8d422d79350136e444cbcd3d58c1aec3 100644 (file)
@@ -11,6 +11,7 @@ namespace Content.Server.Power.EntitySystems
     [UsedImplicitly]
     public sealed class BatterySystem : EntitySystem
     {
+        [Dependency] private readonly SharedAppearanceSystem _sharedAppearanceSystem = default!;
         public override void Initialize()
         {
             base.Initialize();
index 6574acfb891cbc317a556ad1aeb7ba1a179d6527..6c6cd92d4c347573ef7726cec981647c3187dc7c 100644 (file)
@@ -166,7 +166,6 @@ public sealed class PowerCellSystem : SharedPowerCellSystem
 
         return HasCharge(uid, battery.UseRate, cell, user);
     }
-
     /// <summary>
     /// Tries to use the <see cref="PowerCellDrawComponent.UseRate"/> for this entity.
     /// </summary>
@@ -179,6 +178,7 @@ public sealed class PowerCellSystem : SharedPowerCellSystem
 
         if (TryUseCharge(uid, battery.UseRate, cell, user))
         {
+            _sharedAppearanceSystem.SetData(uid, PowerCellSlotVisuals.Enabled, HasActivatableCharge(uid, battery, cell, user));
             _activatable.CheckUsage(uid);
             return true;
         }
@@ -243,6 +243,7 @@ public sealed class PowerCellSystem : SharedPowerCellSystem
             return false;
         }
 
+        _sharedAppearanceSystem.SetData(uid, PowerCellSlotVisuals.Enabled, battery.Charge > 0);
         return true;
     }
 
index 27a0d2ef970115ee9fc06fca4ceea36c8c96c67e..3f353c13528cecdf9710037196e442c335ff95b7 100644 (file)
@@ -24,3 +24,8 @@ public enum PowerCellVisuals : byte
 {
     ChargeLevel
 }
+[Serializable, NetSerializable]
+public enum PowerCellSlotVisuals : byte
+{
+    Enabled
+}
index 00a9895f88e5a6cf9907c3b646f430f44a5ecc0c..5c18152a23873d4b7ade1a8d2bbe0900b8f2c3af 100644 (file)
@@ -8,6 +8,7 @@ namespace Content.Shared.PowerCell;
 public abstract class SharedPowerCellSystem : EntitySystem
 {
     [Dependency] private readonly ItemSlotsSystem _itemSlots = default!;
+    [Dependency] private readonly SharedAppearanceSystem _appearance = default!;
 
     public override void Initialize()
     {
@@ -48,7 +49,7 @@ public abstract class SharedPowerCellSystem : EntitySystem
 
         if (args.Container.ID != component.CellSlotId)
             return;
-
+        _appearance.SetData(uid, PowerCellSlotVisuals.Enabled, true);
         RaiseLocalEvent(uid, new PowerCellChangedEvent(false), false);
     }
 
@@ -56,7 +57,7 @@ public abstract class SharedPowerCellSystem : EntitySystem
     {
         if (args.Container.ID != component.CellSlotId)
             return;
-
+        _appearance.SetData(uid, PowerCellSlotVisuals.Enabled, false);
         RaiseLocalEvent(uid, new PowerCellChangedEvent(true), false);
     }
 }
index 24a7108454d50037600b092b8313451bdd975480..137b6118bf6038e7e98d9daef0b59fc514a7274d 100644 (file)
@@ -9,7 +9,13 @@
   - type: Sprite
     sprite: Objects/Specific/Medical/healthanalyzer.rsi
     netsync: false
-    state: analyzer
+    state: icon
+    layers:
+    - state: icon
+    - state: analyzer
+      shader: unshaded
+      visible: true
+      map: [ "enum.PowerDeviceVisualLayers.Powered" ]
   - type: PowerCellDraw
     drawRate: 0
     useRate: 20
   - type: Tag
     tags:
     - DiscreteHealthAnalyzer
+  - type: Appearance
+  - type: GenericVisualizer
+    visuals:
+      enum.PowerCellSlotVisuals.Enabled:
+        enum.PowerDeviceVisualLayers.Powered:
+          True: { visible: true }
+          False: { visible: false }
 
 - type: entity
   id: HandheldHealthAnalyzerEmpty
@@ -36,4 +49,4 @@
   - type: ItemSlots
     slots:
       cell_slot:
-        name: power-cell-slot-component-slot-name-default 
+        name: power-cell-slot-component-slot-name-default
index 3fbab3f112c1d2dffb80f16d93f83a3e57b20aae..539f8ff452443d2746464912030f2ba017704ac7 100644 (file)
Binary files a/Resources/Textures/Objects/Specific/Medical/healthanalyzer.rsi/analyzer.png and b/Resources/Textures/Objects/Specific/Medical/healthanalyzer.rsi/analyzer.png differ
index 4517250a5aa10f1858ab65cd76428a65ba18a412..776c3f4f6b72bfc0f454825345317c0a26e068c3 100644 (file)
Binary files a/Resources/Textures/Objects/Specific/Medical/healthanalyzer.rsi/icon.png and b/Resources/Textures/Objects/Specific/Medical/healthanalyzer.rsi/icon.png differ