Moved salvage magnet values from system to component (#13143)

This commit is contained in:
Errant
2022-12-26 22:38:43 +00:00
committed by GitHub
parent e623099a51
commit b0e965d066
3 changed files with 42 additions and 14 deletions

View File

@@ -30,10 +30,6 @@ namespace Content.Server.Salvage
[Dependency] private readonly RadioSystem _radioSystem = default!;
[Dependency] private readonly SharedAppearanceSystem _appearanceSystem = default!;
private static readonly TimeSpan AttachingTime = TimeSpan.FromSeconds(30);
private static readonly TimeSpan HoldTime = TimeSpan.FromMinutes(4);
private static readonly TimeSpan DetachingTime = TimeSpan.FromSeconds(30);
private static readonly TimeSpan CooldownTime = TimeSpan.FromMinutes(1);
private static readonly int SalvageLocationPlaceAttempts = 16;
// TODO: This is probably not compatible with multi-station
@@ -76,18 +72,18 @@ namespace Content.Server.Salvage
if (!Resolve(uid, ref component, false))
return;
int timeLeft = (component.MagnetState.Until.Minutes * 60 + component.MagnetState.Until.Seconds) - (currentTime.Minutes * 60 + currentTime.Seconds);
int timeLeft = Convert.ToInt32(component.MagnetState.Until.TotalSeconds - currentTime.TotalSeconds);
if (component.MagnetState.StateType == MagnetStateType.Inactive)
component.ChargeRemaining = 5;
else if (component.MagnetState.StateType == MagnetStateType.Holding)
{
component.ChargeRemaining = (timeLeft / ((HoldTime.Minutes * 60 + HoldTime.Seconds) / component.ChargeCapacity)) + 1;
component.ChargeRemaining = (timeLeft / (Convert.ToInt32(component.HoldTime.TotalSeconds) / component.ChargeCapacity)) + 1;
}
else if (component.MagnetState.StateType == MagnetStateType.Detaching)
component.ChargeRemaining = 0;
else if (component.MagnetState.StateType == MagnetStateType.CoolingDown)
{
component.ChargeRemaining = component.ChargeCapacity - (timeLeft / ((CooldownTime.Minutes * 60 + CooldownTime.Seconds) / component.ChargeCapacity)) - 1;
component.ChargeRemaining = component.ChargeCapacity - (timeLeft / (Convert.ToInt32(component.CooldownTime.TotalSeconds) / component.ChargeCapacity)) - 1;
}
if (component.PreviousCharge != component.ChargeRemaining)
{
@@ -202,7 +198,7 @@ namespace Content.Server.Salvage
_salvageGridStates[gridId] = gridState;
}
gridState.ActiveMagnets.Add(component);
component.MagnetState = new MagnetState(MagnetStateType.Attaching, gridState.CurrentTime + AttachingTime);
component.MagnetState = new MagnetState(MagnetStateType.Attaching, gridState.CurrentTime + component.AttachingTime);
RaiseLocalEvent(new SalvageMagnetActivatedEvent(component.Owner));
Report(component.Owner, component.SalvageChannel, "salvage-system-report-activate-success");
break;
@@ -348,7 +344,7 @@ namespace Content.Server.Salvage
var pulledTransform = EntityManager.GetComponent<TransformComponent>(salvageEntityId.Value);
pulledTransform.WorldRotation = spAngle;
Report(component.Owner, component.SalvageChannel, "salvage-system-announcement-arrived", ("timeLeft", HoldTime.TotalSeconds));
Report(component.Owner, component.SalvageChannel, "salvage-system-announcement-arrived", ("timeLeft", component.HoldTime.TotalSeconds));
return true;
}
@@ -368,16 +364,16 @@ namespace Content.Server.Salvage
case MagnetStateType.Attaching:
if (SpawnSalvage(magnet))
{
magnet.MagnetState = new MagnetState(MagnetStateType.Holding, currentTime + HoldTime);
magnet.MagnetState = new MagnetState(MagnetStateType.Holding, currentTime + magnet.HoldTime);
}
else
{
magnet.MagnetState = new MagnetState(MagnetStateType.CoolingDown, currentTime + CooldownTime);
magnet.MagnetState = new MagnetState(MagnetStateType.CoolingDown, currentTime + magnet.CooldownTime);
}
break;
case MagnetStateType.Holding:
Report(magnet.Owner, magnet.SalvageChannel, "salvage-system-announcement-losing", ("timeLeft", DetachingTime.TotalSeconds));
magnet.MagnetState = new MagnetState(MagnetStateType.Detaching, currentTime + DetachingTime);
Report(magnet.Owner, magnet.SalvageChannel, "salvage-system-announcement-losing", ("timeLeft", magnet.DetachingTime.TotalSeconds));
magnet.MagnetState = new MagnetState(MagnetStateType.Detaching, currentTime + magnet.DetachingTime);
break;
case MagnetStateType.Detaching:
if (magnet.AttachedEntity.HasValue)
@@ -389,7 +385,7 @@ namespace Content.Server.Salvage
Logger.ErrorS("salvage", "Salvage detaching was expecting attached entity but it was null");
}
Report(magnet.Owner, magnet.SalvageChannel, "salvage-system-announcement-lost");
magnet.MagnetState = new MagnetState(MagnetStateType.CoolingDown, currentTime + CooldownTime);
magnet.MagnetState = new MagnetState(MagnetStateType.CoolingDown, currentTime + magnet.CooldownTime);
break;
case MagnetStateType.CoolingDown:
magnet.MagnetState = MagnetState.Inactive;