- HideLabel just means it won't have its name / button drawn whereas Hide will block it completely.
foreach (var grid in _mapManager.GetAllMapGrids(mapComp.MapId))
{
+ _entManager.TryGetComponent(grid.Owner, out IFFComponent? iffComp);
+
var gridObj = new GridMapObject()
{
Name = _entManager.GetComponent<MetaDataComponent>(grid.Owner).EntityName,
- Entity = grid.Owner
+ Entity = grid.Owner,
+ HideButton = iffComp != null && (iffComp.Flags & IFFFlags.HideLabel) != 0x0,
};
// Always show our shuttle immediately
{
AddMapObject(mapComp.MapId, gridObj);
}
- else
+ else if (iffComp == null ||
+ (iffComp.Flags & IFFFlags.Hide) == 0x0)
{
_pendingMapObjects.Add((mapComp.MapId, gridObj));
}
/// </summary>
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,
// 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;
}
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);
return;
component.Color = color;
- Dirty(component);
+ Dirty(gridUid, component);
UpdateIFFInterfaces(gridUid, component);
}
return;
component.Flags |= flags;
- Dirty(component);
+ Dirty(gridUid, component);
UpdateIFFInterfaces(gridUid, component);
}
return;
component.Flags &= ~flags;
- Dirty(component);
+ Dirty(gridUid, component);
UpdateIFFInterfaces(gridUid, component);
}
}
public record struct GridMapObject : IMapObject
{
public string Name { get; set; }
+ public bool HideButton { get; init; }
public EntityUid Entity;
}
public interface IMapObject
{
string Name { get; }
+
+ /// <summary>
+ /// Should we hide the button from being shown (AKA just draw it).
+ /// </summary>
+ bool HideButton { get; }
}
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;
+}
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;
+}