]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Add APC power meter (#14196)
authorKevin Zheng <kevinz5000@gmail.com>
Tue, 21 Feb 2023 15:23:38 +0000 (07:23 -0800)
committerGitHub <noreply@github.com>
Tue, 21 Feb 2023 15:23:38 +0000 (09:23 -0600)
Content.Client/Power/APC/UI/ApcMenu.xaml
Content.Client/Power/APC/UI/ApcMenu.xaml.cs
Content.Server/Power/EntitySystems/ApcSystem.cs
Content.Shared/APC/SharedApc.cs
Resources/Locale/en-US/ui/power-apc.ftl

index 61b12083c5012ac72ea9779b3807317c9ba4b06c..5926b5de4cd19edd07e9532377631acff4a89180 100644 (file)
@@ -8,6 +8,7 @@
             <Label Text="{Loc 'apc-menu-breaker-label'}"/>
             <Button Name="BreakerButton" Text="{Loc 'apc-menu-breaker-button'}"></Button>
         </BoxContainer>
+        <Label Name="PowerLabel"/>
         <BoxContainer Orientation="Horizontal">
             <Label Text="{Loc 'apc-menu-external-label'}"/>
             <Label Name="ExternalPowerStateLabel" Text="{Loc 'apc-menu-power-state-good'}"/>
index 9cc68776528077ea194e81cc7aac9851ed3394ae..1a33b416359a5a94381acbc7affc30890197b199 100644 (file)
@@ -32,6 +32,11 @@ namespace Content.Client.Power.APC.UI
                 BreakerButton.Pressed = castState.MainBreaker;
             }
 
+            if (PowerLabel != null)
+            {
+                PowerLabel.Text = Loc.GetString("apc-menu-power-label", ("power", castState.Power));
+            }
+
             if (ExternalPowerStateLabel != null)
             {
                 switch (castState.ApcExternalPower)
index d442a77c0644c1ddb84495d157926b2dfec3a986..45ad5a6aca9af2bc7a53a9b721c5373e853cf4f5 100644 (file)
@@ -135,9 +135,12 @@ namespace Content.Server.Power.EntitySystems
             if (!Resolve(uid, ref apc, ref battery, ref ui))
                 return;
 
+            var netBattery = Comp<PowerNetworkBatteryComponent>(uid);
+            float power = netBattery is not null ? netBattery.CurrentSupply : 0f;
+
             if (_userInterfaceSystem.GetUiOrNull(uid, ApcUiKey.Key, ui) is { } bui)
             {
-                bui.SetState(new ApcBoundInterfaceState(apc.MainBreakerEnabled, apc.LastExternalState, battery.CurrentCharge / battery.MaxCharge));
+                bui.SetState(new ApcBoundInterfaceState(apc.MainBreakerEnabled, (int)MathF.Ceiling(power), apc.LastExternalState, battery.CurrentCharge / battery.MaxCharge));
             }
         }
 
index 7669e32aa2e1245d15a411040c54f10e3e75b164..d49115b151bf4ce4c582da7d1c5b2f82d5f8bff4 100644 (file)
@@ -57,12 +57,14 @@ namespace Content.Shared.APC
     public sealed class ApcBoundInterfaceState : BoundUserInterfaceState
     {
         public readonly bool MainBreaker;
+        public readonly int Power;
         public readonly ApcExternalPowerState ApcExternalPower;
         public readonly float Charge;
 
-        public ApcBoundInterfaceState(bool mainBreaker, ApcExternalPowerState apcExternalPower, float charge)
+        public ApcBoundInterfaceState(bool mainBreaker, int power, ApcExternalPowerState apcExternalPower, float charge)
         {
             MainBreaker = mainBreaker;
+            Power = power;
             ApcExternalPower = apcExternalPower;
             Charge = charge;
         }
index c283eb56aff40bd7c449194c193b2ffeeedcd02d..829b459ee901056b2e367a9c0c0681331042a84e 100644 (file)
@@ -1,6 +1,7 @@
 apc-menu-title = APC
 apc-menu-breaker-label = Main Breaker:{" "}
 apc-menu-breaker-button = Toggle
+apc-menu-power-label = Power: {$power} W
 apc-menu-external-label = External Power:{" "}
 apc-menu-charge-label = Charge:{" "}