IFF console (#10504)
* IFF console * Silly * Color * a * Const bool default * Full stealth as well coz dork. * Infiltrator update
This commit is contained in:
64
Content.Client/Shuttles/BUI/IFFConsoleBoundUserInterface.cs
Normal file
64
Content.Client/Shuttles/BUI/IFFConsoleBoundUserInterface.cs
Normal file
@@ -0,0 +1,64 @@
|
||||
using Content.Client.Shuttles.UI;
|
||||
using Content.Shared.Shuttles.BUIStates;
|
||||
using Content.Shared.Shuttles.Events;
|
||||
using JetBrains.Annotations;
|
||||
using Robust.Client.GameObjects;
|
||||
|
||||
namespace Content.Client.Shuttles.BUI;
|
||||
|
||||
[UsedImplicitly]
|
||||
public sealed class IFFConsoleBoundUserInterface : BoundUserInterface
|
||||
{
|
||||
private IFFConsoleWindow? _window;
|
||||
|
||||
public IFFConsoleBoundUserInterface(ClientUserInterfaceComponent owner, object uiKey) : base(owner, uiKey)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
protected override void Open()
|
||||
{
|
||||
base.Open();
|
||||
_window = new IFFConsoleWindow();
|
||||
_window.OnClose += Close;
|
||||
_window.ShowIFF += SendIFFMessage;
|
||||
_window.ShowVessel += SendVesselMessage;
|
||||
_window.OpenCenteredLeft();
|
||||
}
|
||||
|
||||
protected override void UpdateState(BoundUserInterfaceState state)
|
||||
{
|
||||
base.UpdateState(state);
|
||||
|
||||
if (state is not IFFConsoleBoundUserInterfaceState bState)
|
||||
return;
|
||||
|
||||
_window?.UpdateState(bState);
|
||||
}
|
||||
|
||||
private void SendIFFMessage(bool obj)
|
||||
{
|
||||
SendMessage(new IFFShowIFFMessage()
|
||||
{
|
||||
Show = obj,
|
||||
});
|
||||
}
|
||||
|
||||
private void SendVesselMessage(bool obj)
|
||||
{
|
||||
SendMessage(new IFFShowVesselMessage()
|
||||
{
|
||||
Show = obj,
|
||||
});
|
||||
}
|
||||
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
base.Dispose(disposing);
|
||||
if (disposing)
|
||||
{
|
||||
_window?.Close();
|
||||
_window = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
<userInterface:FancyWindow xmlns="https://spacestation14.io"
|
||||
xmlns:userInterface="clr-namespace:Content.Client.UserInterface"
|
||||
Title="Emergency Shuttle Console"
|
||||
Title="{Loc 'emergency-shuttle-console-window-title'}"
|
||||
MinSize="400 400">
|
||||
<BoxContainer Orientation="Vertical"
|
||||
Margin="5">
|
||||
|
||||
20
Content.Client/Shuttles/UI/IFFConsoleWindow.xaml
Normal file
20
Content.Client/Shuttles/UI/IFFConsoleWindow.xaml
Normal file
@@ -0,0 +1,20 @@
|
||||
<userInterface:FancyWindow xmlns="https://spacestation14.io"
|
||||
xmlns:userInterface="clr-namespace:Content.Client.UserInterface"
|
||||
Title="{Loc 'iff-console-window-title'}"
|
||||
MinSize="200 200">
|
||||
<BoxContainer Orientation="Vertical" HorizontalExpand="True">
|
||||
<GridContainer Margin="4 0 0 0" Columns="2">
|
||||
<Label Name="ShowIFFLabel" Text="{Loc 'iff-console-show-iff-label'}" HorizontalExpand="True" StyleClasses="StatusFieldTitle" />
|
||||
<BoxContainer Orientation="Horizontal" MinWidth="120">
|
||||
<Button Name="ShowIFFOnButton" Text="{Loc 'iff-console-on'}" StyleClasses="OpenRight" />
|
||||
<Button Name="ShowIFFOffButton" Text="{Loc 'iff-console-off'}" StyleClasses="OpenLeft" />
|
||||
</BoxContainer>
|
||||
|
||||
<Label Name="ShowVesselLabel" Text="{Loc 'iff-console-show-vessel-label'}" HorizontalExpand="True" StyleClasses="StatusFieldTitle" />
|
||||
<BoxContainer Orientation="Horizontal" MinWidth="120">
|
||||
<Button Name="ShowVesselOnButton" Text="{Loc 'iff-console-on'}" StyleClasses="OpenRight" />
|
||||
<Button Name="ShowVesselOffButton" Text="{Loc 'iff-console-off'}" StyleClasses="OpenLeft" />
|
||||
</BoxContainer>
|
||||
</GridContainer>
|
||||
</BoxContainer>
|
||||
</userInterface:FancyWindow>
|
||||
86
Content.Client/Shuttles/UI/IFFConsoleWindow.xaml.cs
Normal file
86
Content.Client/Shuttles/UI/IFFConsoleWindow.xaml.cs
Normal file
@@ -0,0 +1,86 @@
|
||||
using Content.Client.Computer;
|
||||
using Content.Client.UserInterface;
|
||||
using Content.Shared.Shuttles.BUIStates;
|
||||
using Content.Shared.Shuttles.Components;
|
||||
using Robust.Client.AutoGenerated;
|
||||
using Robust.Client.UserInterface.Controls;
|
||||
using Robust.Client.UserInterface.XAML;
|
||||
|
||||
namespace Content.Client.Shuttles.UI;
|
||||
|
||||
[GenerateTypedNameReferences]
|
||||
public sealed partial class IFFConsoleWindow : FancyWindow,
|
||||
IComputerWindow<IFFConsoleBoundUserInterfaceState>
|
||||
{
|
||||
private readonly ButtonGroup _showIFFButtonGroup = new();
|
||||
private readonly ButtonGroup _showVesselButtonGroup = new();
|
||||
public event Action<bool>? ShowIFF;
|
||||
public event Action<bool>? ShowVessel;
|
||||
|
||||
public IFFConsoleWindow()
|
||||
{
|
||||
RobustXamlLoader.Load(this);
|
||||
ShowIFFOffButton.Group = _showIFFButtonGroup;
|
||||
ShowIFFOnButton.Group = _showIFFButtonGroup;
|
||||
ShowIFFOnButton.OnPressed += args => ShowIFFPressed(true);
|
||||
ShowIFFOffButton.OnPressed += args => ShowIFFPressed(false);
|
||||
|
||||
ShowVesselOffButton.Group = _showVesselButtonGroup;
|
||||
ShowVesselOnButton.Group = _showVesselButtonGroup;
|
||||
ShowVesselOnButton.OnPressed += args => ShowVesselPressed(true);
|
||||
ShowVesselOffButton.OnPressed += args => ShowVesselPressed(false);
|
||||
}
|
||||
|
||||
private void ShowIFFPressed(bool pressed)
|
||||
{
|
||||
ShowIFF?.Invoke(pressed);
|
||||
}
|
||||
|
||||
private void ShowVesselPressed(bool pressed)
|
||||
{
|
||||
ShowVessel?.Invoke(pressed);
|
||||
}
|
||||
|
||||
public void UpdateState(IFFConsoleBoundUserInterfaceState state)
|
||||
{
|
||||
if ((state.AllowedFlags & IFFFlags.HideLabel) != 0x0)
|
||||
{
|
||||
ShowIFFOffButton.Disabled = false;
|
||||
ShowIFFOnButton.Disabled = false;
|
||||
|
||||
if ((state.Flags & IFFFlags.HideLabel) != 0x0)
|
||||
{
|
||||
ShowIFFOffButton.Pressed = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
ShowIFFOnButton.Pressed = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ShowIFFOffButton.Disabled = true;
|
||||
ShowIFFOnButton.Disabled = true;
|
||||
}
|
||||
|
||||
if ((state.AllowedFlags & IFFFlags.Hide) != 0x0)
|
||||
{
|
||||
ShowVesselOffButton.Disabled = false;
|
||||
ShowVesselOnButton.Disabled = false;
|
||||
|
||||
if ((state.Flags & IFFFlags.Hide) != 0x0)
|
||||
{
|
||||
ShowVesselOffButton.Pressed = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
ShowVesselOnButton.Pressed = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ShowVesselOffButton.Disabled = true;
|
||||
ShowVesselOnButton.Disabled = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
using Content.Client.Stylesheets;
|
||||
using Content.Shared.Shuttles.BUIStates;
|
||||
using Content.Shared.Shuttles.Components;
|
||||
using Robust.Client.Graphics;
|
||||
using Robust.Client.UserInterface;
|
||||
using Robust.Client.UserInterface.Controls;
|
||||
@@ -210,6 +211,15 @@ public sealed class RadarControl : Control
|
||||
continue;
|
||||
}
|
||||
|
||||
_entManager.TryGetComponent<IFFComponent>(grid.GridEntityId, out var iff);
|
||||
|
||||
// Hide it entirely.
|
||||
if (iff != null &&
|
||||
(iff.Flags & IFFFlags.Hide) != 0x0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
shown.Add(grid.GridEntityId);
|
||||
var name = metaQuery.GetComponent(grid.GridEntityId).EntityName;
|
||||
|
||||
@@ -220,8 +230,11 @@ public sealed class RadarControl : Control
|
||||
var gridFixtures = fixturesQuery.GetComponent(grid.GridEntityId);
|
||||
var gridMatrix = gridXform.WorldMatrix;
|
||||
Matrix3.Multiply(in gridMatrix, in offsetMatrix, out var matty);
|
||||
var color = iff?.Color ?? IFFComponent.IFFColor;
|
||||
|
||||
if (ShowIFF)
|
||||
if (ShowIFF &&
|
||||
(iff == null && IFFComponent.ShowIFFDefault ||
|
||||
(iff.Flags & IFFFlags.HideLabel) == 0x0))
|
||||
{
|
||||
var gridBounds = grid.LocalAABB;
|
||||
Label label;
|
||||
@@ -231,7 +244,6 @@ public sealed class RadarControl : Control
|
||||
label = new Label()
|
||||
{
|
||||
HorizontalAlignment = HAlignment.Left,
|
||||
FontColorOverride = Color.Aquamarine,
|
||||
};
|
||||
|
||||
_iffControls[grid.GridEntityId] = label;
|
||||
@@ -242,6 +254,7 @@ public sealed class RadarControl : Control
|
||||
label = (Label) control;
|
||||
}
|
||||
|
||||
label.FontColorOverride = color;
|
||||
var gridCentre = matty.Transform(gridBody.LocalCenter);
|
||||
gridCentre.Y = -gridCentre.Y;
|
||||
var distance = gridCentre.Length;
|
||||
@@ -267,7 +280,7 @@ public sealed class RadarControl : Control
|
||||
}
|
||||
|
||||
// Detailed view
|
||||
DrawGrid(handle, matty, gridFixtures, Color.Aquamarine);
|
||||
DrawGrid(handle, matty, gridFixtures, color);
|
||||
|
||||
DrawDocks(handle, grid.GridEntityId, matty);
|
||||
}
|
||||
|
||||
14
Content.Server/Shuttles/Components/IFFConsoleComponent.cs
Normal file
14
Content.Server/Shuttles/Components/IFFConsoleComponent.cs
Normal file
@@ -0,0 +1,14 @@
|
||||
using Content.Server.Shuttles.Systems;
|
||||
using Content.Shared.Shuttles.Components;
|
||||
|
||||
namespace Content.Server.Shuttles.Components;
|
||||
|
||||
[RegisterComponent, Access(typeof(ShuttleSystem))]
|
||||
public sealed class IFFConsoleComponent : Component
|
||||
{
|
||||
/// <summary>
|
||||
/// Flags that this console is allowed to set.
|
||||
/// </summary>
|
||||
[ViewVariables(VVAccess.ReadWrite), DataField("allowedFlags")]
|
||||
public IFFFlags AllowedFlags = IFFFlags.HideLabel;
|
||||
}
|
||||
91
Content.Server/Shuttles/Systems/ShuttleSystem.IFF.cs
Normal file
91
Content.Server/Shuttles/Systems/ShuttleSystem.IFF.cs
Normal file
@@ -0,0 +1,91 @@
|
||||
using Content.Server.Shuttles.Components;
|
||||
using Content.Shared.Shuttles.BUIStates;
|
||||
using Content.Shared.Shuttles.Components;
|
||||
using Content.Shared.Shuttles.Events;
|
||||
|
||||
namespace Content.Server.Shuttles.Systems;
|
||||
|
||||
public sealed partial class ShuttleSystem
|
||||
{
|
||||
private void InitializeIFF()
|
||||
{
|
||||
SubscribeLocalEvent<IFFConsoleComponent, AnchorStateChangedEvent>(OnIFFConsoleAnchor);
|
||||
SubscribeLocalEvent<IFFConsoleComponent, IFFShowIFFMessage>(OnIFFShow);
|
||||
SubscribeLocalEvent<IFFConsoleComponent, IFFShowVesselMessage>(OnIFFShowVessel);
|
||||
}
|
||||
|
||||
private void OnIFFShow(EntityUid uid, IFFConsoleComponent component, IFFShowIFFMessage args)
|
||||
{
|
||||
if (!TryComp<TransformComponent>(uid, out var xform) || xform.GridUid == null ||
|
||||
(component.AllowedFlags & IFFFlags.HideLabel) == 0x0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!args.Show)
|
||||
{
|
||||
AddIFFFlag(xform.GridUid.Value, IFFFlags.HideLabel);
|
||||
}
|
||||
else
|
||||
{
|
||||
RemoveIFFFlag(xform.GridUid.Value, IFFFlags.HideLabel);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnIFFShowVessel(EntityUid uid, IFFConsoleComponent component, IFFShowVesselMessage args)
|
||||
{
|
||||
if (!TryComp<TransformComponent>(uid, out var xform) || xform.GridUid == null ||
|
||||
(component.AllowedFlags & IFFFlags.Hide) == 0x0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!args.Show)
|
||||
{
|
||||
AddIFFFlag(xform.GridUid.Value, IFFFlags.Hide);
|
||||
}
|
||||
else
|
||||
{
|
||||
RemoveIFFFlag(xform.GridUid.Value, IFFFlags.Hide);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnIFFConsoleAnchor(EntityUid uid, IFFConsoleComponent component, ref AnchorStateChangedEvent args)
|
||||
{
|
||||
// If we anchor / re-anchor then make sure flags up to date.
|
||||
if (!args.Anchored ||
|
||||
!TryComp<TransformComponent>(uid, out var xform) ||
|
||||
!TryComp<IFFComponent>(xform.GridUid, out var iff))
|
||||
{
|
||||
_uiSystem.TrySetUiState(uid, IFFConsoleUiKey.Key, new IFFConsoleBoundUserInterfaceState()
|
||||
{
|
||||
AllowedFlags = component.AllowedFlags,
|
||||
Flags = IFFFlags.None,
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
_uiSystem.TrySetUiState(uid, IFFConsoleUiKey.Key, new IFFConsoleBoundUserInterfaceState()
|
||||
{
|
||||
AllowedFlags = component.AllowedFlags,
|
||||
Flags = iff.Flags,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
protected override void UpdateIFFInterfaces(EntityUid gridUid, IFFComponent component)
|
||||
{
|
||||
base.UpdateIFFInterfaces(gridUid, component);
|
||||
foreach (var (comp, xform) in EntityQuery<IFFConsoleComponent, TransformComponent>(true))
|
||||
{
|
||||
if (xform.GridUid != gridUid)
|
||||
continue;
|
||||
|
||||
_uiSystem.TrySetUiState(comp.Owner, IFFConsoleUiKey.Key, new IFFConsoleBoundUserInterfaceState()
|
||||
{
|
||||
AllowedFlags = comp.AllowedFlags,
|
||||
Flags = component.Flags,
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -32,6 +32,7 @@ namespace Content.Server.Shuttles.Systems
|
||||
InitializeEmergencyConsole();
|
||||
InitializeEscape();
|
||||
InitializeFTL();
|
||||
InitializeIFF();
|
||||
|
||||
SubscribeLocalEvent<ShuttleComponent, ComponentAdd>(OnShuttleAdd);
|
||||
SubscribeLocalEvent<ShuttleComponent, ComponentStartup>(OnShuttleStartup);
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
using Content.Shared.Shuttles.Components;
|
||||
using Robust.Shared.Serialization;
|
||||
|
||||
namespace Content.Shared.Shuttles.BUIStates;
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public sealed class IFFConsoleBoundUserInterfaceState : BoundUserInterfaceState
|
||||
{
|
||||
public IFFFlags AllowedFlags;
|
||||
public IFFFlags Flags;
|
||||
}
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public enum IFFConsoleUiKey : byte
|
||||
{
|
||||
Key,
|
||||
}
|
||||
49
Content.Shared/Shuttles/Components/IFFComponent.cs
Normal file
49
Content.Shared/Shuttles/Components/IFFComponent.cs
Normal file
@@ -0,0 +1,49 @@
|
||||
using Content.Shared.Shuttles.Systems;
|
||||
using Robust.Shared.GameStates;
|
||||
|
||||
namespace Content.Shared.Shuttles.Components;
|
||||
|
||||
/// <summary>
|
||||
/// Handles what a grid should look like on radar.
|
||||
/// </summary>
|
||||
[RegisterComponent, NetworkedComponent, Access(typeof(SharedShuttleSystem))]
|
||||
public sealed class IFFComponent : Component
|
||||
{
|
||||
/// <summary>
|
||||
/// Should we show IFF by default?
|
||||
/// </summary>
|
||||
public const bool ShowIFFDefault = true;
|
||||
|
||||
/// <summary>
|
||||
/// Default color to use for IFF if no component is found.
|
||||
/// </summary>
|
||||
public static readonly Color IFFColor = Color.Aquamarine;
|
||||
|
||||
[ViewVariables(VVAccess.ReadWrite), DataField("flags")]
|
||||
public IFFFlags Flags = IFFFlags.None;
|
||||
|
||||
/// <summary>
|
||||
/// Color for this to show up on IFF.
|
||||
/// </summary>
|
||||
[ViewVariables(VVAccess.ReadWrite), DataField("color")]
|
||||
public Color Color = IFFColor;
|
||||
}
|
||||
|
||||
[Flags]
|
||||
public enum IFFFlags : byte
|
||||
{
|
||||
None = 0,
|
||||
|
||||
/// <summary>
|
||||
/// Should the label for this grid be hidden at all ranges.
|
||||
/// </summary>
|
||||
HideLabel,
|
||||
|
||||
/// <summary>
|
||||
/// Should the grid hide entirely (AKA full stealth).
|
||||
/// Will also hide the label if that is not set.
|
||||
/// </summary>
|
||||
Hide,
|
||||
|
||||
// TODO: Need one that hides its outline, just replace it with a bunch of triangles or lines or something.
|
||||
}
|
||||
12
Content.Shared/Shuttles/Events/IFFShowIFFMessage.cs
Normal file
12
Content.Shared/Shuttles/Events/IFFShowIFFMessage.cs
Normal file
@@ -0,0 +1,12 @@
|
||||
using Robust.Shared.Serialization;
|
||||
|
||||
namespace Content.Shared.Shuttles.Events;
|
||||
|
||||
/// <summary>
|
||||
/// Raised on a client IFF console when it wishes to show IFF.
|
||||
/// </summary>
|
||||
[Serializable, NetSerializable]
|
||||
public sealed class IFFShowIFFMessage : BoundUserInterfaceMessage
|
||||
{
|
||||
public bool Show;
|
||||
}
|
||||
9
Content.Shared/Shuttles/Events/IFFShowVesselMessage.cs
Normal file
9
Content.Shared/Shuttles/Events/IFFShowVesselMessage.cs
Normal file
@@ -0,0 +1,9 @@
|
||||
using Robust.Shared.Serialization;
|
||||
|
||||
namespace Content.Shared.Shuttles.Events;
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public sealed class IFFShowVesselMessage : BoundUserInterfaceMessage
|
||||
{
|
||||
public bool Show;
|
||||
}
|
||||
89
Content.Shared/Shuttles/Systems/SharedShuttleSystem.IFF.cs
Normal file
89
Content.Shared/Shuttles/Systems/SharedShuttleSystem.IFF.cs
Normal file
@@ -0,0 +1,89 @@
|
||||
using Content.Shared.Shuttles.Components;
|
||||
using JetBrains.Annotations;
|
||||
using Robust.Shared.GameStates;
|
||||
using Robust.Shared.Serialization;
|
||||
|
||||
namespace Content.Shared.Shuttles.Systems;
|
||||
|
||||
public abstract partial class SharedShuttleSystem
|
||||
{
|
||||
/*
|
||||
* Handles the label visibility on radar controls. This can be hiding the label or applying other effects.
|
||||
*/
|
||||
|
||||
private void InitializeIFF()
|
||||
{
|
||||
SubscribeLocalEvent<IFFComponent, ComponentGetState>(OnIFFGetState);
|
||||
SubscribeLocalEvent<IFFComponent, ComponentHandleState>(OnIFFHandleState);
|
||||
}
|
||||
|
||||
protected virtual void UpdateIFFInterfaces(EntityUid gridUid, IFFComponent component) {}
|
||||
|
||||
/// <summary>
|
||||
/// Sets the color for this grid to appear as on radar.
|
||||
/// </summary>
|
||||
[PublicAPI]
|
||||
public void SetIFFColor(EntityUid gridUid, Color color, IFFComponent? component = null)
|
||||
{
|
||||
component ??= EnsureComp<IFFComponent>(gridUid);
|
||||
|
||||
if (component.Color.Equals(color))
|
||||
return;
|
||||
|
||||
component.Color = color;
|
||||
Dirty(component);
|
||||
UpdateIFFInterfaces(gridUid, component);
|
||||
}
|
||||
|
||||
[PublicAPI]
|
||||
public void AddIFFFlag(EntityUid gridUid, IFFFlags flags, IFFComponent? component = null)
|
||||
{
|
||||
component ??= EnsureComp<IFFComponent>(gridUid);
|
||||
|
||||
if ((component.Flags & flags) == flags)
|
||||
return;
|
||||
|
||||
component.Flags |= flags;
|
||||
Dirty(component);
|
||||
UpdateIFFInterfaces(gridUid, component);
|
||||
}
|
||||
|
||||
[PublicAPI]
|
||||
public void RemoveIFFFlag(EntityUid gridUid, IFFFlags flags, IFFComponent? component = null)
|
||||
{
|
||||
if (!Resolve(gridUid, ref component, false))
|
||||
return;
|
||||
|
||||
if ((component.Flags & flags) == 0x0)
|
||||
return;
|
||||
|
||||
component.Flags &= ~flags;
|
||||
Dirty(component);
|
||||
UpdateIFFInterfaces(gridUid, component);
|
||||
}
|
||||
|
||||
private void OnIFFHandleState(EntityUid uid, IFFComponent component, ref ComponentHandleState args)
|
||||
{
|
||||
if (args.Current is not IFFComponentState state)
|
||||
return;
|
||||
|
||||
component.Flags = state.Flags;
|
||||
component.Color = state.Color;
|
||||
}
|
||||
|
||||
private void OnIFFGetState(EntityUid uid, IFFComponent component, ref ComponentGetState args)
|
||||
{
|
||||
args.State = new IFFComponentState()
|
||||
{
|
||||
Flags = component.Flags,
|
||||
Color = component.Color,
|
||||
};
|
||||
}
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
private sealed class IFFComponentState : ComponentState
|
||||
{
|
||||
public IFFFlags Flags;
|
||||
public Color Color;
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,11 @@ namespace Content.Shared.Shuttles.Systems;
|
||||
|
||||
public abstract partial class SharedShuttleSystem : EntitySystem
|
||||
{
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
InitializeIFF();
|
||||
}
|
||||
}
|
||||
|
||||
[Flags]
|
||||
|
||||
@@ -24,6 +24,7 @@ emergency-shuttle-console-auth-revoked = Early launch authorization revoked, {$r
|
||||
emergency-shuttle-console-denied = Access denied
|
||||
|
||||
# UI
|
||||
emergency-shuttle-console-window-title = Emergency Shuttle Console
|
||||
emergency-shuttle-ui-engines = ENGINES:
|
||||
emergency-shuttle-ui-idle = Idle
|
||||
emergency-shuttle-ui-repeal-all = Repeal All
|
||||
|
||||
5
Resources/Locale/en-US/shuttles/iff.ftl
Normal file
5
Resources/Locale/en-US/shuttles/iff.ftl
Normal file
@@ -0,0 +1,5 @@
|
||||
iff-console-window-title = IFF console
|
||||
iff-console-show-iff-label = Show IFF
|
||||
iff-console-show-vessel-label = Show vessel
|
||||
iff-console-on = On
|
||||
iff-console-off = Off
|
||||
@@ -8,75 +8,76 @@ tilemap:
|
||||
1: FloorArcadeBlue
|
||||
2: FloorArcadeBlue2
|
||||
3: FloorArcadeRed
|
||||
4: FloorAsteroidIronsand1
|
||||
5: FloorAsteroidIronsand2
|
||||
6: FloorAsteroidIronsand3
|
||||
7: FloorAsteroidIronsand4
|
||||
8: FloorBoxing
|
||||
9: FloorCarpetClown
|
||||
10: FloorCarpetOffice
|
||||
11: FloorCave
|
||||
12: FloorCaveDrought
|
||||
13: FloorEighties
|
||||
14: FloorGrassJungle
|
||||
15: FloorGym
|
||||
16: FloorMetalDiamond
|
||||
17: FloorShuttleBlue
|
||||
18: FloorShuttleOrange
|
||||
19: FloorShuttlePurple
|
||||
20: FloorShuttleRed
|
||||
21: FloorShuttleWhite
|
||||
22: FloorAsteroidCoarseSand0
|
||||
23: FloorAsteroidCoarseSand1
|
||||
24: FloorAsteroidCoarseSand2
|
||||
25: FloorAsteroidCoarseSandDug
|
||||
26: FloorAsteroidSand
|
||||
27: FloorAsteroidTile
|
||||
28: FloorBar
|
||||
29: FloorBlue
|
||||
30: FloorBlueCircuit
|
||||
31: FloorClown
|
||||
32: FloorDark
|
||||
33: FloorElevatorShaft
|
||||
34: FloorFreezer
|
||||
35: FloorGlass
|
||||
36: FloorGold
|
||||
37: FloorGrass
|
||||
38: FloorGreenCircuit
|
||||
39: FloorHydro
|
||||
40: FloorKitchen
|
||||
41: FloorLaundry
|
||||
42: FloorLino
|
||||
43: FloorMime
|
||||
44: FloorMono
|
||||
45: FloorReinforced
|
||||
46: FloorRGlass
|
||||
47: FloorRockVault
|
||||
48: FloorShowroom
|
||||
49: FloorSilver
|
||||
50: FloorSnow
|
||||
51: FloorSteel
|
||||
52: FloorSteelDirty
|
||||
53: FloorTechMaint
|
||||
54: FloorWhite
|
||||
55: FloorWood
|
||||
56: Lattice
|
||||
57: Plating
|
||||
4: FloorAsteroidCoarseSand0
|
||||
5: FloorAsteroidCoarseSandDug
|
||||
6: FloorAsteroidIronsand1
|
||||
7: FloorAsteroidIronsand2
|
||||
8: FloorAsteroidIronsand3
|
||||
9: FloorAsteroidIronsand4
|
||||
10: FloorAsteroidSand
|
||||
11: FloorAsteroidTile
|
||||
12: FloorBar
|
||||
13: FloorBlue
|
||||
14: FloorBlueCircuit
|
||||
15: FloorBoxing
|
||||
16: FloorCarpetClown
|
||||
17: FloorCarpetOffice
|
||||
18: FloorCave
|
||||
19: FloorCaveDrought
|
||||
20: FloorClown
|
||||
21: FloorDark
|
||||
22: FloorDirt
|
||||
23: FloorEighties
|
||||
24: FloorElevatorShaft
|
||||
25: FloorFreezer
|
||||
26: FloorGlass
|
||||
27: FloorGold
|
||||
28: FloorGrass
|
||||
29: FloorGrassDark
|
||||
30: FloorGrassJungle
|
||||
31: FloorGrassLight
|
||||
32: FloorGreenCircuit
|
||||
33: FloorGym
|
||||
34: FloorHydro
|
||||
35: FloorKitchen
|
||||
36: FloorLaundry
|
||||
37: FloorLino
|
||||
38: FloorMetalDiamond
|
||||
39: FloorMime
|
||||
40: FloorMono
|
||||
41: FloorRGlass
|
||||
42: FloorReinforced
|
||||
43: FloorRockVault
|
||||
44: FloorShowroom
|
||||
45: FloorShuttleBlue
|
||||
46: FloorShuttleOrange
|
||||
47: FloorShuttlePurple
|
||||
48: FloorShuttleRed
|
||||
49: FloorShuttleWhite
|
||||
50: FloorSilver
|
||||
51: FloorSnow
|
||||
52: FloorSteel
|
||||
53: FloorSteelDirty
|
||||
54: FloorTechMaint
|
||||
55: FloorWhite
|
||||
56: FloorWood
|
||||
57: Lattice
|
||||
58: Plating
|
||||
grids:
|
||||
- settings:
|
||||
chunksize: 16
|
||||
tilesize: 1
|
||||
chunks:
|
||||
- ind: -1,-1
|
||||
tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQAAADkAAAA5AAAAOQAAADkAAAAgAAAAIAAAACAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAA5AAAAOQAAADkAAAA5AAAAIAAAACAAAAA5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQAAADkAAAA5AAAAOQAAABQAAAAgAAAAOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkAAAA5AAAAOQAAADkAAAAgAAAAIAAAADkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAOQAAADkAAAA5AAAAOQAAACAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAOAAAADkAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADkAAAA5AAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADkAAAA5AAAAOQAAADkAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQAAADkAAAA5AAAAOQAAACAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADkAAAAVAAAAFQAAABUAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAA5AAAAFQAAABUAAAAVAAAAIAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAOQAAADkAAAAVAAAAFQAAACAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAA5AAAAOQAAADkAAAAUAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAA5AAAAOQAAADkAAAA5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAA4AAAAOAAAAA==
|
||||
tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOgAAADoAAAA6AAAAOgAAADoAAAAVAAAAFQAAABUAAAAVAAAAFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQAAADoAAAA6AAAAOgAAADoAAAA6AAAAOgAAABUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkAAAA6AAAAOgAAADoAAAA6AAAAFQAAABUAAAA6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOgAAADoAAAA6AAAAOgAAADAAAAAVAAAAOgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADoAAAA6AAAAOgAAADoAAAAVAAAAFQAAADoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5AAAAOgAAADoAAAA6AAAAOgAAABUAAAAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5AAAAOQAAADoAAAAVAAAAFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQAAADoAAAA6AAAAFQAAABUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQAAADoAAAA6AAAAOgAAADoAAAAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOgAAADoAAAA6AAAAOgAAABUAAAAVAAAAFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQAAADoAAAAxAAAAMQAAADEAAAAVAAAAFQAAABUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkAAAA6AAAAMQAAADEAAAAxAAAAFQAAABUAAAAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5AAAAOgAAADoAAAAxAAAAMQAAABUAAAAVAAAAFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkAAAA6AAAAOgAAADoAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkAAAA6AAAAOgAAADoAAAA6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkAAAA5AAAAOQAAAA==
|
||||
- ind: 0,-1
|
||||
tiles: IAAAACAAAAAgAAAAIAAAADkAAAA5AAAAOQAAADkAAAA5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAADkAAAA5AAAAOQAAADkAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAACAAAAA5AAAAOQAAADkAAAA5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAgAAAAOQAAADkAAAA5AAAAOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAOQAAADkAAAA5AAAAOQAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAADkAAAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAA5AAAAOQAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5AAAAOQAAADkAAAA5AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAACAAAAA3AAAAOQAAADkAAAA5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAgAAAANwAAADcAAAA3AAAAOQAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAADcAAAA3AAAANwAAADkAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAABQAAAA5AAAANgAAADkAAAA5AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUAAAAOQAAADkAAAA5AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5AAAAOQAAADkAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
|
||||
tiles: FQAAABUAAAAVAAAAFQAAADoAAAA6AAAAOgAAADoAAAA6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADoAAAA6AAAAOgAAADoAAAA6AAAAOgAAADkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAFQAAADoAAAA6AAAAOgAAADoAAAA5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAABUAAAA6AAAAOgAAADoAAAA6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAVAAAAOgAAADoAAAA6AAAAOgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAOgAAADoAAAA6AAAAOgAAADkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAADoAAAA5AAAAOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAA6AAAAOgAAADkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6AAAAOgAAADoAAAA6AAAAOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAABUAAAA4AAAAOgAAADoAAAA6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAVAAAAOAAAADgAAAA4AAAAOgAAADkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAMAAAADgAAAA4AAAAOAAAADoAAAA5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAADAAAAA6AAAANwAAADoAAAA6AAAAOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAwAAAAOgAAADoAAAA6AAAAOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6AAAAOgAAADoAAAA5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQAAADkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
|
||||
- ind: -1,0
|
||||
tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
|
||||
tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
|
||||
- ind: -1,-2
|
||||
tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAA4AAAAOQAAADkAAAA5AAAAOAAAADgAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5AAAAOQAAADkAAAA5AAAAOQAAADgAAAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQAAACAAAAAgAAAAIAAAADkAAAA4AAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkAAAAgAAAAOQAAACAAAAA5AAAAOAAAADgAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5AAAAIAAAADkAAAAgAAAAOQAAADkAAAA5AAAAOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQAAACAAAAA5AAAAIAAAACAAAAA5AAAAOQAAADkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkAAAAgAAAAOQAAACAAAAAgAAAAOQAAADkAAAA5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5AAAAIAAAACAAAAAgAAAAIAAAADkAAAA5AAAAOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQAAADkAAAAgAAAAIAAAABQAAAA5AAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkAAAA5AAAAIAAAACAAAAAUAAAAIAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAOQAAABQAAAAgAAAAFAAAADkAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADkAAAA5AAAAOQAAADkAAAA5AAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5AAAAOQAAADkAAAA5AAAAOQAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQAAADkAAAA5AAAAOQAAADkAAAAgAAAAIAAAACAAAAA5AAAAOQAAAA==
|
||||
tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADoAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkAAAA5AAAAOgAAADoAAAA6AAAAOQAAADkAAAA5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6AAAAOgAAADoAAAA6AAAAOgAAADkAAAA5AAAAOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOgAAABUAAAAVAAAAFQAAADoAAAA5AAAAOQAAADkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADoAAAAVAAAAOgAAABUAAAA6AAAAOQAAADkAAAA5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6AAAAFQAAADoAAAAVAAAAOgAAADoAAAA6AAAAOgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOgAAABUAAAA6AAAAFQAAABUAAAA6AAAAOgAAADoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADoAAAAVAAAAOgAAABUAAAAVAAAAOgAAADoAAAA6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6AAAAFQAAABUAAAAVAAAAFQAAADoAAAA6AAAAOgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOgAAADoAAAAVAAAAFQAAADAAAAA6AAAAFQAAABUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADoAAAA6AAAAFQAAABUAAAAwAAAAFQAAABUAAAAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5AAAAOgAAADAAAAAVAAAAMAAAADoAAAAVAAAAFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQAAADoAAAA6AAAAOgAAADoAAAA6AAAAFQAAABUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6AAAAOgAAADoAAAA6AAAAOgAAABUAAAAVAAAAFQAAABUAAAAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOgAAADoAAAA6AAAAOgAAADoAAAAVAAAAFQAAABUAAAA6AAAAOgAAAA==
|
||||
- ind: 0,-2
|
||||
tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAOAAAADkAAAA5AAAAOQAAADgAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAA5AAAAOQAAADkAAAA5AAAAOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAA4AAAAOQAAAC0AAAA5AAAALQAAADkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAOAAAADkAAAAtAAAAOQAAAC0AAAA5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQAAADkAAAA5AAAALQAAADkAAAAtAAAAOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQAAADkAAAA5AAAAIAAAADkAAAA5AAAAOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAgAAAAIAAAACAAAAAgAAAAOQAAADkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAADkAAAA5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAACAAAAAgAAAAIAAAACAAAAA5AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAA5AAAAOQAAADkAAAA5AAAAOQAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAOQAAADkAAAA5AAAAOQAAADkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQAAACAAAAAgAAAAIAAAADkAAAA5AAAAOQAAADkAAAA5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
|
||||
tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkAAAA5AAAAOQAAADkAAAA5AAAAOgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5AAAAOQAAADoAAAA6AAAAOgAAADkAAAA5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQAAADkAAAA6AAAAOgAAADoAAAA6AAAAOgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkAAAA5AAAAOgAAACoAAAA6AAAAKgAAADoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5AAAAOQAAADoAAAAqAAAAOgAAACoAAAA6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOgAAADoAAAA6AAAAKgAAADoAAAAqAAAAOgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADoAAAA6AAAAOgAAADoAAAA6AAAAOgAAADoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6AAAAOgAAADoAAAA6AAAAOgAAADoAAAA6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOgAAADoAAAA6AAAAFQAAADoAAAA6AAAAOgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAVAAAAFQAAABUAAAAVAAAAOgAAADoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAFQAAABUAAAAVAAAAFQAAADoAAAA6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAABUAAAAVAAAAFQAAABUAAAA6AAAAOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAA6AAAAOgAAADoAAAA6AAAAOgAAADkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAFQAAABUAAAAVAAAAOgAAADoAAAA6AAAAOgAAADoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOgAAABUAAAAVAAAAFQAAADoAAAA6AAAAOgAAADoAAAA6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
|
||||
entities:
|
||||
- uid: 0
|
||||
type: WallReinforced
|
||||
@@ -526,6 +527,8 @@ entities:
|
||||
- pos: -6.4711375,-22.477419
|
||||
parent: 73
|
||||
type: Transform
|
||||
- canCollide: False
|
||||
type: Physics
|
||||
- uid: 71
|
||||
type: WallReinforced
|
||||
components:
|
||||
@@ -1195,6 +1198,9 @@ entities:
|
||||
id: QuarterTileOverlayGreyscale90
|
||||
coordinates: 0,-12
|
||||
type: DecalGrid
|
||||
- color: '#FFC000FF'
|
||||
flags: Hide
|
||||
type: IFF
|
||||
- uid: 74
|
||||
type: WallReinforced
|
||||
components:
|
||||
@@ -4694,6 +4700,17 @@ entities:
|
||||
type: Transform
|
||||
- enabled: False
|
||||
type: AmbientSound
|
||||
- uid: 563
|
||||
type: ComputerIFFSyndicate
|
||||
components:
|
||||
- rot: -1.5707963267948966 rad
|
||||
pos: 1.5,-4.5
|
||||
parent: 73
|
||||
type: Transform
|
||||
- containers:
|
||||
board: !type:Container
|
||||
ents: []
|
||||
type: ContainerContainer
|
||||
- uid: 564
|
||||
type: DoubleEmergencyOxygenTankFilled
|
||||
components:
|
||||
|
||||
@@ -45,22 +45,22 @@
|
||||
description: Used to pilot a shuttle.
|
||||
abstract: true
|
||||
components:
|
||||
- type: ShuttleConsole
|
||||
- type: ActivatableUI
|
||||
key: enum.ShuttleConsoleUiKey.Key
|
||||
- type: ActivatableUIRequiresPower
|
||||
- type: UserInterface
|
||||
interfaces:
|
||||
- key: enum.ShuttleConsoleUiKey.Key
|
||||
type: ShuttleConsoleBoundUserInterface
|
||||
- type: RadarConsole
|
||||
- type: ExtensionCableReceiver
|
||||
- type: PointLight
|
||||
radius: 1.5
|
||||
energy: 1.6
|
||||
color: "#43ccb5"
|
||||
- type: Rotatable
|
||||
rotateWhileAnchored: true
|
||||
- type: ShuttleConsole
|
||||
- type: ActivatableUI
|
||||
key: enum.ShuttleConsoleUiKey.Key
|
||||
- type: ActivatableUIRequiresPower
|
||||
- type: UserInterface
|
||||
interfaces:
|
||||
- key: enum.ShuttleConsoleUiKey.Key
|
||||
type: ShuttleConsoleBoundUserInterface
|
||||
- type: RadarConsole
|
||||
- type: ExtensionCableReceiver
|
||||
- type: PointLight
|
||||
radius: 1.5
|
||||
energy: 1.6
|
||||
color: "#43ccb5"
|
||||
- type: Rotatable
|
||||
rotateWhileAnchored: true
|
||||
|
||||
- type: entity
|
||||
parent: BaseComputerShuttle
|
||||
@@ -68,13 +68,13 @@
|
||||
name: shuttle console
|
||||
description: Used to pilot a shuttle.
|
||||
components:
|
||||
- type: Appearance
|
||||
visuals:
|
||||
- type: ComputerVisualizer
|
||||
key: generic_key
|
||||
screen: shuttle
|
||||
- type: Computer
|
||||
board: ShuttleConsoleCircuitboard
|
||||
- type: Appearance
|
||||
visuals:
|
||||
- type: ComputerVisualizer
|
||||
key: generic_key
|
||||
screen: shuttle
|
||||
- type: Computer
|
||||
board: ShuttleConsoleCircuitboard
|
||||
|
||||
- type: entity
|
||||
parent: BaseComputerShuttle
|
||||
@@ -82,20 +82,20 @@
|
||||
name: syndicate shuttle console
|
||||
description: Used to pilot a syndicate shuttle.
|
||||
components:
|
||||
- type: Tag
|
||||
tags:
|
||||
- Syndicate
|
||||
- type: Appearance
|
||||
visuals:
|
||||
- type: ComputerVisualizer
|
||||
key: syndie_key
|
||||
screen: syndishuttle
|
||||
- type: RadarConsole
|
||||
maxRange: 1536
|
||||
- type: PointLight
|
||||
radius: 1.5
|
||||
energy: 1.6
|
||||
color: "#c94242"
|
||||
- type: Tag
|
||||
tags:
|
||||
- Syndicate
|
||||
- type: Appearance
|
||||
visuals:
|
||||
- type: ComputerVisualizer
|
||||
key: syndie_key
|
||||
screen: syndishuttle
|
||||
- type: RadarConsole
|
||||
maxRange: 1536
|
||||
- type: PointLight
|
||||
radius: 1.5
|
||||
energy: 1.6
|
||||
color: "#c94242"
|
||||
|
||||
- type: entity
|
||||
parent: BaseComputerShuttle
|
||||
@@ -103,18 +103,82 @@
|
||||
name: cargo shuttle console
|
||||
description: Used to pilot the cargo shuttle.
|
||||
components:
|
||||
- type: Appearance
|
||||
visuals:
|
||||
- type: ComputerVisualizer
|
||||
key: generic_key
|
||||
screen: shuttle
|
||||
- type: CargoPilotConsole
|
||||
- type: RadarConsole
|
||||
maxRange: 256
|
||||
- type: PointLight
|
||||
radius: 1.5
|
||||
energy: 1.6
|
||||
color: "#c94242"
|
||||
- type: Appearance
|
||||
visuals:
|
||||
- type: ComputerVisualizer
|
||||
key: generic_key
|
||||
screen: shuttle
|
||||
- type: CargoPilotConsole
|
||||
- type: RadarConsole
|
||||
maxRange: 256
|
||||
- type: PointLight
|
||||
radius: 1.5
|
||||
energy: 1.6
|
||||
color: "#c94242"
|
||||
|
||||
- type: entity
|
||||
parent: BaseComputer
|
||||
id: ComputerIFF
|
||||
name: IFF computer
|
||||
description: Allows you to control the IFF characteristics of this vessel.
|
||||
components:
|
||||
- type: IFFConsole
|
||||
- type: Sprite
|
||||
layers:
|
||||
- map: [ "enum.ComputerVisualizer+Layers.KeyboardOn" ]
|
||||
visible: false
|
||||
- map: [ "enum.ComputerVisualizer+Layers.Keyboard" ]
|
||||
visible: false
|
||||
- map: [ "enum.ComputerVisualizer+Layers.Body" ]
|
||||
state: computer
|
||||
- map: [ "enum.ComputerVisualizer+Layers.Screen" ]
|
||||
sprite: Structures/Shuttles/iff.rsi
|
||||
state: helm
|
||||
shader: unshaded
|
||||
- type: Appearance
|
||||
visuals:
|
||||
- type: ComputerVisualizer
|
||||
screen: helm
|
||||
- type: ActivatableUI
|
||||
key: enum.IFFConsoleUiKey.Key
|
||||
- type: UserInterface
|
||||
interfaces:
|
||||
- key: enum.IFFConsoleUiKey.Key
|
||||
type: IFFConsoleBoundUserInterface
|
||||
|
||||
- type: entity
|
||||
parent: ComputerIFF
|
||||
id: ComputerIFFSyndicate
|
||||
name: IFF computer
|
||||
suffix: Syndicate
|
||||
description: Allows you to control the IFF and stealth characteristics of this vessel.
|
||||
components:
|
||||
- type: IFFConsole
|
||||
allowedFlags:
|
||||
- Hide
|
||||
- HideLabel
|
||||
- type: Sprite
|
||||
layers:
|
||||
- map: [ "enum.ComputerVisualizer+Layers.KeyboardOn" ]
|
||||
visible: false
|
||||
- map: [ "enum.ComputerVisualizer+Layers.Keyboard" ]
|
||||
visible: false
|
||||
- map: [ "enum.ComputerVisualizer+Layers.Body" ]
|
||||
state: computer
|
||||
- map: [ "enum.ComputerVisualizer+Layers.Screen" ]
|
||||
sprite: Structures/Shuttles/iff.rsi
|
||||
state: helm
|
||||
shader: unshaded
|
||||
- type: Appearance
|
||||
visuals:
|
||||
- type: ComputerVisualizer
|
||||
screen: helm
|
||||
- type: ActivatableUI
|
||||
key: enum.IFFConsoleUiKey.Key
|
||||
- type: UserInterface
|
||||
interfaces:
|
||||
- key: enum.IFFConsoleUiKey.Key
|
||||
type: IFFConsoleBoundUserInterface
|
||||
|
||||
- type: entity
|
||||
parent: BaseComputer
|
||||
|
||||
BIN
Resources/Textures/Structures/Shuttles/iff.rsi/helm.png
Normal file
BIN
Resources/Textures/Structures/Shuttles/iff.rsi/helm.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.2 KiB |
33
Resources/Textures/Structures/Shuttles/iff.rsi/meta.json
Normal file
33
Resources/Textures/Structures/Shuttles/iff.rsi/meta.json
Normal file
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "https://github.com/Citadel-Station-13/Citadel-Station-13-RP/tree/9d6d74d9da4fb39bc722bc7f7b36c54665695ead",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "helm",
|
||||
"directions": 4,
|
||||
"delays": [
|
||||
[
|
||||
1,
|
||||
1
|
||||
],
|
||||
[
|
||||
1,
|
||||
1
|
||||
],
|
||||
[
|
||||
1,
|
||||
1
|
||||
],
|
||||
[
|
||||
1,
|
||||
1
|
||||
]
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user