1
0
mirror of https://github.com/luanti-org/luanti.git synced 2025-10-13 00:25:19 +02:00

Add InventoryList width property & allow custom crafting grids.

This commit is contained in:
Ilya Zhuravlev
2012-08-20 01:29:56 +04:00
committed by Perttu Ahola
parent 43ebec2be1
commit 6a16075912
7 changed files with 69 additions and 8 deletions

View File

@@ -769,18 +769,16 @@ bool getCraftingResult(Inventory *inv, ItemStack& result,
result.clear();
// TODO: Allow different sizes of crafting grids
// Get the InventoryList in which we will operate
InventoryList *clist = inv->getList("craft");
if(!clist || clist->getSize() != 9)
if(!clist)
return false;
// Mangle crafting grid to an another format
CraftInput ci;
ci.method = CRAFT_METHOD_NORMAL;
ci.width = 3;
for(u16 i=0; i<9; i++)
ci.width = clist->getWidth() ? clist->getWidth() : 3;
for(u16 i=0; i<clist->getSize(); i++)
ci.items.push_back(clist->getItem(i));
// Find out what is crafted and add it to result item slot
@@ -793,7 +791,7 @@ bool getCraftingResult(Inventory *inv, ItemStack& result,
if(found && decrementInput)
{
// CraftInput has been changed, apply changes in clist
for(u16 i=0; i<9; i++)
for(u16 i=0; i<clist->getSize(); i++)
{
clist->changeItem(i, ci.items[i]);
}