v0.13.0.11
This commit is contained in:
@@ -659,17 +659,33 @@ namespace Barotrauma
|
||||
else
|
||||
{
|
||||
swapSuccessful =
|
||||
(existingItems.All(existingItem => otherInventory.TryPutItem(existingItem, otherIndex, false, false, user, createNetworkEvent)) ||
|
||||
existingItems.Count == 1 && otherInventory.TryPutItem(existingItems.First(),user, CharacterInventory.anySlot, createNetworkEvent))
|
||||
(existingItems.All(existingItem => otherInventory.TryPutItem(existingItem, otherIndex, false, false, user, createNetworkEvent)) ||
|
||||
existingItems.Count == 1 && otherInventory.TryPutItem(existingItems.First(), user, CharacterInventory.anySlot, createNetworkEvent))
|
||||
&&
|
||||
stackedItems.Distinct().All(stackedItem => TryPutItem(stackedItem, index, false, false, user, createNetworkEvent));
|
||||
|
||||
if (!swapSuccessful && existingItems.Count == 1 && existingItems[0].AllowDroppingOnSwapWith(item))
|
||||
{
|
||||
existingItems[0].Drop(user, createNetworkEvent);
|
||||
swapSuccessful = stackedItems.Distinct().Any(stackedItem => TryPutItem(stackedItem, index, false, false, user, createNetworkEvent));
|
||||
#if CLIENT
|
||||
if (swapSuccessful)
|
||||
{
|
||||
SoundPlayer.PlayUISound(GUISoundType.DropItem);
|
||||
if (otherInventory.visualSlots != null && otherIndex > -1)
|
||||
{
|
||||
otherInventory.visualSlots[otherIndex].ShowBorderHighlight(Color.Transparent, 0.1f, 0.1f);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
//if the item in the slot can be moved to the slot of the moved item
|
||||
if (swapSuccessful)
|
||||
{
|
||||
System.Diagnostics.Debug.Assert(slots[index].Contains(item), "Something when wrong when swapping items, item is not present in the inventory.");
|
||||
System.Diagnostics.Debug.Assert(otherInventory.Contains(existingItems.FirstOrDefault()), "Something when wrong when swapping items, item is not present in the other inventory.");
|
||||
System.Diagnostics.Debug.Assert(!existingItems.Any(it => !it.Prefab.AllowDroppingOnSwap && !otherInventory.Contains(it)), "Something when wrong when swapping items, item is not present in the other inventory.");
|
||||
#if CLIENT
|
||||
if (visualSlots != null)
|
||||
{
|
||||
@@ -773,12 +789,12 @@ namespace Barotrauma
|
||||
return match;
|
||||
}
|
||||
|
||||
public List<Item> FindAllItems(Func<Item, bool> predicate, bool recursive = false, List<Item> list = null)
|
||||
public List<Item> FindAllItems(Func<Item, bool> predicate = null, bool recursive = false, List<Item> list = null)
|
||||
{
|
||||
list ??= new List<Item>();
|
||||
foreach (var item in AllItems)
|
||||
{
|
||||
if (predicate(item))
|
||||
if (predicate == null || predicate(item))
|
||||
{
|
||||
list.Add(item);
|
||||
}
|
||||
@@ -826,7 +842,8 @@ namespace Barotrauma
|
||||
{
|
||||
slots[index].Add(item);
|
||||
item.ParentInventory = this;
|
||||
if (item.body != null)
|
||||
bool equipped = (this as CharacterInventory)?.Owner is Character character && character.HasEquippedItem(item);
|
||||
if (item.body != null && !equipped)
|
||||
{
|
||||
item.body.Enabled = false;
|
||||
item.body.BodyType = FarseerPhysics.BodyType.Dynamic;
|
||||
|
||||
Reference in New Issue
Block a user