Fixed clients not recreating docking port hulls/gaps when receiving a network event if the docking port is already locked

This commit is contained in:
Joonas Rikkonen
2018-07-23 23:27:27 +03:00
parent 2c6535b1f2
commit 3b6bedb180

View File

@@ -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<MapEntity> removedEntities = item.linkedTo.Where(e => e.Removed).ToList();
foreach (MapEntity removed in removedEntities) item.linkedTo.Remove(removed);