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"
|
<userInterface:FancyWindow xmlns="https://spacestation14.io"
|
||||||
xmlns:userInterface="clr-namespace:Content.Client.UserInterface"
|
xmlns:userInterface="clr-namespace:Content.Client.UserInterface"
|
||||||
Title="Emergency Shuttle Console"
|
Title="{Loc 'emergency-shuttle-console-window-title'}"
|
||||||
MinSize="400 400">
|
MinSize="400 400">
|
||||||
<BoxContainer Orientation="Vertical"
|
<BoxContainer Orientation="Vertical"
|
||||||
Margin="5">
|
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.Client.Stylesheets;
|
||||||
using Content.Shared.Shuttles.BUIStates;
|
using Content.Shared.Shuttles.BUIStates;
|
||||||
|
using Content.Shared.Shuttles.Components;
|
||||||
using Robust.Client.Graphics;
|
using Robust.Client.Graphics;
|
||||||
using Robust.Client.UserInterface;
|
using Robust.Client.UserInterface;
|
||||||
using Robust.Client.UserInterface.Controls;
|
using Robust.Client.UserInterface.Controls;
|
||||||
@@ -210,6 +211,15 @@ public sealed class RadarControl : Control
|
|||||||
continue;
|
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);
|
shown.Add(grid.GridEntityId);
|
||||||
var name = metaQuery.GetComponent(grid.GridEntityId).EntityName;
|
var name = metaQuery.GetComponent(grid.GridEntityId).EntityName;
|
||||||
|
|
||||||
@@ -220,8 +230,11 @@ public sealed class RadarControl : Control
|
|||||||
var gridFixtures = fixturesQuery.GetComponent(grid.GridEntityId);
|
var gridFixtures = fixturesQuery.GetComponent(grid.GridEntityId);
|
||||||
var gridMatrix = gridXform.WorldMatrix;
|
var gridMatrix = gridXform.WorldMatrix;
|
||||||
Matrix3.Multiply(in gridMatrix, in offsetMatrix, out var matty);
|
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;
|
var gridBounds = grid.LocalAABB;
|
||||||
Label label;
|
Label label;
|
||||||
@@ -231,7 +244,6 @@ public sealed class RadarControl : Control
|
|||||||
label = new Label()
|
label = new Label()
|
||||||
{
|
{
|
||||||
HorizontalAlignment = HAlignment.Left,
|
HorizontalAlignment = HAlignment.Left,
|
||||||
FontColorOverride = Color.Aquamarine,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
_iffControls[grid.GridEntityId] = label;
|
_iffControls[grid.GridEntityId] = label;
|
||||||
@@ -242,6 +254,7 @@ public sealed class RadarControl : Control
|
|||||||
label = (Label) control;
|
label = (Label) control;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
label.FontColorOverride = color;
|
||||||
var gridCentre = matty.Transform(gridBody.LocalCenter);
|
var gridCentre = matty.Transform(gridBody.LocalCenter);
|
||||||
gridCentre.Y = -gridCentre.Y;
|
gridCentre.Y = -gridCentre.Y;
|
||||||
var distance = gridCentre.Length;
|
var distance = gridCentre.Length;
|
||||||
@@ -267,7 +280,7 @@ public sealed class RadarControl : Control
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Detailed view
|
// Detailed view
|
||||||
DrawGrid(handle, matty, gridFixtures, Color.Aquamarine);
|
DrawGrid(handle, matty, gridFixtures, color);
|
||||||
|
|
||||||
DrawDocks(handle, grid.GridEntityId, matty);
|
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();
|
InitializeEmergencyConsole();
|
||||||
InitializeEscape();
|
InitializeEscape();
|
||||||
InitializeFTL();
|
InitializeFTL();
|
||||||
|
InitializeIFF();
|
||||||
|
|
||||||
SubscribeLocalEvent<ShuttleComponent, ComponentAdd>(OnShuttleAdd);
|
SubscribeLocalEvent<ShuttleComponent, ComponentAdd>(OnShuttleAdd);
|
||||||
SubscribeLocalEvent<ShuttleComponent, ComponentStartup>(OnShuttleStartup);
|
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 abstract partial class SharedShuttleSystem : EntitySystem
|
||||||
{
|
{
|
||||||
|
public override void Initialize()
|
||||||
|
{
|
||||||
|
base.Initialize();
|
||||||
|
InitializeIFF();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[Flags]
|
[Flags]
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ emergency-shuttle-console-auth-revoked = Early launch authorization revoked, {$r
|
|||||||
emergency-shuttle-console-denied = Access denied
|
emergency-shuttle-console-denied = Access denied
|
||||||
|
|
||||||
# UI
|
# UI
|
||||||
|
emergency-shuttle-console-window-title = Emergency Shuttle Console
|
||||||
emergency-shuttle-ui-engines = ENGINES:
|
emergency-shuttle-ui-engines = ENGINES:
|
||||||
emergency-shuttle-ui-idle = Idle
|
emergency-shuttle-ui-idle = Idle
|
||||||
emergency-shuttle-ui-repeal-all = Repeal All
|
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
|
1: FloorArcadeBlue
|
||||||
2: FloorArcadeBlue2
|
2: FloorArcadeBlue2
|
||||||
3: FloorArcadeRed
|
3: FloorArcadeRed
|
||||||
4: FloorAsteroidIronsand1
|
4: FloorAsteroidCoarseSand0
|
||||||
5: FloorAsteroidIronsand2
|
5: FloorAsteroidCoarseSandDug
|
||||||
6: FloorAsteroidIronsand3
|
6: FloorAsteroidIronsand1
|
||||||
7: FloorAsteroidIronsand4
|
7: FloorAsteroidIronsand2
|
||||||
8: FloorBoxing
|
8: FloorAsteroidIronsand3
|
||||||
9: FloorCarpetClown
|
9: FloorAsteroidIronsand4
|
||||||
10: FloorCarpetOffice
|
10: FloorAsteroidSand
|
||||||
11: FloorCave
|
11: FloorAsteroidTile
|
||||||
12: FloorCaveDrought
|
12: FloorBar
|
||||||
13: FloorEighties
|
13: FloorBlue
|
||||||
14: FloorGrassJungle
|
14: FloorBlueCircuit
|
||||||
15: FloorGym
|
15: FloorBoxing
|
||||||
16: FloorMetalDiamond
|
16: FloorCarpetClown
|
||||||
17: FloorShuttleBlue
|
17: FloorCarpetOffice
|
||||||
18: FloorShuttleOrange
|
18: FloorCave
|
||||||
19: FloorShuttlePurple
|
19: FloorCaveDrought
|
||||||
20: FloorShuttleRed
|
20: FloorClown
|
||||||
21: FloorShuttleWhite
|
21: FloorDark
|
||||||
22: FloorAsteroidCoarseSand0
|
22: FloorDirt
|
||||||
23: FloorAsteroidCoarseSand1
|
23: FloorEighties
|
||||||
24: FloorAsteroidCoarseSand2
|
24: FloorElevatorShaft
|
||||||
25: FloorAsteroidCoarseSandDug
|
25: FloorFreezer
|
||||||
26: FloorAsteroidSand
|
26: FloorGlass
|
||||||
27: FloorAsteroidTile
|
27: FloorGold
|
||||||
28: FloorBar
|
28: FloorGrass
|
||||||
29: FloorBlue
|
29: FloorGrassDark
|
||||||
30: FloorBlueCircuit
|
30: FloorGrassJungle
|
||||||
31: FloorClown
|
31: FloorGrassLight
|
||||||
32: FloorDark
|
32: FloorGreenCircuit
|
||||||
33: FloorElevatorShaft
|
33: FloorGym
|
||||||
34: FloorFreezer
|
34: FloorHydro
|
||||||
35: FloorGlass
|
35: FloorKitchen
|
||||||
36: FloorGold
|
36: FloorLaundry
|
||||||
37: FloorGrass
|
37: FloorLino
|
||||||
38: FloorGreenCircuit
|
38: FloorMetalDiamond
|
||||||
39: FloorHydro
|
39: FloorMime
|
||||||
40: FloorKitchen
|
40: FloorMono
|
||||||
41: FloorLaundry
|
41: FloorRGlass
|
||||||
42: FloorLino
|
42: FloorReinforced
|
||||||
43: FloorMime
|
43: FloorRockVault
|
||||||
44: FloorMono
|
44: FloorShowroom
|
||||||
45: FloorReinforced
|
45: FloorShuttleBlue
|
||||||
46: FloorRGlass
|
46: FloorShuttleOrange
|
||||||
47: FloorRockVault
|
47: FloorShuttlePurple
|
||||||
48: FloorShowroom
|
48: FloorShuttleRed
|
||||||
49: FloorSilver
|
49: FloorShuttleWhite
|
||||||
50: FloorSnow
|
50: FloorSilver
|
||||||
51: FloorSteel
|
51: FloorSnow
|
||||||
52: FloorSteelDirty
|
52: FloorSteel
|
||||||
53: FloorTechMaint
|
53: FloorSteelDirty
|
||||||
54: FloorWhite
|
54: FloorTechMaint
|
||||||
55: FloorWood
|
55: FloorWhite
|
||||||
56: Lattice
|
56: FloorWood
|
||||||
57: Plating
|
57: Lattice
|
||||||
|
58: Plating
|
||||||
grids:
|
grids:
|
||||||
- settings:
|
- settings:
|
||||||
chunksize: 16
|
chunksize: 16
|
||||||
tilesize: 1
|
tilesize: 1
|
||||||
chunks:
|
chunks:
|
||||||
- ind: -1,-1
|
- ind: -1,-1
|
||||||
tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQAAADkAAAA5AAAAOQAAADkAAAAgAAAAIAAAACAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAA5AAAAOQAAADkAAAA5AAAAIAAAACAAAAA5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQAAADkAAAA5AAAAOQAAABQAAAAgAAAAOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkAAAA5AAAAOQAAADkAAAAgAAAAIAAAADkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAOQAAADkAAAA5AAAAOQAAACAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAOAAAADkAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADkAAAA5AAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADkAAAA5AAAAOQAAADkAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQAAADkAAAA5AAAAOQAAACAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADkAAAAVAAAAFQAAABUAAAAgAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAA5AAAAFQAAABUAAAAVAAAAIAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAOQAAADkAAAAVAAAAFQAAACAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAA5AAAAOQAAADkAAAAUAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAA5AAAAOQAAADkAAAA5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAA4AAAAOAAAAA==
|
tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOgAAADoAAAA6AAAAOgAAADoAAAAVAAAAFQAAABUAAAAVAAAAFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQAAADoAAAA6AAAAOgAAADoAAAA6AAAAOgAAABUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkAAAA6AAAAOgAAADoAAAA6AAAAFQAAABUAAAA6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOgAAADoAAAA6AAAAOgAAADAAAAAVAAAAOgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADoAAAA6AAAAOgAAADoAAAAVAAAAFQAAADoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5AAAAOgAAADoAAAA6AAAAOgAAABUAAAAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5AAAAOQAAADoAAAAVAAAAFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQAAADoAAAA6AAAAFQAAABUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQAAADoAAAA6AAAAOgAAADoAAAAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOgAAADoAAAA6AAAAOgAAABUAAAAVAAAAFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQAAADoAAAAxAAAAMQAAADEAAAAVAAAAFQAAABUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkAAAA6AAAAMQAAADEAAAAxAAAAFQAAABUAAAAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5AAAAOgAAADoAAAAxAAAAMQAAABUAAAAVAAAAFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkAAAA6AAAAOgAAADoAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkAAAA6AAAAOgAAADoAAAA6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkAAAA5AAAAOQAAAA==
|
||||||
- ind: 0,-1
|
- ind: 0,-1
|
||||||
tiles: IAAAACAAAAAgAAAAIAAAADkAAAA5AAAAOQAAADkAAAA5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAADkAAAA5AAAAOQAAADkAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAACAAAAA5AAAAOQAAADkAAAA5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAgAAAAOQAAADkAAAA5AAAAOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAOQAAADkAAAA5AAAAOQAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAADkAAAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAA5AAAAOQAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5AAAAOQAAADkAAAA5AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAACAAAAA3AAAAOQAAADkAAAA5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAgAAAANwAAADcAAAA3AAAAOQAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAADcAAAA3AAAANwAAADkAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAABQAAAA5AAAANgAAADkAAAA5AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUAAAAOQAAADkAAAA5AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5AAAAOQAAADkAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
|
tiles: FQAAABUAAAAVAAAAFQAAADoAAAA6AAAAOgAAADoAAAA6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADoAAAA6AAAAOgAAADoAAAA6AAAAOgAAADkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAFQAAADoAAAA6AAAAOgAAADoAAAA5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAABUAAAA6AAAAOgAAADoAAAA6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAVAAAAOgAAADoAAAA6AAAAOgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAOgAAADoAAAA6AAAAOgAAADkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAADoAAAA5AAAAOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAA6AAAAOgAAADkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6AAAAOgAAADoAAAA6AAAAOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAABUAAAA4AAAAOgAAADoAAAA6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAVAAAAOAAAADgAAAA4AAAAOgAAADkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAMAAAADgAAAA4AAAAOAAAADoAAAA5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAADAAAAA6AAAANwAAADoAAAA6AAAAOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAwAAAAOgAAADoAAAA6AAAAOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6AAAAOgAAADoAAAA5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQAAADkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
|
||||||
- ind: -1,0
|
- ind: -1,0
|
||||||
tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
|
tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
|
||||||
- ind: -1,-2
|
- ind: -1,-2
|
||||||
tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAA4AAAAOQAAADkAAAA5AAAAOAAAADgAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5AAAAOQAAADkAAAA5AAAAOQAAADgAAAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQAAACAAAAAgAAAAIAAAADkAAAA4AAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkAAAAgAAAAOQAAACAAAAA5AAAAOAAAADgAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5AAAAIAAAADkAAAAgAAAAOQAAADkAAAA5AAAAOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQAAACAAAAA5AAAAIAAAACAAAAA5AAAAOQAAADkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkAAAAgAAAAOQAAACAAAAAgAAAAOQAAADkAAAA5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5AAAAIAAAACAAAAAgAAAAIAAAADkAAAA5AAAAOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQAAADkAAAAgAAAAIAAAABQAAAA5AAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkAAAA5AAAAIAAAACAAAAAUAAAAIAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAOQAAABQAAAAgAAAAFAAAADkAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADkAAAA5AAAAOQAAADkAAAA5AAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5AAAAOQAAADkAAAA5AAAAOQAAACAAAAAgAAAAIAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQAAADkAAAA5AAAAOQAAADkAAAAgAAAAIAAAACAAAAA5AAAAOQAAAA==
|
tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADoAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkAAAA5AAAAOgAAADoAAAA6AAAAOQAAADkAAAA5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6AAAAOgAAADoAAAA6AAAAOgAAADkAAAA5AAAAOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOgAAABUAAAAVAAAAFQAAADoAAAA5AAAAOQAAADkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADoAAAAVAAAAOgAAABUAAAA6AAAAOQAAADkAAAA5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6AAAAFQAAADoAAAAVAAAAOgAAADoAAAA6AAAAOgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOgAAABUAAAA6AAAAFQAAABUAAAA6AAAAOgAAADoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADoAAAAVAAAAOgAAABUAAAAVAAAAOgAAADoAAAA6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6AAAAFQAAABUAAAAVAAAAFQAAADoAAAA6AAAAOgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOgAAADoAAAAVAAAAFQAAADAAAAA6AAAAFQAAABUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADoAAAA6AAAAFQAAABUAAAAwAAAAFQAAABUAAAAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5AAAAOgAAADAAAAAVAAAAMAAAADoAAAAVAAAAFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQAAADoAAAA6AAAAOgAAADoAAAA6AAAAFQAAABUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6AAAAOgAAADoAAAA6AAAAOgAAABUAAAAVAAAAFQAAABUAAAAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOgAAADoAAAA6AAAAOgAAADoAAAAVAAAAFQAAABUAAAA6AAAAOgAAAA==
|
||||||
- ind: 0,-2
|
- ind: 0,-2
|
||||||
tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAA4AAAAOAAAADgAAAA4AAAAOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAOAAAADkAAAA5AAAAOQAAADgAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAA5AAAAOQAAADkAAAA5AAAAOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAA4AAAAOQAAAC0AAAA5AAAALQAAADkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAOAAAADkAAAAtAAAAOQAAAC0AAAA5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQAAADkAAAA5AAAALQAAADkAAAAtAAAAOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5AAAAOQAAADkAAAA5AAAAOQAAADkAAAA5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQAAADkAAAA5AAAAIAAAADkAAAA5AAAAOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAgAAAAIAAAACAAAAAgAAAAOQAAADkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAIAAAADkAAAA5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAACAAAAAgAAAAIAAAACAAAAA5AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAA5AAAAOQAAADkAAAA5AAAAOQAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAgAAAAOQAAADkAAAA5AAAAOQAAADkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQAAACAAAAAgAAAAIAAAADkAAAA5AAAAOQAAADkAAAA5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
|
tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkAAAA5AAAAOQAAADkAAAA5AAAAOgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5AAAAOQAAADoAAAA6AAAAOgAAADkAAAA5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQAAADkAAAA6AAAAOgAAADoAAAA6AAAAOgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkAAAA5AAAAOgAAACoAAAA6AAAAKgAAADoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5AAAAOQAAADoAAAAqAAAAOgAAACoAAAA6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOgAAADoAAAA6AAAAKgAAADoAAAAqAAAAOgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADoAAAA6AAAAOgAAADoAAAA6AAAAOgAAADoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6AAAAOgAAADoAAAA6AAAAOgAAADoAAAA6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOgAAADoAAAA6AAAAFQAAADoAAAA6AAAAOgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAVAAAAFQAAABUAAAAVAAAAOgAAADoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAFQAAABUAAAAVAAAAFQAAADoAAAA6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAABUAAAAVAAAAFQAAABUAAAA6AAAAOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAA6AAAAOgAAADoAAAA6AAAAOgAAADkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAFQAAABUAAAAVAAAAOgAAADoAAAA6AAAAOgAAADoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOgAAABUAAAAVAAAAFQAAADoAAAA6AAAAOgAAADoAAAA6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
|
||||||
entities:
|
entities:
|
||||||
- uid: 0
|
- uid: 0
|
||||||
type: WallReinforced
|
type: WallReinforced
|
||||||
@@ -526,6 +527,8 @@ entities:
|
|||||||
- pos: -6.4711375,-22.477419
|
- pos: -6.4711375,-22.477419
|
||||||
parent: 73
|
parent: 73
|
||||||
type: Transform
|
type: Transform
|
||||||
|
- canCollide: False
|
||||||
|
type: Physics
|
||||||
- uid: 71
|
- uid: 71
|
||||||
type: WallReinforced
|
type: WallReinforced
|
||||||
components:
|
components:
|
||||||
@@ -1195,6 +1198,9 @@ entities:
|
|||||||
id: QuarterTileOverlayGreyscale90
|
id: QuarterTileOverlayGreyscale90
|
||||||
coordinates: 0,-12
|
coordinates: 0,-12
|
||||||
type: DecalGrid
|
type: DecalGrid
|
||||||
|
- color: '#FFC000FF'
|
||||||
|
flags: Hide
|
||||||
|
type: IFF
|
||||||
- uid: 74
|
- uid: 74
|
||||||
type: WallReinforced
|
type: WallReinforced
|
||||||
components:
|
components:
|
||||||
@@ -4694,6 +4700,17 @@ entities:
|
|||||||
type: Transform
|
type: Transform
|
||||||
- enabled: False
|
- enabled: False
|
||||||
type: AmbientSound
|
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
|
- uid: 564
|
||||||
type: DoubleEmergencyOxygenTankFilled
|
type: DoubleEmergencyOxygenTankFilled
|
||||||
components:
|
components:
|
||||||
|
|||||||
@@ -45,22 +45,22 @@
|
|||||||
description: Used to pilot a shuttle.
|
description: Used to pilot a shuttle.
|
||||||
abstract: true
|
abstract: true
|
||||||
components:
|
components:
|
||||||
- type: ShuttleConsole
|
- type: ShuttleConsole
|
||||||
- type: ActivatableUI
|
- type: ActivatableUI
|
||||||
key: enum.ShuttleConsoleUiKey.Key
|
key: enum.ShuttleConsoleUiKey.Key
|
||||||
- type: ActivatableUIRequiresPower
|
- type: ActivatableUIRequiresPower
|
||||||
- type: UserInterface
|
- type: UserInterface
|
||||||
interfaces:
|
interfaces:
|
||||||
- key: enum.ShuttleConsoleUiKey.Key
|
- key: enum.ShuttleConsoleUiKey.Key
|
||||||
type: ShuttleConsoleBoundUserInterface
|
type: ShuttleConsoleBoundUserInterface
|
||||||
- type: RadarConsole
|
- type: RadarConsole
|
||||||
- type: ExtensionCableReceiver
|
- type: ExtensionCableReceiver
|
||||||
- type: PointLight
|
- type: PointLight
|
||||||
radius: 1.5
|
radius: 1.5
|
||||||
energy: 1.6
|
energy: 1.6
|
||||||
color: "#43ccb5"
|
color: "#43ccb5"
|
||||||
- type: Rotatable
|
- type: Rotatable
|
||||||
rotateWhileAnchored: true
|
rotateWhileAnchored: true
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: BaseComputerShuttle
|
parent: BaseComputerShuttle
|
||||||
@@ -68,13 +68,13 @@
|
|||||||
name: shuttle console
|
name: shuttle console
|
||||||
description: Used to pilot a shuttle.
|
description: Used to pilot a shuttle.
|
||||||
components:
|
components:
|
||||||
- type: Appearance
|
- type: Appearance
|
||||||
visuals:
|
visuals:
|
||||||
- type: ComputerVisualizer
|
- type: ComputerVisualizer
|
||||||
key: generic_key
|
key: generic_key
|
||||||
screen: shuttle
|
screen: shuttle
|
||||||
- type: Computer
|
- type: Computer
|
||||||
board: ShuttleConsoleCircuitboard
|
board: ShuttleConsoleCircuitboard
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: BaseComputerShuttle
|
parent: BaseComputerShuttle
|
||||||
@@ -82,20 +82,20 @@
|
|||||||
name: syndicate shuttle console
|
name: syndicate shuttle console
|
||||||
description: Used to pilot a syndicate shuttle.
|
description: Used to pilot a syndicate shuttle.
|
||||||
components:
|
components:
|
||||||
- type: Tag
|
- type: Tag
|
||||||
tags:
|
tags:
|
||||||
- Syndicate
|
- Syndicate
|
||||||
- type: Appearance
|
- type: Appearance
|
||||||
visuals:
|
visuals:
|
||||||
- type: ComputerVisualizer
|
- type: ComputerVisualizer
|
||||||
key: syndie_key
|
key: syndie_key
|
||||||
screen: syndishuttle
|
screen: syndishuttle
|
||||||
- type: RadarConsole
|
- type: RadarConsole
|
||||||
maxRange: 1536
|
maxRange: 1536
|
||||||
- type: PointLight
|
- type: PointLight
|
||||||
radius: 1.5
|
radius: 1.5
|
||||||
energy: 1.6
|
energy: 1.6
|
||||||
color: "#c94242"
|
color: "#c94242"
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: BaseComputerShuttle
|
parent: BaseComputerShuttle
|
||||||
@@ -103,18 +103,82 @@
|
|||||||
name: cargo shuttle console
|
name: cargo shuttle console
|
||||||
description: Used to pilot the cargo shuttle.
|
description: Used to pilot the cargo shuttle.
|
||||||
components:
|
components:
|
||||||
- type: Appearance
|
- type: Appearance
|
||||||
visuals:
|
visuals:
|
||||||
- type: ComputerVisualizer
|
- type: ComputerVisualizer
|
||||||
key: generic_key
|
key: generic_key
|
||||||
screen: shuttle
|
screen: shuttle
|
||||||
- type: CargoPilotConsole
|
- type: CargoPilotConsole
|
||||||
- type: RadarConsole
|
- type: RadarConsole
|
||||||
maxRange: 256
|
maxRange: 256
|
||||||
- type: PointLight
|
- type: PointLight
|
||||||
radius: 1.5
|
radius: 1.5
|
||||||
energy: 1.6
|
energy: 1.6
|
||||||
color: "#c94242"
|
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
|
- type: entity
|
||||||
parent: BaseComputer
|
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