diff --git a/Content.Client/Shuttles/UI/MapScreen.xaml.cs b/Content.Client/Shuttles/UI/MapScreen.xaml.cs index 65a11d345d..8430699bae 100644 --- a/Content.Client/Shuttles/UI/MapScreen.xaml.cs +++ b/Content.Client/Shuttles/UI/MapScreen.xaml.cs @@ -318,10 +318,13 @@ public sealed partial class MapScreen : BoxContainer foreach (var grid in _mapManager.GetAllMapGrids(mapComp.MapId)) { + _entManager.TryGetComponent(grid.Owner, out IFFComponent? iffComp); + var gridObj = new GridMapObject() { Name = _entManager.GetComponent(grid.Owner).EntityName, - Entity = grid.Owner + Entity = grid.Owner, + HideButton = iffComp != null && (iffComp.Flags & IFFFlags.HideLabel) != 0x0, }; // Always show our shuttle immediately @@ -329,7 +332,8 @@ public sealed partial class MapScreen : BoxContainer { AddMapObject(mapComp.MapId, gridObj); } - else + else if (iffComp == null || + (iffComp.Flags & IFFFlags.Hide) == 0x0) { _pendingMapObjects.Add((mapComp.MapId, gridObj)); } @@ -423,10 +427,14 @@ public sealed partial class MapScreen : BoxContainer /// private void AddMapObject(MapId mapId, IMapObject mapObj) { - var gridContents = _mapHeadings[mapId]; var existing = _mapObjects.GetOrNew(mapId); existing.Add(mapObj); + if (mapObj.HideButton) + return; + + var gridContents = _mapHeadings[mapId]; + var gridButton = new Button() { Text = mapObj.Name, diff --git a/Content.Client/Shuttles/UI/ShuttleMapControl.xaml.cs b/Content.Client/Shuttles/UI/ShuttleMapControl.xaml.cs index 55ef55a6c7..2ce1906d3d 100644 --- a/Content.Client/Shuttles/UI/ShuttleMapControl.xaml.cs +++ b/Content.Client/Shuttles/UI/ShuttleMapControl.xaml.cs @@ -345,7 +345,7 @@ public sealed partial class ShuttleMapControl : BaseShuttleControl // Rudimentary IFF for now, if IFF hiding on then we don't show on the map at all if (grid.Owner != _shuttleEntity && EntManager.TryGetComponent(grid, out iffComp) && - (iffComp.Flags & (IFFFlags.Hide | IFFFlags.HideLabel)) != 0x0) + (iffComp.Flags & IFFFlags.Hide) != 0x0) { continue; } @@ -367,6 +367,9 @@ public sealed partial class ShuttleMapControl : BaseShuttleControl AddMapObject(existingEdges, existingVerts, mapObject); // Text + if (iffComp != null && (iffComp.Flags & IFFFlags.HideLabel) != 0x0) + continue; + // Force drawing it at this point. var iffText = _shuttles.GetIFFLabel(grid, self: true, component: iffComp); diff --git a/Content.Shared/Shuttles/Systems/SharedShuttleSystem.IFF.cs b/Content.Shared/Shuttles/Systems/SharedShuttleSystem.IFF.cs index 72068c71f8..ed687d48f4 100644 --- a/Content.Shared/Shuttles/Systems/SharedShuttleSystem.IFF.cs +++ b/Content.Shared/Shuttles/Systems/SharedShuttleSystem.IFF.cs @@ -60,7 +60,7 @@ public abstract partial class SharedShuttleSystem return; component.Color = color; - Dirty(component); + Dirty(gridUid, component); UpdateIFFInterfaces(gridUid, component); } @@ -73,7 +73,7 @@ public abstract partial class SharedShuttleSystem return; component.Flags |= flags; - Dirty(component); + Dirty(gridUid, component); UpdateIFFInterfaces(gridUid, component); } @@ -87,7 +87,7 @@ public abstract partial class SharedShuttleSystem return; component.Flags &= ~flags; - Dirty(component); + Dirty(gridUid, component); UpdateIFFInterfaces(gridUid, component); } } diff --git a/Content.Shared/Shuttles/UI/MapObjects/GridMapObject.cs b/Content.Shared/Shuttles/UI/MapObjects/GridMapObject.cs index cb4194b732..7bbd9ef64a 100644 --- a/Content.Shared/Shuttles/UI/MapObjects/GridMapObject.cs +++ b/Content.Shared/Shuttles/UI/MapObjects/GridMapObject.cs @@ -3,5 +3,6 @@ namespace Content.Shared.Shuttles.UI.MapObjects; public record struct GridMapObject : IMapObject { public string Name { get; set; } + public bool HideButton { get; init; } public EntityUid Entity; } diff --git a/Content.Shared/Shuttles/UI/MapObjects/IMapObject.cs b/Content.Shared/Shuttles/UI/MapObjects/IMapObject.cs index 80e165d0b0..a2584fa223 100644 --- a/Content.Shared/Shuttles/UI/MapObjects/IMapObject.cs +++ b/Content.Shared/Shuttles/UI/MapObjects/IMapObject.cs @@ -6,4 +6,9 @@ namespace Content.Shared.Shuttles.UI.MapObjects; public interface IMapObject { string Name { get; } + + /// + /// Should we hide the button from being shown (AKA just draw it). + /// + bool HideButton { get; } } diff --git a/Content.Shared/Shuttles/UI/MapObjects/ShuttleBeaconObject.cs b/Content.Shared/Shuttles/UI/MapObjects/ShuttleBeaconObject.cs index 2be80f46a8..c5e13c414b 100644 --- a/Content.Shared/Shuttles/UI/MapObjects/ShuttleBeaconObject.cs +++ b/Content.Shared/Shuttles/UI/MapObjects/ShuttleBeaconObject.cs @@ -4,4 +4,7 @@ using Robust.Shared.Serialization; namespace Content.Shared.Shuttles.UI.MapObjects; [Serializable, NetSerializable] -public readonly record struct ShuttleBeaconObject(NetEntity Entity, NetCoordinates Coordinates, string Name) : IMapObject; +public readonly record struct ShuttleBeaconObject(NetEntity Entity, NetCoordinates Coordinates, string Name) : IMapObject +{ + public bool HideButton => false; +} diff --git a/Content.Shared/Shuttles/UI/MapObjects/ShuttleExclusionObject.cs b/Content.Shared/Shuttles/UI/MapObjects/ShuttleExclusionObject.cs index a5ac93c658..7c7c927b4a 100644 --- a/Content.Shared/Shuttles/UI/MapObjects/ShuttleExclusionObject.cs +++ b/Content.Shared/Shuttles/UI/MapObjects/ShuttleExclusionObject.cs @@ -4,4 +4,7 @@ using Robust.Shared.Serialization; namespace Content.Shared.Shuttles.UI.MapObjects; [Serializable, NetSerializable] -public record struct ShuttleExclusionObject(NetCoordinates Coordinates, float Range, string Name = "") : IMapObject; +public record struct ShuttleExclusionObject(NetCoordinates Coordinates, float Range, string Name = "") : IMapObject +{ + public bool HideButton => false; +}