diff --git a/Subsurface/Source/Items/CharacterInventory.cs b/Subsurface/Source/Items/CharacterInventory.cs index 341690f5c..2052283bb 100644 --- a/Subsurface/Source/Items/CharacterInventory.cs +++ b/Subsurface/Source/Items/CharacterInventory.cs @@ -5,6 +5,7 @@ using Microsoft.Xna.Framework.Input; using Barotrauma.Networking; using Lidgren.Network; using System.Collections.Generic; +using Barotrauma.Items.Components; namespace Barotrauma { @@ -281,11 +282,30 @@ namespace Barotrauma { string toolTip = ""; Rectangle highlightedSlot = Rectangle.Empty; - - if (doubleClickedItem!=null && doubleClickedItem.ParentInventory!=this) + + if (doubleClickedItem != null) { - TryPutItem(doubleClickedItem, doubleClickedItem.AllowedSlots, true); + if (doubleClickedItem.ParentInventory != this) + { + TryPutItem(doubleClickedItem, doubleClickedItem.AllowedSlots, true); + } + else + { + if (character.SelectedConstruction != null) + { + var selectedContainer = character.SelectedConstruction.GetComponent(); + if (selectedContainer != null && selectedContainer.Inventory != null) + { + selectedContainer.Inventory.TryPutItem(doubleClickedItem, doubleClickedItem.AllowedSlots, true); + } + } + else if (character.SelectedCharacter != null && character.SelectedCharacter.Inventory != null) + { + character.SelectedCharacter.Inventory.TryPutItem(doubleClickedItem, doubleClickedItem.AllowedSlots, true); + } + } } + doubleClickedItem = null; const int rectWidth = 40, rectHeight = 40; diff --git a/Subsurface/Source/Items/Inventory.cs b/Subsurface/Source/Items/Inventory.cs index 7be456bac..ea63d0428 100644 --- a/Subsurface/Source/Items/Inventory.cs +++ b/Subsurface/Source/Items/Inventory.cs @@ -169,8 +169,6 @@ namespace Barotrauma public virtual void Draw(SpriteBatch spriteBatch) { - doubleClickedItem = null; - string toolTip = ""; int rectWidth = 40, rectHeight = 40; diff --git a/Subsurface/Source/Items/Item.cs b/Subsurface/Source/Items/Item.cs index 32e2e6633..eef252282 100644 --- a/Subsurface/Source/Items/Item.cs +++ b/Subsurface/Source/Items/Item.cs @@ -701,7 +701,7 @@ namespace Barotrauma FindHull(); Vector2 moveAmount = body.SimPosition - body.LastSentPosition; - if (moveAmount != Vector2.Zero && moveAmount.Length() > NetConfig.ItemPosUpdateDistance) + if (parentInventory == null && moveAmount != Vector2.Zero && moveAmount.Length() > NetConfig.ItemPosUpdateDistance) { new NetworkEvent(NetworkEventType.PhysicsBodyPosition, ID, false); }