]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Fix apc battery state (#15568)
authorSlava0135 <40753025+Slava0135@users.noreply.github.com>
Sun, 23 Apr 2023 08:22:09 +0000 (11:22 +0300)
committerGitHub <noreply@github.com>
Sun, 23 Apr 2023 08:22:09 +0000 (18:22 +1000)
Content.Server/Power/EntitySystems/ApcSystem.cs
Content.Server/Power/EntitySystems/BatterySystem.cs
Content.Server/Power/Pow3r/PowerState.cs

index c1d864e8452eee9b45b9cc9190384067ad5cbd2f..a5516d9e151b15035c7fbc403692020487f40ce1 100644 (file)
@@ -143,7 +143,7 @@ namespace Content.Server.Power.EntitySystems
 
             var state = new ApcBoundInterfaceState(apc.MainBreakerEnabled, apc.HasAccess,
                 (int) MathF.Ceiling(battery.CurrentSupply), apc.LastExternalState,
-                battery.AvailableSupply / battery.Capacity);
+                battery.CurrentStorage / battery.Capacity);
 
             _ui.TrySetUiState(uid, ApcUiKey.Key, state, ui: ui);
         }
index 479d07c26a3b61fbbc058c8c693688289b9fef98..410aa30bba21f505a21a04a804c8c77706f39cf9 100644 (file)
@@ -32,7 +32,7 @@ namespace Content.Server.Power.EntitySystems
 
         private void OnBatteryRejuvenate(EntityUid uid, BatteryComponent component, RejuvenateEvent args)
         {
-            component.CurrentCharge = component.MaxCharge;
+            SetCharge(uid, component.MaxCharge, component);
         }
 
         private void OnExamine(EntityUid uid, ExaminableBatteryComponent component, ExaminedEvent args)
@@ -74,28 +74,18 @@ namespace Content.Server.Power.EntitySystems
             var enumerator = AllEntityQuery<PowerNetworkBatteryComponent, BatteryComponent>();
             while (enumerator.MoveNext(out var uid, out var netBat, out var bat))
             {
-                var netCharge = netBat.NetworkBattery.CurrentStorage;
-
-                bat.Charge = netCharge;
-                DebugTools.Assert(bat.Charge <= bat.MaxCharge && bat.Charge >= 0);
-
-                // TODO maybe decrease tolerance & track the charge at the time the event was most recently raised.
-                // Ensures that events aren't skipped when there are many tiny power changes.
-                if (MathHelper.CloseTo(bat.CurrentCharge, netCharge))
-                    continue;
-
-                var changeEv = new ChargeChangedEvent(netCharge, bat.MaxCharge);
-                RaiseLocalEvent(uid, ref changeEv);
+                SetCharge(uid, netBat.NetworkBattery.CurrentStorage, bat);
             }
         }
 
         public override void Update(float frameTime)
         {
-            foreach (var (comp, batt) in EntityManager.EntityQuery<BatterySelfRechargerComponent, BatteryComponent>())
+            var query = EntityQueryEnumerator<BatterySelfRechargerComponent, BatteryComponent>();
+            while (query.MoveNext(out var uid, out var comp, out var batt))
             {
                 if (!comp.AutoRecharge) continue;
                 if (batt.IsFullyCharged) continue;
-                batt.CurrentCharge += comp.AutoRechargeRate * frameTime;
+                SetCharge(uid, batt.CurrentCharge + comp.AutoRechargeRate * frameTime, batt);
             }
         }
 
index 1d35af254b9fede8e084d8fb6e981e3d54428f60..5b9949a7f2a8593ec6462c0e4b42ef3cda3dca2e 100644 (file)
@@ -437,7 +437,7 @@ namespace Content.Server.Power.Pow3r
             public bool LoadingMarked;
 
             /// <summary>
-            ///     Amount of supply that the battery can provider this tick.
+            ///     Amount of supply that the battery can provide this tick.
             /// </summary>
             [ViewVariables(VVAccess.ReadWrite)] [JsonIgnore]
             public float AvailableSupply;