MCPcopy Create free account
hub / github.com/TurningWheel/Barony / getItemStackingBehavior

Function getItemStackingBehavior

src/items.cpp:4376–4440  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4374}
4375
4376ItemStackResult getItemStackingBehavior(const int player, Item* itemToCheck, Item* itemDestinationStack, int& newQtyForCheckedItem, int& newQtyForDestItem)
4377{
4378 ItemStackResult itemStackResult;
4379 itemStackResult.itemToStackInto = nullptr;
4380 if ( !itemToCheck )
4381 {
4382 itemStackResult.resultType = ITEM_STACKING_ERROR;
4383 return itemStackResult;
4384 }
4385
4386 if ( itemDestinationStack )
4387 {
4388 return getItemStackingBehaviorIndividualItemCheck(player, itemToCheck, itemDestinationStack, newQtyForCheckedItem, newQtyForDestItem);
4389 }
4390
4391 itemStackResult.resultType = ITEM_ADDED_WITHOUT_NEEDING_STACK;
4392 newQtyForCheckedItem = itemToCheck->count;
4393 newQtyForDestItem = 0;
4394
4395 for ( node_t* node = stats[player]->inventory.first; node != nullptr; node = node->next )
4396 {
4397 Item* item2 = static_cast<Item*>(node->element);
4398 if ( item2 )
4399 {
4400 int tmpQtyCheckedItem = newQtyForCheckedItem;
4401 int tmpQtyDestItem = newQtyForDestItem;
4402 auto res = getItemStackingBehaviorIndividualItemCheck(player, itemToCheck, item2, tmpQtyCheckedItem, tmpQtyDestItem);
4403 bool skipResult = false;
4404 switch ( res.resultType )
4405 {
4406 case ITEM_DESTINATION_NOT_SAME_ITEM:
4407 case ITEM_STACKING_ERROR:
4408 case ITEM_DESTINATION_STACK_IS_FULL:
4409 skipResult = true;
4410 break;
4411 default:
4412 break;
4413 }
4414 if ( skipResult )
4415 {
4416 continue;
4417 }
4418
4419 // found a stack to add this item to
4420 newQtyForCheckedItem = tmpQtyCheckedItem;
4421 newQtyForDestItem = tmpQtyDestItem;
4422 res.itemToStackInto = item2;
4423 return res;
4424 }
4425 }
4426
4427 itemStackResult.resultType = ITEM_ADDED_WITHOUT_NEEDING_STACK;
4428 int maxStack = itemToCheck->getMaxStackLimit(player);
4429 if ( itemToCheck->count > maxStack )
4430 {
4431 newQtyForCheckedItem = itemToCheck->count - maxStack;
4432 newQtyForDestItem = maxStack;
4433 }

Callers 4

dragDropStackChestItemsFunction · 0.85
releaseChestItemFunction · 0.85
releaseItemFunction · 0.85

Tested by

no test coverage detected