From 11e4f5699f4041b588340e3e3cddeb824740e701 Mon Sep 17 00:00:00 2001 From: Regalis Date: Wed, 11 May 2016 20:22:32 +0300 Subject: [PATCH] PhysicsBodyPosition networkevents aren't sent for items that are inside an inventory (e.g. carried by a character), items can be moved from the inventory to containers by double clicking --- Subsurface/Source/Items/CharacterInventory.cs | 26 ++++++++++++++++--- Subsurface/Source/Items/Inventory.cs | 2 -- Subsurface/Source/Items/Item.cs | 2 +- 3 files changed, 24 insertions(+), 6 deletions(-) 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); }