Cleaner BoundUserInterfaces (#17736)
This commit is contained in:
@@ -31,6 +31,7 @@ namespace Content.Server.Nuke
|
||||
[Dependency] private readonly IRobustRandom _random = default!;
|
||||
[Dependency] private readonly SharedAudioSystem _audio = default!;
|
||||
[Dependency] private readonly UserInterfaceSystem _ui = default!;
|
||||
[Dependency] private readonly SharedTransformSystem _xformSystem = default!;
|
||||
|
||||
/// <summary>
|
||||
/// Used to calculate when the nuke song should start playing for maximum kino with the nuke sfx
|
||||
@@ -82,16 +83,16 @@ namespace Content.Server.Nuke
|
||||
{
|
||||
base.Update(frameTime);
|
||||
|
||||
var query = EntityQuery<NukeComponent>();
|
||||
foreach (var nuke in query)
|
||||
var query = EntityQueryEnumerator<NukeComponent>();
|
||||
while (query.MoveNext(out var uid, out var nuke))
|
||||
{
|
||||
switch (nuke.Status)
|
||||
{
|
||||
case NukeStatus.ARMED:
|
||||
TickTimer(nuke.Owner, frameTime, nuke);
|
||||
TickTimer(uid, frameTime, nuke);
|
||||
break;
|
||||
case NukeStatus.COOLDOWN:
|
||||
TickCooldown(nuke.Owner, frameTime, nuke);
|
||||
TickCooldown(uid, frameTime, nuke);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -180,8 +181,11 @@ namespace Content.Server.Nuke
|
||||
|
||||
// manually set transform anchor (bypassing anchorable)
|
||||
// todo: it will break pullable system
|
||||
transform.Coordinates = transform.Coordinates.SnapToGrid();
|
||||
transform.Anchored = !transform.Anchored;
|
||||
_xformSystem.SetCoordinates(uid, transform, transform.Coordinates.SnapToGrid());
|
||||
if (transform.Anchored)
|
||||
_xformSystem.Unanchor(uid, transform);
|
||||
else
|
||||
_xformSystem.AnchorEntity(uid, transform);
|
||||
|
||||
UpdateUserInterface(uid, component);
|
||||
}
|
||||
@@ -243,7 +247,7 @@ namespace Content.Server.Nuke
|
||||
|
||||
private void OnDoAfter(EntityUid uid, NukeComponent component, DoAfterEvent args)
|
||||
{
|
||||
if(args.Handled || args.Cancelled)
|
||||
if (args.Handled || args.Cancelled)
|
||||
return;
|
||||
|
||||
DisarmBomb(uid, component);
|
||||
@@ -317,7 +321,6 @@ namespace Content.Server.Nuke
|
||||
component.Status = NukeStatus.AWAIT_CODE;
|
||||
break;
|
||||
case NukeStatus.AWAIT_CODE:
|
||||
{
|
||||
if (!component.DiskSlot.HasItem)
|
||||
{
|
||||
component.Status = NukeStatus.AWAIT_DISK;
|
||||
@@ -339,7 +342,6 @@ namespace Content.Server.Nuke
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case NukeStatus.AWAIT_ARM:
|
||||
// do nothing, wait for arm button to be pressed
|
||||
break;
|
||||
@@ -378,7 +380,7 @@ namespace Content.Server.Nuke
|
||||
CooldownTime = (int) component.CooldownTime
|
||||
};
|
||||
|
||||
_ui.SetUiState(ui, state);
|
||||
UserInterfaceSystem.SetUiState(ui, state);
|
||||
}
|
||||
|
||||
private void PlayNukeKeypadSound(EntityUid uid, int number, NukeComponent? component = null)
|
||||
@@ -444,7 +446,7 @@ namespace Content.Server.Nuke
|
||||
if (stationUid != null)
|
||||
_alertLevel.SetLevel(stationUid.Value, component.AlertLevelOnActivate, true, true, true, true);
|
||||
|
||||
var pos = nukeXform.MapPosition;
|
||||
var pos = nukeXform.MapPosition;
|
||||
var x = (int) pos.X;
|
||||
var y = (int) pos.Y;
|
||||
var posText = $"({x}, {y})";
|
||||
@@ -458,7 +460,7 @@ namespace Content.Server.Nuke
|
||||
_soundSystem.PlayGlobalOnStation(uid, _audio.GetSound(component.ArmSound));
|
||||
|
||||
_itemSlots.SetLock(uid, component.DiskSlot, true);
|
||||
nukeXform.Anchored = true;
|
||||
_xformSystem.AnchorEntity(uid, nukeXform);
|
||||
component.Status = NukeStatus.ARMED;
|
||||
UpdateUserInterface(uid, component);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user