From 3b6bedb180b4ef3758c45171b158951c98b05ea7 Mon Sep 17 00:00:00 2001 From: Joonas Rikkonen Date: Mon, 23 Jul 2018 23:27:27 +0300 Subject: [PATCH] Fixed clients not recreating docking port hulls/gaps when receiving a network event if the docking port is already locked --- .../Source/Items/Components/DockingPort.cs | 31 +++++++++---------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/Barotrauma/BarotraumaShared/Source/Items/Components/DockingPort.cs b/Barotrauma/BarotraumaShared/Source/Items/Components/DockingPort.cs index 9ea9e1e61..076c3307f 100644 --- a/Barotrauma/BarotraumaShared/Source/Items/Components/DockingPort.cs +++ b/Barotrauma/BarotraumaShared/Source/Items/Components/DockingPort.cs @@ -243,30 +243,29 @@ namespace Barotrauma.Items.Components DebugConsole.ThrowError("Error - attempted to lock a docking port that's not connected to anything"); return; } - else if (joint is WeldJoint) - { - //DebugConsole.ThrowError("Error - attempted to lock a docking port that's already locked"); - return; - } - dockingDir = IsHorizontal ? - Math.Sign(dockingTarget.item.WorldPosition.X - item.WorldPosition.X) : - Math.Sign(dockingTarget.item.WorldPosition.Y - item.WorldPosition.Y); - dockingTarget.dockingDir = -dockingDir; + if (!(joint is WeldJoint)) + { + + dockingDir = IsHorizontal ? + Math.Sign(dockingTarget.item.WorldPosition.X - item.WorldPosition.X) : + Math.Sign(dockingTarget.item.WorldPosition.Y - item.WorldPosition.Y); + dockingTarget.dockingDir = -dockingDir; #if CLIENT - PlaySound(ActionType.OnSecondaryUse, item.WorldPosition); + PlaySound(ActionType.OnSecondaryUse, item.WorldPosition); #endif - ConnectWireBetweenPorts(); + ConnectWireBetweenPorts(); + CreateJoint(true); - CreateJoint(true); - - if (GameMain.Server != null) - { - item.CreateServerEvent(this); + if (GameMain.Server != null) + { + item.CreateServerEvent(this); + } } + List removedEntities = item.linkedTo.Where(e => e.Removed).ToList(); foreach (MapEntity removed in removedEntities) item.linkedTo.Remove(removed);