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:
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<TransformComponent>(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");