From f957c5890687f81fd994c592fff2d8cdcaf709d7 Mon Sep 17 00:00:00 2001 From: Jack Fox <35575261+DubiousDoggo@users.noreply.github.com> Date: Mon, 4 Apr 2022 01:13:03 -0500 Subject: [PATCH] Machine Linking Overhaul (#7160) --- .../Visualizers/ConveyorVisualizer.cs | 2 +- .../Visualizers/TwoWayLeverVisualizer.cs | 8 +- Content.Client/Entry/IgnoredComponents.cs | 2 +- .../SignalPortSelectorBoundUserInterface.cs | 44 +- .../UI/SignalPortSelectorMenu.xaml | 23 +- .../UI/SignalPortSelectorMenu.xaml.cs | 61 ++- Content.Server/Conveyor/ConveyorSystem.cs | 53 +- .../ToggleDoorOnTriggerComponent.cs | 9 - .../Explosion/EntitySystems/TriggerSystem.cs | 7 - .../Light/EntitySystems/PoweredLightSystem.cs | 18 +- .../Components/DoorSignalControlComponent.cs | 9 + .../Components/SignalLinkerComponent.cs | 5 +- .../Components/SignalReceiverComponent.cs | 10 +- .../Components/SignalTransmitterComponent.cs | 35 +- .../Components/TwoWayLeverComponent.cs | 2 +- .../MachineLinking/Events/InvokePortEvent.cs | 4 +- .../MachineLinking/Events/LinkAttemptEvent.cs | 4 +- .../Events/SignalReceivedEvent.cs | 4 +- .../Events/SignalValueRequestedEvent.cs | 19 - .../MachineLinking/Models/SignalLink.cs | 20 - .../Models/SignalLinkCollection.cs | 131 ----- .../MachineLinking/Models/SignalPort.cs | 81 --- .../System/DoorSignalControlSystem.cs | 41 ++ .../System/SignalButtonSystem.cs | 11 +- .../System/SignalLinkerSystem.cs | 479 ++++++++++-------- .../System/SignalSwitchSystem.cs | 18 +- .../System/TwoWayLeverSystem.cs | 22 +- .../Physics/Controllers/ConveyorController.cs | 2 +- .../Conveyor/SharedConveyorComponent.cs | 2 +- .../MachineLinking/TwoWayLeverSignal.cs | 2 +- Content.Shared/MachineLinking/UIKeys.cs | 8 +- Content.Shared/MachineLinking/UIMessages.cs | 37 +- .../components/signal-linker-component.ftl | 8 +- .../Entities/Objects/Tools/tools.yml | 4 + .../Structures/Doors/Shutter/shutters.yml | 6 +- .../Entities/Structures/Machines/recycler.yml | 5 - .../Structures/Wallmounts/lighting.yml | 12 +- .../Entities/Structures/Wallmounts/switch.yml | 45 +- .../Entities/Structures/conveyor.yml | 40 -- .../Entities/Structures/lighting_ground.yml | 8 - 40 files changed, 605 insertions(+), 696 deletions(-) delete mode 100644 Content.Server/Doors/Components/ToggleDoorOnTriggerComponent.cs create mode 100644 Content.Server/MachineLinking/Components/DoorSignalControlComponent.cs delete mode 100644 Content.Server/MachineLinking/Events/SignalValueRequestedEvent.cs delete mode 100644 Content.Server/MachineLinking/Models/SignalLink.cs delete mode 100644 Content.Server/MachineLinking/Models/SignalLinkCollection.cs delete mode 100644 Content.Server/MachineLinking/Models/SignalPort.cs create mode 100644 Content.Server/MachineLinking/System/DoorSignalControlSystem.cs diff --git a/Content.Client/Conveyor/Visualizers/ConveyorVisualizer.cs b/Content.Client/Conveyor/Visualizers/ConveyorVisualizer.cs index 1c9e66989f..1d05a5d15e 100644 --- a/Content.Client/Conveyor/Visualizers/ConveyorVisualizer.cs +++ b/Content.Client/Conveyor/Visualizers/ConveyorVisualizer.cs @@ -34,7 +34,7 @@ namespace Content.Client.Conveyor.Visualizers { ConveyorState.Off => _stateStopped, ConveyorState.Forward => _stateRunning, - ConveyorState.Reversed => _stateReversed, + ConveyorState.Reverse => _stateReversed, _ => throw new ArgumentOutOfRangeException() }; diff --git a/Content.Client/Conveyor/Visualizers/TwoWayLeverVisualizer.cs b/Content.Client/Conveyor/Visualizers/TwoWayLeverVisualizer.cs index 15f617fbfd..c7ba62692a 100644 --- a/Content.Client/Conveyor/Visualizers/TwoWayLeverVisualizer.cs +++ b/Content.Client/Conveyor/Visualizers/TwoWayLeverVisualizer.cs @@ -27,13 +27,13 @@ namespace Content.Client.Conveyor.Visualizers return; } - appearance.TryGetData(TwoWayLeverVisuals.State, out TwoWayLeverSignal state); + appearance.TryGetData(TwoWayLeverVisuals.State, out TwoWayLeverState state); var texture = state switch { - TwoWayLeverSignal.Middle => _stateOff, - TwoWayLeverSignal.Right => _stateForward, - TwoWayLeverSignal.Left => _stateReversed, + TwoWayLeverState.Middle => _stateOff, + TwoWayLeverState.Right => _stateForward, + TwoWayLeverState.Left => _stateReversed, _ => _stateOff }; diff --git a/Content.Client/Entry/IgnoredComponents.cs b/Content.Client/Entry/IgnoredComponents.cs index 8d794f581a..672f56476c 100644 --- a/Content.Client/Entry/IgnoredComponents.cs +++ b/Content.Client/Entry/IgnoredComponents.cs @@ -275,12 +275,12 @@ namespace Content.Client.Entry "Uplink", "SpawnItemsOnUse", "AmbientOnPowered", + "DoorSignalControl", "Wieldable", "IncreaseDamageOnWield", "TabletopGame", "LitOnPowered", "TriggerOnSignalReceived", - "ToggleDoorOnTrigger", "DeviceNetworkComponent", "WiredNetworkConnection", "WirelessNetworkConnection", diff --git a/Content.Client/MachineLinking/UI/SignalPortSelectorBoundUserInterface.cs b/Content.Client/MachineLinking/UI/SignalPortSelectorBoundUserInterface.cs index 55fc46a4fd..ca386d0bd3 100644 --- a/Content.Client/MachineLinking/UI/SignalPortSelectorBoundUserInterface.cs +++ b/Content.Client/MachineLinking/UI/SignalPortSelectorBoundUserInterface.cs @@ -9,9 +9,10 @@ namespace Content.Client.MachineLinking.UI { private SignalPortSelectorMenu? _menu; - public SignalPortSelectorBoundUserInterface([NotNull] ClientUserInterfaceComponent owner, [NotNull] object uiKey) : base(owner, uiKey) - { - } + private string? _selectedTransmitterPort; + private string? _selectedReceiverPort; + + public SignalPortSelectorBoundUserInterface([NotNull] ClientUserInterfaceComponent owner, [NotNull] object uiKey) : base(owner, uiKey) { } protected override void Open() { @@ -29,13 +30,46 @@ namespace Content.Client.MachineLinking.UI { case SignalPortsState data: _menu?.UpdateState(data); + _selectedTransmitterPort = null; + _selectedReceiverPort = null; break; } } - public void OnPortSelected(string port) + public void OnTransmitterPortSelected(string port) { - SendMessage(new SignalPortSelected(port)); + _selectedTransmitterPort = port; + if (_selectedReceiverPort != null) + { + SendMessage(new SignalPortSelected(_selectedTransmitterPort, _selectedReceiverPort)); + _selectedTransmitterPort = null; + _selectedReceiverPort = null; + } + } + + public void OnReceiverPortSelected(string port) + { + _selectedReceiverPort = port; + if (_selectedTransmitterPort != null) + { + SendMessage(new SignalPortSelected(_selectedTransmitterPort, _selectedReceiverPort)); + _selectedTransmitterPort = null; + _selectedReceiverPort = null; + } + } + + public void OnClearPressed() + { + _selectedTransmitterPort = null; + _selectedReceiverPort = null; + SendMessage(new LinkerClearSelected()); + } + + public void OnLinkDefaultPressed() + { + _selectedTransmitterPort = null; + _selectedReceiverPort = null; + SendMessage(new LinkerLinkDefaultSelected()); } protected override void Dispose(bool disposing) diff --git a/Content.Client/MachineLinking/UI/SignalPortSelectorMenu.xaml b/Content.Client/MachineLinking/UI/SignalPortSelectorMenu.xaml index 719c9ec8c7..125f360cbb 100644 --- a/Content.Client/MachineLinking/UI/SignalPortSelectorMenu.xaml +++ b/Content.Client/MachineLinking/UI/SignalPortSelectorMenu.xaml @@ -1,4 +1,19 @@ - - - + + + + + + + + + + + + + + +