Skip to content
Permalink
Browse files

Fix Inventory::moveItemSomewhere()

  • Loading branch information...
sfan5 committed Sep 3, 2019
1 parent f3acdd3 commit 45826911048388c8b744961bb9e8de1549559d0a
Showing with 5 additions and 19 deletions.
  1. +5 −19 src/inventory.cpp
@@ -717,27 +717,13 @@ void InventoryList::moveItemSomewhere(u32 i, InventoryList *dest, u32 count)
if (item1.empty())
return;

// Try to add the item to destination list
u32 dest_size = dest->getSize();
// First try all the non-empty slots
for (u32 dest_i = 0; dest_i < dest_size; dest_i++) {
if (!m_items[dest_i].empty()) {
item1 = dest->addItem(dest_i, item1);
if (item1.empty()) return;
}
}
ItemStack leftover;
leftover = dest->addItem(item1);

// Then try all the empty ones
for (u32 dest_i = 0; dest_i < dest_size; dest_i++) {
if (m_items[dest_i].empty()) {
item1 = dest->addItem(dest_i, item1);
if (item1.empty()) return;
}
if (!leftover.empty()) {
// Add the remaining part back to the source item
addItem(i, leftover);
}

// If we reach this, the item was not fully added
// Add the remaining part back to the source item
addItem(i, item1);
}

u32 InventoryList::moveItem(u32 i, InventoryList *dest, u32 dest_i,

0 comments on commit 4582691

Please sign in to comment.
You can’t perform that action at this time.