From e2a872ad9038df2d07f1b423c15bae343c57921a Mon Sep 17 00:00:00 2001 From: Regalis Date: Tue, 7 Feb 2017 20:47:24 +0200 Subject: [PATCH] Fixed ItemContainer not setting the position of a contained item when it's placed in the ItemInventory, minor refactoring --- Subsurface/Source/Items/CharacterInventory.cs | 13 +------------ Subsurface/Source/Items/Components/ItemContainer.cs | 8 ++++---- Subsurface/Source/Items/Inventory.cs | 10 ++-------- Subsurface/Source/Items/Item.cs | 3 +++ Subsurface/Source/Items/ItemInventory.cs | 7 ------- 5 files changed, 10 insertions(+), 31 deletions(-) diff --git a/Subsurface/Source/Items/CharacterInventory.cs b/Subsurface/Source/Items/CharacterInventory.cs index eb9aec64c..5f258a8c7 100644 --- a/Subsurface/Source/Items/CharacterInventory.cs +++ b/Subsurface/Source/Items/CharacterInventory.cs @@ -111,18 +111,7 @@ namespace Barotrauma return true; } - - protected override void DropItem(Item item) - { - bool enabled = item.body!=null && item.body.Enabled; - item.Drop(character); - - if (!enabled) - { - item.SetTransform(character.SimPosition, 0.0f); - } - } - + public int FindLimbSlot(InvSlotType limbSlot) { for (int i = 0; i < Items.Length; i++) diff --git a/Subsurface/Source/Items/Components/ItemContainer.cs b/Subsurface/Source/Items/Components/ItemContainer.cs index d9d4c4c68..6eceeaf21 100644 --- a/Subsurface/Source/Items/Components/ItemContainer.cs +++ b/Subsurface/Source/Items/Components/ItemContainer.cs @@ -121,21 +121,21 @@ namespace Barotrauma.Items.Components itemsWithStatusEffects = new List>(); } - public void OnItemContained(Item item) + public void OnItemContained(Item containedItem) { item.SetContainedItemPositions(); - RelatedItem ri = containableItems.Find(x => x.MatchesItem(item)); + RelatedItem ri = containableItems.Find(x => x.MatchesItem(containedItem)); if (ri != null) { foreach (StatusEffect effect in ri.statusEffects) { - itemsWithStatusEffects.Add(Pair.Create(item, effect)); + itemsWithStatusEffects.Add(Pair.Create(containedItem, effect)); } } //no need to Update() if this item has no statuseffects and no physics body - IsActive = itemsWithStatusEffects.Count > 0 || item.body != null; + IsActive = itemsWithStatusEffects.Count > 0 || containedItem.body != null; } public void OnItemRemoved(Item item) diff --git a/Subsurface/Source/Items/Inventory.cs b/Subsurface/Source/Items/Inventory.cs index 21a788543..bd95f5dcd 100644 --- a/Subsurface/Source/Items/Inventory.cs +++ b/Subsurface/Source/Items/Inventory.cs @@ -258,13 +258,7 @@ namespace Barotrauma item.ParentInventory = null; } } - - protected virtual void DropItem(Item item) - { - item.Drop(null); - return; - } - + protected virtual void CreateSlots() { slots = new InventorySlot[capacity]; @@ -311,7 +305,7 @@ namespace Barotrauma { CreateNetworkEvent(); - DropItem(draggingItem); + draggingItem.Drop(); } } diff --git a/Subsurface/Source/Items/Item.cs b/Subsurface/Source/Items/Item.cs index ac5e5f740..b597f2096 100644 --- a/Subsurface/Source/Items/Item.cs +++ b/Subsurface/Source/Items/Item.cs @@ -1549,6 +1549,9 @@ namespace Barotrauma if (Container != null) { + if (body != null) body.Enabled = true; + SetTransform(Container.SimPosition, 0.0f); + Container.RemoveContained(this); Container = null; } diff --git a/Subsurface/Source/Items/ItemInventory.cs b/Subsurface/Source/Items/ItemInventory.cs index a583dee83..324823935 100644 --- a/Subsurface/Source/Items/ItemInventory.cs +++ b/Subsurface/Source/Items/ItemInventory.cs @@ -13,13 +13,6 @@ namespace Barotrauma this.container = container; } - protected override void DropItem(Item item) - { - item.Drop(); - if (item.body != null) item.body.Enabled = true; - item.SetTransform(container.Item.SimPosition, 0.0f); - } - public override int FindAllowedSlot(Item item) { for (int i = 0; i < capacity; i++)