Fixes alert category being the same but alert type changing to one without severity
Also adds alert type to the exceptions in AlertPrototype
This commit is contained in:
@@ -123,7 +123,7 @@ namespace Content.Shared.Alert
|
|||||||
{
|
{
|
||||||
if (!SupportsSeverity && severity != null)
|
if (!SupportsSeverity && severity != null)
|
||||||
{
|
{
|
||||||
throw new InvalidOperationException("This alert does not support severity");
|
throw new InvalidOperationException($"This alert ({AlertKey}) does not support severity");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!SupportsSeverity)
|
if (!SupportsSeverity)
|
||||||
@@ -131,24 +131,24 @@ namespace Content.Shared.Alert
|
|||||||
|
|
||||||
if (severity == null)
|
if (severity == null)
|
||||||
{
|
{
|
||||||
throw new ArgumentException("No severity specified but this alert has severity.", nameof(severity));
|
throw new ArgumentException($"No severity specified but this alert ({AlertKey}) has severity.", nameof(severity));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (severity < MinSeverity)
|
if (severity < MinSeverity)
|
||||||
{
|
{
|
||||||
throw new ArgumentOutOfRangeException(nameof(severity), "Severity below minimum severity.");
|
throw new ArgumentOutOfRangeException(nameof(severity), $"Severity below minimum severity in {AlertKey}.");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (severity > MaxSeverity)
|
if (severity > MaxSeverity)
|
||||||
{
|
{
|
||||||
throw new ArgumentOutOfRangeException(nameof(severity), "Severity above maximum severity.");
|
throw new ArgumentOutOfRangeException(nameof(severity), $"Severity above maximum severity in {AlertKey}.");
|
||||||
}
|
}
|
||||||
|
|
||||||
var severityText = severity.Value.ToString(CultureInfo.InvariantCulture);
|
var severityText = severity.Value.ToString(CultureInfo.InvariantCulture);
|
||||||
switch (Icon)
|
switch (Icon)
|
||||||
{
|
{
|
||||||
case SpriteSpecifier.EntityPrototype entityPrototype:
|
case SpriteSpecifier.EntityPrototype entityPrototype:
|
||||||
throw new InvalidOperationException("Severity not supported for EntityPrototype icon");
|
throw new InvalidOperationException($"Severity not supported for EntityPrototype icon in {AlertKey}");
|
||||||
case SpriteSpecifier.Rsi rsi:
|
case SpriteSpecifier.Rsi rsi:
|
||||||
return new SpriteSpecifier.Rsi(rsi.RsiPath, rsi.RsiState + severityText);
|
return new SpriteSpecifier.Rsi(rsi.RsiPath, rsi.RsiState + severityText);
|
||||||
case SpriteSpecifier.Texture texture:
|
case SpriteSpecifier.Texture texture:
|
||||||
|
|||||||
@@ -93,6 +93,9 @@ namespace Content.Shared.GameObjects.Components.Mobs
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// In the case we're changing the alert type but not the category, we need to remove it first.
|
||||||
|
_alerts.Remove(alert.AlertKey);
|
||||||
|
|
||||||
_alerts[alert.AlertKey] = new AlertState
|
_alerts[alert.AlertKey] = new AlertState
|
||||||
{Cooldown = cooldown, Severity = severity};
|
{Cooldown = cooldown, Severity = severity};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user