From 85bcc74bdf5523ab093d322c085d24033ff781a3 Mon Sep 17 00:00:00 2001 From: Plykiya <58439124+Plykiya@users.noreply.github.com> Date: Thu, 1 Aug 2024 23:05:38 -0700 Subject: [PATCH] Add percentage reading to chargers (#28500) * Add percentage reading to chargers * using args.pushgroup * change message * Update Content.Server/Power/EntitySystems/ChargerSystem.cs --------- Co-authored-by: plykiya Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> --- .../Power/EntitySystems/ChargerSystem.cs | 29 ++++++++++++++++++- .../Locale/en-US/power/components/charger.ftl | 2 ++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/Content.Server/Power/EntitySystems/ChargerSystem.cs b/Content.Server/Power/EntitySystems/ChargerSystem.cs index 038295eac1..d4997f62a2 100644 --- a/Content.Server/Power/EntitySystems/ChargerSystem.cs +++ b/Content.Server/Power/EntitySystems/ChargerSystem.cs @@ -43,7 +43,34 @@ internal sealed class ChargerSystem : EntitySystem private void OnChargerExamine(EntityUid uid, ChargerComponent component, ExaminedEvent args) { - args.PushMarkup(Loc.GetString("charger-examine", ("color", "yellow"), ("chargeRate", (int) component.ChargeRate))); + using (args.PushGroup(nameof(ChargerComponent))) + { + // rate at which the charger charges + args.PushMarkup(Loc.GetString("charger-examine", ("color", "yellow"), ("chargeRate", (int) component.ChargeRate))); + + // try to get contents of the charger + if (!_container.TryGetContainer(uid, component.SlotId, out var container)) + return; + + // if charger is empty and not a power cell type charger, add empty message + // power cells have their own empty message by default, for things like flash lights + if (container.ContainedEntities.Count == 0 && !HasComp(uid)) + { + args.PushMarkup(Loc.GetString("charger-empty")); + } + else + { + // add how much each item is charged it + foreach (var contained in container.ContainedEntities) + { + if (!TryComp(contained, out var battery)) + continue; + + var chargePercentage = (battery.CurrentCharge / battery.MaxCharge) * 100; + args.PushMarkup(Loc.GetString("charger-content", ("chargePercentage", (int) chargePercentage))); + } + } + } } public override void Update(float frameTime) diff --git a/Resources/Locale/en-US/power/components/charger.ftl b/Resources/Locale/en-US/power/components/charger.ftl index 1a6e72f43e..9ac16a2d46 100644 --- a/Resources/Locale/en-US/power/components/charger.ftl +++ b/Resources/Locale/en-US/power/components/charger.ftl @@ -1,2 +1,4 @@ charger-examine = Charges at [color={$color}]{$chargeRate}W[/color]. charger-component-charge-rate = Charge rate +charger-content = Current charge is at [color=#5E7C16]{$chargePercentage}[/color]%. +charger-empty = There is nothing in the charger. -- 2.52.0