From: deltanedas <39013340+deltanedas@users.noreply.github.com> Date: Fri, 3 Mar 2023 16:25:42 +0000 (+0000) Subject: Salvage magnet shows cooldown time on Examine (revived) (#14007) X-Git-Url: https://git.smokeofanarchy.ru/gitweb.cgi?a=commitdiff_plain;h=ff6527f2a4fb00d73f921842d45adffd51ca0294;p=space-station-14.git Salvage magnet shows cooldown time on Examine (revived) (#14007) * Added salvage magnet cooldown time on Examine * weh * Style issues * mirrorcult feedback --------- Co-authored-by: dmnct Co-authored-by: deltanedas --- diff --git a/Content.Server/Salvage/SalvageSystem.cs b/Content.Server/Salvage/SalvageSystem.cs index 5c7b245253..eb91c42fe3 100644 --- a/Content.Server/Salvage/SalvageSystem.cs +++ b/Content.Server/Salvage/SalvageSystem.cs @@ -141,8 +141,22 @@ namespace Content.Server.Salvage private void OnExamined(EntityUid uid, SalvageMagnetComponent component, ExaminedEvent args) { + var gotGrid = false; + var remainingTime = TimeSpan.Zero; + if (!args.IsInDetailsRange) return; + + if (Transform(uid).GridUid is EntityUid gridId && + _salvageGridStates.TryGetValue(gridId, out var salvageGridState)) + { + remainingTime = component.MagnetState.Until - salvageGridState.CurrentTime; + gotGrid = true; + } + else + { + Logger.WarningS("salvage", "Failed to load salvage grid state, can't display remaining time"); + } switch (component.MagnetState.StateType) { case MagnetStateType.Inactive: @@ -155,19 +169,12 @@ namespace Content.Server.Salvage args.PushMarkup(Loc.GetString("salvage-system-magnet-examined-releasing")); break; case MagnetStateType.CoolingDown: - args.PushMarkup(Loc.GetString("salvage-system-magnet-examined-cooling-down")); + if (gotGrid) + args.PushMarkup(Loc.GetString("salvage-system-magnet-examined-cooling-down", ("timeLeft", Math.Ceiling(remainingTime.TotalSeconds)))); break; case MagnetStateType.Holding: - var magnetTransform = EntityManager.GetComponent(component.Owner); - if (magnetTransform.GridUid is EntityUid gridId && _salvageGridStates.TryGetValue(gridId, out var salvageGridState)) - { - var remainingTime = component.MagnetState.Until - salvageGridState.CurrentTime; + if (gotGrid) args.PushMarkup(Loc.GetString("salvage-system-magnet-examined-active", ("timeLeft", Math.Ceiling(remainingTime.TotalSeconds)))); - } - else - { - Logger.WarningS("salvage", "Failed to load salvage grid state, can't display remaining time"); - } break; default: throw new NotImplementedException("Unexpected magnet state type"); diff --git a/Resources/Locale/en-US/salvage/salvage-system.ftl b/Resources/Locale/en-US/salvage/salvage-system.ftl index 91363d56bb..f341fa0d24 100644 --- a/Resources/Locale/en-US/salvage/salvage-system.ftl +++ b/Resources/Locale/en-US/salvage/salvage-system.ftl @@ -18,4 +18,4 @@ salvage-system-magnet-examined-active = The salvage magnet is holding salvage in *[other] { $timeLeft } seconds. } salvage-system-magnet-examined-releasing = The salvage magnet is releasing the salvage. -salvage-system-magnet-examined-cooling-down = The salvage magnet is cooling down. +salvage-system-magnet-examined-cooling-down = The salvage magnet is cooling down. It will be ready in: {$timeLeft} seconds.