using Content.Server.Power.Components; using JetBrains.Annotations; using Robust.Shared.GameObjects; namespace Content.Server.Power.EntitySystems { [UsedImplicitly] public class BatterySystem : EntitySystem { public override void Initialize() { base.Initialize(); SubscribeLocalEvent(PreSync); SubscribeLocalEvent(PostSync); } private void PreSync(NetworkBatteryPreSync ev) { foreach (var (netBat, bat) in EntityManager.EntityQuery()) { netBat.NetworkBattery.Capacity = bat.MaxCharge; netBat.NetworkBattery.CurrentStorage = bat.CurrentCharge; } } private void PostSync(NetworkBatteryPostSync ev) { foreach (var (netBat, bat) in EntityManager.EntityQuery()) { bat.CurrentCharge = netBat.NetworkBattery.CurrentStorage; } } public override void Update(float frameTime) { foreach (var (comp, batt) in EntityManager.EntityQuery()) { if (!comp.AutoRecharge) continue; if (batt.IsFullyCharged) continue; batt.CurrentCharge += comp.AutoRechargeRate * frameTime; } } } }