v0.11.0.9

This commit is contained in:
Joonas Rikkonen
2020-12-09 16:34:16 +02:00
parent bbf06f0984
commit f433a7ba10
325 changed files with 13947 additions and 3652 deletions
@@ -120,7 +120,8 @@ namespace Barotrauma
/// </summary>
/// <param name="receivers">Entities that were deleted or added</param>
/// <param name="wasDeleted">Whether or not all entities are or are going to be deleted</param>
public AddOrDeleteCommand(List<MapEntity> receivers, bool wasDeleted)
/// <param name="handleInventoryBehavior">Ignore item inventories when set to false, workaround for pasting</param>
public AddOrDeleteCommand(List<MapEntity> receivers, bool wasDeleted, bool handleInventoryBehavior = true)
{
WasDeleted = wasDeleted;
Receivers = receivers;
@@ -151,14 +152,17 @@ namespace Barotrauma
}
}
if (itemsToDelete.Any())
if (itemsToDelete.Any() && handleInventoryBehavior)
{
ContainedItemsCommand.Add(new AddOrDeleteCommand(itemsToDelete, true));
foreach (MapEntity item in itemsToDelete)
ContainedItemsCommand.Add(new AddOrDeleteCommand(itemsToDelete, wasDeleted));
if (wasDeleted)
{
if (item != null && !item.Removed)
foreach (MapEntity item in itemsToDelete)
{
item.Remove();
if (item != null && !item.Removed)
{
item.Remove();
}
}
}
}
@@ -226,10 +230,10 @@ namespace Barotrauma
Debug.Assert(Receivers.All(entity => entity.GetReplacementOrThis().Removed), "Tried to redo a deletion but some items were not deleted");
List<MapEntity> clones = MapEntity.Clone(CloneList);
for (int i = 0; i < Math.Min(Receivers.Count, clones.Count); i++)
int length = Math.Min(Receivers.Count, clones.Count);
for (int i = 0; i < length; i++)
{
MapEntity clone = clones[i];
MapEntity receiver = Receivers[i];
MapEntity clone = clones[i], receiver = Receivers[i];
if (receiver.GetReplacementOrThis() is Item item && clone is Item cloneItem)
{
@@ -252,6 +256,11 @@ namespace Barotrauma
}
receiver.GetReplacementOrThis().ReplacedBy = clone;
}
for (int i = 0; i < length; i++)
{
MapEntity clone = clones[i], receiver = Receivers[i];
if (clone is Item it)
{