GUIInventoryMenu::ItemSpec GUIInventoryMenu::getItemAtPos(v2s32 p) const { core::rect<s32> imgrect(0,0,imgsize.X,imgsize.Y); for(u32 i=0; i<m_draw_spec.size(); i++) { const ListDrawSpec &s = m_draw_spec[i]; for(s32 i=0; i<s.geom.X*s.geom.Y; i++) { s32 x = (i%s.geom.X) * spacing.X; s32 y = (i/s.geom.X) * spacing.Y; v2s32 p0(x,y); core::rect<s32> rect = imgrect + s.pos + p0; if(rect.isPointInside(p)) { return ItemSpec(s.inventoryname, s.listname, i); } } } return ItemSpec("", "", -1); }
GUIFormSpecMenu::ItemSpec GUIFormSpecMenu::getItemAtPos(v2s32 p) const { core::rect<s32> imgrect(0,0,imgsize.X,imgsize.Y); for(u32 i=0; i<m_inventorylists.size(); i++) { const ListDrawSpec &s = m_inventorylists[i]; for(s32 i=0; i<s.geom.X*s.geom.Y; i++) { s32 item_i = i + s.start_item_i; s32 x = (i%s.geom.X) * spacing.X; s32 y = (i/s.geom.X) * spacing.Y; v2s32 p0(x,y); core::rect<s32> rect = imgrect + s.pos + p0; if(rect.isPointInside(p)) { return ItemSpec(s.inventoryloc, s.listname, item_i); } } } return ItemSpec(InventoryLocation(), "", -1); }
/* items: actually *items[9] return value: allocates a new item, or returns NULL. */ InventoryItem *craft_get_result(InventoryItem **items) { static CraftDef defs[33]; static int defs_init = 0; // only initialise (and hence allocate) these once if (!defs_init) { // Wood { defs[defs_init].specs[0] = ItemSpec(ITEM_MATERIAL, CONTENT_TREE); defs[defs_init].item = new MaterialItem(CONTENT_WOOD, 4); defs_init++; } // Stick { defs[defs_init].specs[0] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); defs[defs_init].item = new CraftItem("Stick", 4); defs_init++; } // Woodjunlge { defs[defs_init].specs[0] = ItemSpec(ITEM_MATERIAL, CONTENT_JUNGLETREE); defs[defs_init].item = new MaterialItem(CONTENT_WOODJUNGLE, 4); defs_init++; } // Fence { defs[defs_init].specs[3] = ItemSpec(ITEM_CRAFT, "Stick"); defs[defs_init].specs[4] = ItemSpec(ITEM_CRAFT, "Stick"); defs[defs_init].specs[5] = ItemSpec(ITEM_CRAFT, "Stick"); defs[defs_init].specs[6] = ItemSpec(ITEM_CRAFT, "Stick"); defs[defs_init].specs[7] = ItemSpec(ITEM_CRAFT, "Stick"); defs[defs_init].specs[8] = ItemSpec(ITEM_CRAFT, "Stick"); defs[defs_init].item = new MaterialItem(CONTENT_FENCE, 2); defs_init++; } // Sign { defs[defs_init].specs[0] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); defs[defs_init].specs[1] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); defs[defs_init].specs[2] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); defs[defs_init].specs[3] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); defs[defs_init].specs[4] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); defs[defs_init].specs[5] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); defs[defs_init].specs[7] = ItemSpec(ITEM_CRAFT, "Stick"); defs[defs_init].item = new MaterialItem(CONTENT_SIGN_WALL, 1); defs_init++; } // Torch { defs[defs_init].specs[0] = ItemSpec(ITEM_CRAFT, "lump_of_coal"); defs[defs_init].specs[3] = ItemSpec(ITEM_CRAFT, "Stick"); defs[defs_init].item = new MaterialItem(CONTENT_TORCH, 4); defs_init++; } // Wooden pick { defs[defs_init].specs[0] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); defs[defs_init].specs[1] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); defs[defs_init].specs[2] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); defs[defs_init].specs[4] = ItemSpec(ITEM_CRAFT, "Stick"); defs[defs_init].specs[7] = ItemSpec(ITEM_CRAFT, "Stick"); defs[defs_init].item = new ToolItem("WPick", 0); defs_init++; } // Stone pick { defs[defs_init].specs[0] = ItemSpec(ITEM_MATERIAL, CONTENT_COBBLE); defs[defs_init].specs[1] = ItemSpec(ITEM_MATERIAL, CONTENT_COBBLE); defs[defs_init].specs[2] = ItemSpec(ITEM_MATERIAL, CONTENT_COBBLE); defs[defs_init].specs[4] = ItemSpec(ITEM_CRAFT, "Stick"); defs[defs_init].specs[7] = ItemSpec(ITEM_CRAFT, "Stick"); defs[defs_init].item = new ToolItem("STPick", 0); defs_init++; } // Steel pick { defs[defs_init].specs[0] = ItemSpec(ITEM_CRAFT, "steel_ingot"); defs[defs_init].specs[1] = ItemSpec(ITEM_CRAFT, "steel_ingot"); defs[defs_init].specs[2] = ItemSpec(ITEM_CRAFT, "steel_ingot"); defs[defs_init].specs[4] = ItemSpec(ITEM_CRAFT, "Stick"); defs[defs_init].specs[7] = ItemSpec(ITEM_CRAFT, "Stick"); defs[defs_init].item = new ToolItem("SteelPick", 0); defs_init++; } // Mese pick { defs[defs_init].specs[0] = ItemSpec(ITEM_MATERIAL, CONTENT_MESE); defs[defs_init].specs[1] = ItemSpec(ITEM_MATERIAL, CONTENT_MESE); defs[defs_init].specs[2] = ItemSpec(ITEM_MATERIAL, CONTENT_MESE); defs[defs_init].specs[4] = ItemSpec(ITEM_CRAFT, "Stick"); defs[defs_init].specs[7] = ItemSpec(ITEM_CRAFT, "Stick"); defs[defs_init].item = new ToolItem("MesePick", 0); defs_init++; } // Wooden shovel { defs[defs_init].specs[1] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); defs[defs_init].specs[4] = ItemSpec(ITEM_CRAFT, "Stick"); defs[defs_init].specs[7] = ItemSpec(ITEM_CRAFT, "Stick"); defs[defs_init].item = new ToolItem("WShovel", 0); defs_init++; } // Stone shovel { defs[defs_init].specs[1] = ItemSpec(ITEM_MATERIAL, CONTENT_COBBLE); defs[defs_init].specs[4] = ItemSpec(ITEM_CRAFT, "Stick"); defs[defs_init].specs[7] = ItemSpec(ITEM_CRAFT, "Stick"); defs[defs_init].item = new ToolItem("STShovel", 0); defs_init++; } // Steel shovel { defs[defs_init].specs[1] = ItemSpec(ITEM_CRAFT, "steel_ingot"); defs[defs_init].specs[4] = ItemSpec(ITEM_CRAFT, "Stick"); defs[defs_init].specs[7] = ItemSpec(ITEM_CRAFT, "Stick"); defs[defs_init].item = new ToolItem("SteelShovel", 0); defs_init++; } // Wooden axe { defs[defs_init].specs[0] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); defs[defs_init].specs[1] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); defs[defs_init].specs[3] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); defs[defs_init].specs[4] = ItemSpec(ITEM_CRAFT, "Stick"); defs[defs_init].specs[7] = ItemSpec(ITEM_CRAFT, "Stick"); defs[defs_init].item = new ToolItem("WAxe", 0); defs_init++; } // Stone axe { defs[defs_init].specs[0] = ItemSpec(ITEM_MATERIAL, CONTENT_COBBLE); defs[defs_init].specs[1] = ItemSpec(ITEM_MATERIAL, CONTENT_COBBLE); defs[defs_init].specs[3] = ItemSpec(ITEM_MATERIAL, CONTENT_COBBLE); defs[defs_init].specs[4] = ItemSpec(ITEM_CRAFT, "Stick"); defs[defs_init].specs[7] = ItemSpec(ITEM_CRAFT, "Stick"); defs[defs_init].item = new ToolItem("STAxe", 0); defs_init++; } // Steel axe { defs[defs_init].specs[0] = ItemSpec(ITEM_CRAFT, "steel_ingot"); defs[defs_init].specs[1] = ItemSpec(ITEM_CRAFT, "steel_ingot"); defs[defs_init].specs[3] = ItemSpec(ITEM_CRAFT, "steel_ingot"); defs[defs_init].specs[4] = ItemSpec(ITEM_CRAFT, "Stick"); defs[defs_init].specs[7] = ItemSpec(ITEM_CRAFT, "Stick"); defs[defs_init].item = new ToolItem("SteelAxe", 0); defs_init++; } // Wooden sword { defs[defs_init].specs[1] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); defs[defs_init].specs[4] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); defs[defs_init].specs[7] = ItemSpec(ITEM_CRAFT, "Stick"); defs[defs_init].item = new ToolItem("WSword", 0); defs_init++; } // Stone sword { defs[defs_init].specs[1] = ItemSpec(ITEM_MATERIAL, CONTENT_COBBLE); defs[defs_init].specs[4] = ItemSpec(ITEM_MATERIAL, CONTENT_COBBLE); defs[defs_init].specs[7] = ItemSpec(ITEM_CRAFT, "Stick"); defs[defs_init].item = new ToolItem("STSword", 0); defs_init++; } // Steel sword { defs[defs_init].specs[1] = ItemSpec(ITEM_CRAFT, "steel_ingot"); defs[defs_init].specs[4] = ItemSpec(ITEM_CRAFT, "steel_ingot"); defs[defs_init].specs[7] = ItemSpec(ITEM_CRAFT, "Stick"); defs[defs_init].item = new ToolItem("SteelSword", 0); defs_init++; } // Rail { defs[defs_init].specs[0] = ItemSpec(ITEM_CRAFT, "steel_ingot"); defs[defs_init].specs[1] = ItemSpec(ITEM_CRAFT, "Stick"); defs[defs_init].specs[2] = ItemSpec(ITEM_CRAFT, "steel_ingot"); defs[defs_init].specs[3] = ItemSpec(ITEM_CRAFT, "steel_ingot"); defs[defs_init].specs[4] = ItemSpec(ITEM_CRAFT, "Stick"); defs[defs_init].specs[5] = ItemSpec(ITEM_CRAFT, "steel_ingot"); defs[defs_init].specs[6] = ItemSpec(ITEM_CRAFT, "steel_ingot"); defs[defs_init].specs[7] = ItemSpec(ITEM_CRAFT, "Stick"); defs[defs_init].specs[8] = ItemSpec(ITEM_CRAFT, "steel_ingot"); defs[defs_init].item = new MaterialItem(CONTENT_RAIL, 15); defs_init++; } // Chest { defs[defs_init].specs[0] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); defs[defs_init].specs[1] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); defs[defs_init].specs[2] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); defs[defs_init].specs[3] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); defs[defs_init].specs[5] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); defs[defs_init].specs[6] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); defs[defs_init].specs[7] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); defs[defs_init].specs[8] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); defs[defs_init].item = new MaterialItem(CONTENT_CHEST, 1); defs_init++; } // Locking Chest { defs[defs_init].specs[0] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); defs[defs_init].specs[1] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); defs[defs_init].specs[2] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); defs[defs_init].specs[3] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); defs[defs_init].specs[4] = ItemSpec(ITEM_CRAFT, "steel_ingot"); defs[defs_init].specs[5] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); defs[defs_init].specs[6] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); defs[defs_init].specs[7] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); defs[defs_init].specs[8] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); defs[defs_init].item = new MaterialItem(CONTENT_LOCKABLE_CHEST, 1); defs_init++; } // Border Stone { defs[defs_init].specs[0] = ItemSpec(ITEM_MATERIAL, CONTENT_STONE); defs[defs_init].specs[1] = ItemSpec(ITEM_MATERIAL, CONTENT_STONE); defs[defs_init].specs[2] = ItemSpec(ITEM_MATERIAL, CONTENT_STONE); defs[defs_init].specs[3] = ItemSpec(ITEM_MATERIAL, CONTENT_STONE); defs[defs_init].specs[4] = ItemSpec(ITEM_MATERIAL, CONTENT_MESE); defs[defs_init].specs[5] = ItemSpec(ITEM_MATERIAL, CONTENT_STONE); defs[defs_init].specs[6] = ItemSpec(ITEM_MATERIAL, CONTENT_STONE); defs[defs_init].specs[7] = ItemSpec(ITEM_MATERIAL, CONTENT_STONE); defs[defs_init].specs[8] = ItemSpec(ITEM_MATERIAL, CONTENT_STONE); defs[defs_init].item = new MaterialItem(CONTENT_BORDERSTONE, 1); defs_init++; } // Furnace { defs[defs_init].specs[0] = ItemSpec(ITEM_MATERIAL, CONTENT_COBBLE); defs[defs_init].specs[1] = ItemSpec(ITEM_MATERIAL, CONTENT_COBBLE); defs[defs_init].specs[2] = ItemSpec(ITEM_MATERIAL, CONTENT_COBBLE); defs[defs_init].specs[3] = ItemSpec(ITEM_MATERIAL, CONTENT_COBBLE); defs[defs_init].specs[5] = ItemSpec(ITEM_MATERIAL, CONTENT_COBBLE); defs[defs_init].specs[6] = ItemSpec(ITEM_MATERIAL, CONTENT_COBBLE); defs[defs_init].specs[7] = ItemSpec(ITEM_MATERIAL, CONTENT_COBBLE); defs[defs_init].specs[8] = ItemSpec(ITEM_MATERIAL, CONTENT_COBBLE); defs[defs_init].item = new MaterialItem(CONTENT_FURNACE, 1); defs_init++; } // Steel block { defs[defs_init].specs[0] = ItemSpec(ITEM_CRAFT, "steel_ingot"); defs[defs_init].specs[1] = ItemSpec(ITEM_CRAFT, "steel_ingot"); defs[defs_init].specs[2] = ItemSpec(ITEM_CRAFT, "steel_ingot"); defs[defs_init].specs[3] = ItemSpec(ITEM_CRAFT, "steel_ingot"); defs[defs_init].specs[4] = ItemSpec(ITEM_CRAFT, "steel_ingot"); defs[defs_init].specs[5] = ItemSpec(ITEM_CRAFT, "steel_ingot"); defs[defs_init].specs[6] = ItemSpec(ITEM_CRAFT, "steel_ingot"); defs[defs_init].specs[7] = ItemSpec(ITEM_CRAFT, "steel_ingot"); defs[defs_init].specs[8] = ItemSpec(ITEM_CRAFT, "steel_ingot"); defs[defs_init].item = new MaterialItem(CONTENT_STEEL, 1); defs_init++; } // Sandstone { defs[defs_init].specs[3] = ItemSpec(ITEM_MATERIAL, CONTENT_SAND); defs[defs_init].specs[4] = ItemSpec(ITEM_MATERIAL, CONTENT_SAND); defs[defs_init].specs[6] = ItemSpec(ITEM_MATERIAL, CONTENT_SAND); defs[defs_init].specs[7] = ItemSpec(ITEM_MATERIAL, CONTENT_SAND); defs[defs_init].item = new MaterialItem(CONTENT_SANDSTONE, 1); defs_init++; } // Stonebrick { defs[defs_init].specs[3] = ItemSpec(ITEM_MATERIAL, CONTENT_STONE); defs[defs_init].specs[4] = ItemSpec(ITEM_MATERIAL, CONTENT_STONE); defs[defs_init].specs[6] = ItemSpec(ITEM_MATERIAL, CONTENT_STONE); defs[defs_init].specs[7] = ItemSpec(ITEM_MATERIAL, CONTENT_STONE); defs[defs_init].item = new MaterialItem(CONTENT_STONEBRICK, 4); defs_init++; } // Glasslight { defs[defs_init].specs[3] = ItemSpec(ITEM_MATERIAL, CONTENT_GLASS); defs[defs_init].specs[4] = ItemSpec(ITEM_MATERIAL, CONTENT_GLASS); defs[defs_init].specs[6] = ItemSpec(ITEM_MATERIAL, CONTENT_GLASS); defs[defs_init].specs[7] = ItemSpec(ITEM_MATERIAL, CONTENT_GLASS); defs[defs_init].item = new MaterialItem(CONTENT_GLASSLIGHT, 4); defs_init++; } // Steelstonebrick { defs[defs_init].specs[3] = ItemSpec(ITEM_MATERIAL, CONTENT_STONE); defs[defs_init].specs[4] = ItemSpec(ITEM_MATERIAL, CONTENT_MESE); defs[defs_init].specs[6] = ItemSpec(ITEM_MATERIAL, CONTENT_STONE); defs[defs_init].specs[7] = ItemSpec(ITEM_MATERIAL, CONTENT_MESE); defs[defs_init].item = new MaterialItem(CONTENT_STEELSTONEBRICK, 4); defs_init++; } // Coalchecker { defs[defs_init].specs[3] = ItemSpec(ITEM_MATERIAL, CONTENT_STONE); defs[defs_init].specs[4] = ItemSpec(ITEM_MATERIAL, CONTENT_GRAVEL); defs[defs_init].specs[6] = ItemSpec(ITEM_MATERIAL, CONTENT_STONE); defs[defs_init].specs[7] = ItemSpec(ITEM_MATERIAL, CONTENT_GRAVEL); defs[defs_init].item = new MaterialItem(CONTENT_COALCHECKER, 4); defs_init++; } // Clay { defs[defs_init].specs[3] = ItemSpec(ITEM_CRAFT, "lump_of_clay"); defs[defs_init].specs[4] = ItemSpec(ITEM_CRAFT, "lump_of_clay"); defs[defs_init].specs[6] = ItemSpec(ITEM_CRAFT, "lump_of_clay"); defs[defs_init].specs[7] = ItemSpec(ITEM_CRAFT, "lump_of_clay"); defs[defs_init].item = new MaterialItem(CONTENT_CLAY, 1); defs_init++; } // Brick { defs[defs_init].specs[3] = ItemSpec(ITEM_CRAFT, "clay_brick"); defs[defs_init].specs[4] = ItemSpec(ITEM_CRAFT, "clay_brick"); defs[defs_init].specs[6] = ItemSpec(ITEM_CRAFT, "clay_brick"); defs[defs_init].specs[7] = ItemSpec(ITEM_CRAFT, "clay_brick"); defs[defs_init].item = new MaterialItem(CONTENT_BRICK, 1); defs_init++; } // Brickgreen { defs[defs_init].specs[3] = ItemSpec(ITEM_MATERIAL, CONTENT_BRICK); defs[defs_init].specs[4] = ItemSpec(ITEM_MATERIAL, CONTENT_CACTUS); defs[defs_init].specs[6] = ItemSpec(ITEM_MATERIAL, CONTENT_BRICK); defs[defs_init].specs[7] = ItemSpec(ITEM_MATERIAL, CONTENT_CACTUS); defs[defs_init].item = new MaterialItem(CONTENT_BRICKGREEN, 4); defs_init++; } // Cotton { defs[defs_init].specs[3] = ItemSpec(ITEM_MATERIAL, CONTENT_JUNGLEGRASS); defs[defs_init].specs[4] = ItemSpec(ITEM_MATERIAL, CONTENT_JUNGLEGRASS); defs[defs_init].specs[6] = ItemSpec(ITEM_MATERIAL, CONTENT_JUNGLEGRASS); defs[defs_init].specs[7] = ItemSpec(ITEM_MATERIAL, CONTENT_JUNGLEGRASS); defs[defs_init].item = new MaterialItem(CONTENT_COTTON, 1); defs_init++; } // Paper { defs[defs_init].specs[3] = ItemSpec(ITEM_MATERIAL, CONTENT_PAPYRUS); defs[defs_init].specs[4] = ItemSpec(ITEM_MATERIAL, CONTENT_PAPYRUS); defs[defs_init].specs[5] = ItemSpec(ITEM_MATERIAL, CONTENT_PAPYRUS); defs[defs_init].item = new CraftItem("paper", 1); defs_init++; } // Book { defs[defs_init].specs[1] = ItemSpec(ITEM_CRAFT, "paper"); defs[defs_init].specs[4] = ItemSpec(ITEM_CRAFT, "paper"); defs[defs_init].specs[7] = ItemSpec(ITEM_CRAFT, "paper"); defs[defs_init].item = new CraftItem("book", 1); defs_init++; } // Book shelf { defs[defs_init].specs[0] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); defs[defs_init].specs[1] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); defs[defs_init].specs[2] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); defs[defs_init].specs[3] = ItemSpec(ITEM_CRAFT, "book"); defs[defs_init].specs[4] = ItemSpec(ITEM_CRAFT, "book"); defs[defs_init].specs[5] = ItemSpec(ITEM_CRAFT, "book"); defs[defs_init].specs[6] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); defs[defs_init].specs[7] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); defs[defs_init].specs[8] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); defs[defs_init].item = new MaterialItem(CONTENT_BOOKSHELF, 1); defs_init++; } // Ladder { defs[defs_init].specs[0] = ItemSpec(ITEM_CRAFT, "Stick"); defs[defs_init].specs[2] = ItemSpec(ITEM_CRAFT, "Stick"); defs[defs_init].specs[3] = ItemSpec(ITEM_CRAFT, "Stick"); defs[defs_init].specs[4] = ItemSpec(ITEM_CRAFT, "Stick"); defs[defs_init].specs[5] = ItemSpec(ITEM_CRAFT, "Stick"); defs[defs_init].specs[6] = ItemSpec(ITEM_CRAFT, "Stick"); defs[defs_init].specs[8] = ItemSpec(ITEM_CRAFT, "Stick"); defs[defs_init].item = new MaterialItem(CONTENT_LADDER, 1); defs_init++; } // Iron Apple { defs[defs_init].specs[1] = ItemSpec(ITEM_CRAFT, "steel_ingot"); defs[defs_init].specs[3] = ItemSpec(ITEM_CRAFT, "steel_ingot"); defs[defs_init].specs[4] = ItemSpec(ITEM_CRAFT, "apple"); defs[defs_init].specs[5] = ItemSpec(ITEM_CRAFT, "steel_ingot"); defs[defs_init].specs[7] = ItemSpec(ITEM_CRAFT, "steel_ingot"); defs[defs_init].item = new CraftItem("apple_iron", 1); defs_init++; } } for (int i=0; i<defs_init; i++) { if (defs[i] == items) return defs[i].item->clone(); } return NULL; }
/* items: actually *items[9] return value: allocates a new item, or returns NULL. */ InventoryItem *craft_get_result(InventoryItem **items) { // Wood { ItemSpec specs[9]; specs[0] = ItemSpec(ITEM_MATERIAL, CONTENT_TREE); if(checkItemCombination(items, specs)) { return new MaterialItem(CONTENT_WOOD, 4); } } // Stick { ItemSpec specs[9]; specs[0] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); if(checkItemCombination(items, specs)) { return new CraftItem("Stick", 4); } } // Fence { ItemSpec specs[9]; specs[3] = ItemSpec(ITEM_CRAFT, "Stick"); specs[4] = ItemSpec(ITEM_CRAFT, "Stick"); specs[5] = ItemSpec(ITEM_CRAFT, "Stick"); specs[6] = ItemSpec(ITEM_CRAFT, "Stick"); specs[7] = ItemSpec(ITEM_CRAFT, "Stick"); specs[8] = ItemSpec(ITEM_CRAFT, "Stick"); if(checkItemCombination(items, specs)) { return new MaterialItem(CONTENT_FENCE, 2); } } // Sign { ItemSpec specs[9]; specs[0] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); specs[1] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); specs[2] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); specs[3] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); specs[4] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); specs[5] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); specs[7] = ItemSpec(ITEM_CRAFT, "Stick"); if(checkItemCombination(items, specs)) { //return new MapBlockObjectItem("Sign"); return new MaterialItem(CONTENT_SIGN_WALL, 1); } } // Torch { ItemSpec specs[9]; specs[0] = ItemSpec(ITEM_CRAFT, "lump_of_coal"); specs[3] = ItemSpec(ITEM_CRAFT, "Stick"); if(checkItemCombination(items, specs)) { return new MaterialItem(CONTENT_TORCH, 4); } } // Wooden pick { ItemSpec specs[9]; specs[0] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); specs[1] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); specs[2] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); specs[4] = ItemSpec(ITEM_CRAFT, "Stick"); specs[7] = ItemSpec(ITEM_CRAFT, "Stick"); if(checkItemCombination(items, specs)) { return new ToolItem("WPick", 0); } } // Stone pick { ItemSpec specs[9]; specs[0] = ItemSpec(ITEM_MATERIAL, CONTENT_COBBLE); specs[1] = ItemSpec(ITEM_MATERIAL, CONTENT_COBBLE); specs[2] = ItemSpec(ITEM_MATERIAL, CONTENT_COBBLE); specs[4] = ItemSpec(ITEM_CRAFT, "Stick"); specs[7] = ItemSpec(ITEM_CRAFT, "Stick"); if(checkItemCombination(items, specs)) { return new ToolItem("STPick", 0); } } // Steel pick { ItemSpec specs[9]; specs[0] = ItemSpec(ITEM_CRAFT, "steel_ingot"); specs[1] = ItemSpec(ITEM_CRAFT, "steel_ingot"); specs[2] = ItemSpec(ITEM_CRAFT, "steel_ingot"); specs[4] = ItemSpec(ITEM_CRAFT, "Stick"); specs[7] = ItemSpec(ITEM_CRAFT, "Stick"); if(checkItemCombination(items, specs)) { return new ToolItem("SteelPick", 0); } } // Mese pick { ItemSpec specs[9]; specs[0] = ItemSpec(ITEM_MATERIAL, CONTENT_MESE); specs[1] = ItemSpec(ITEM_MATERIAL, CONTENT_MESE); specs[2] = ItemSpec(ITEM_MATERIAL, CONTENT_MESE); specs[4] = ItemSpec(ITEM_CRAFT, "Stick"); specs[7] = ItemSpec(ITEM_CRAFT, "Stick"); if(checkItemCombination(items, specs)) { return new ToolItem("MesePick", 0); } } // Wooden shovel { ItemSpec specs[9]; specs[1] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); specs[4] = ItemSpec(ITEM_CRAFT, "Stick"); specs[7] = ItemSpec(ITEM_CRAFT, "Stick"); if(checkItemCombination(items, specs)) { return new ToolItem("WShovel", 0); } } // Stone shovel { ItemSpec specs[9]; specs[1] = ItemSpec(ITEM_MATERIAL, CONTENT_COBBLE); specs[4] = ItemSpec(ITEM_CRAFT, "Stick"); specs[7] = ItemSpec(ITEM_CRAFT, "Stick"); if(checkItemCombination(items, specs)) { return new ToolItem("STShovel", 0); } } // Steel shovel { ItemSpec specs[9]; specs[1] = ItemSpec(ITEM_CRAFT, "steel_ingot"); specs[4] = ItemSpec(ITEM_CRAFT, "Stick"); specs[7] = ItemSpec(ITEM_CRAFT, "Stick"); if(checkItemCombination(items, specs)) { return new ToolItem("SteelShovel", 0); } } // Wooden axe { ItemSpec specs[9]; specs[0] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); specs[1] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); specs[3] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); specs[4] = ItemSpec(ITEM_CRAFT, "Stick"); specs[7] = ItemSpec(ITEM_CRAFT, "Stick"); if(checkItemCombination(items, specs)) { return new ToolItem("WAxe", 0); } } // Stone axe { ItemSpec specs[9]; specs[0] = ItemSpec(ITEM_MATERIAL, CONTENT_COBBLE); specs[1] = ItemSpec(ITEM_MATERIAL, CONTENT_COBBLE); specs[3] = ItemSpec(ITEM_MATERIAL, CONTENT_COBBLE); specs[4] = ItemSpec(ITEM_CRAFT, "Stick"); specs[7] = ItemSpec(ITEM_CRAFT, "Stick"); if(checkItemCombination(items, specs)) { return new ToolItem("STAxe", 0); } } // Steel axe { ItemSpec specs[9]; specs[0] = ItemSpec(ITEM_CRAFT, "steel_ingot"); specs[1] = ItemSpec(ITEM_CRAFT, "steel_ingot"); specs[3] = ItemSpec(ITEM_CRAFT, "steel_ingot"); specs[4] = ItemSpec(ITEM_CRAFT, "Stick"); specs[7] = ItemSpec(ITEM_CRAFT, "Stick"); if(checkItemCombination(items, specs)) { return new ToolItem("SteelAxe", 0); } } // Wooden sword { ItemSpec specs[9]; specs[1] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); specs[4] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); specs[7] = ItemSpec(ITEM_CRAFT, "Stick"); if(checkItemCombination(items, specs)) { return new ToolItem("WSword", 0); } } // Stone sword { ItemSpec specs[9]; specs[1] = ItemSpec(ITEM_MATERIAL, CONTENT_COBBLE); specs[4] = ItemSpec(ITEM_MATERIAL, CONTENT_COBBLE); specs[7] = ItemSpec(ITEM_CRAFT, "Stick"); if(checkItemCombination(items, specs)) { return new ToolItem("STSword", 0); } } // Steel sword { ItemSpec specs[9]; specs[1] = ItemSpec(ITEM_CRAFT, "steel_ingot"); specs[4] = ItemSpec(ITEM_CRAFT, "steel_ingot"); specs[7] = ItemSpec(ITEM_CRAFT, "Stick"); if(checkItemCombination(items, specs)) { return new ToolItem("SteelSword", 0); } } // Rail { ItemSpec specs[9]; specs[0] = ItemSpec(ITEM_CRAFT, "steel_ingot"); specs[1] = ItemSpec(ITEM_CRAFT, "Stick"); specs[2] = ItemSpec(ITEM_CRAFT, "steel_ingot"); specs[3] = ItemSpec(ITEM_CRAFT, "steel_ingot"); specs[4] = ItemSpec(ITEM_CRAFT, "Stick"); specs[5] = ItemSpec(ITEM_CRAFT, "steel_ingot"); specs[6] = ItemSpec(ITEM_CRAFT, "steel_ingot"); specs[7] = ItemSpec(ITEM_CRAFT, "Stick"); specs[8] = ItemSpec(ITEM_CRAFT, "steel_ingot"); if(checkItemCombination(items, specs)) { return new MaterialItem(CONTENT_RAIL, 15); } } // Chest { ItemSpec specs[9]; specs[0] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); specs[1] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); specs[2] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); specs[3] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); specs[5] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); specs[6] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); specs[7] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); specs[8] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); if(checkItemCombination(items, specs)) { return new MaterialItem(CONTENT_CHEST, 1); } } // Furnace { ItemSpec specs[9]; specs[0] = ItemSpec(ITEM_MATERIAL, CONTENT_COBBLE); specs[1] = ItemSpec(ITEM_MATERIAL, CONTENT_COBBLE); specs[2] = ItemSpec(ITEM_MATERIAL, CONTENT_COBBLE); specs[3] = ItemSpec(ITEM_MATERIAL, CONTENT_COBBLE); specs[5] = ItemSpec(ITEM_MATERIAL, CONTENT_COBBLE); specs[6] = ItemSpec(ITEM_MATERIAL, CONTENT_COBBLE); specs[7] = ItemSpec(ITEM_MATERIAL, CONTENT_COBBLE); specs[8] = ItemSpec(ITEM_MATERIAL, CONTENT_COBBLE); if(checkItemCombination(items, specs)) { return new MaterialItem(CONTENT_FURNACE, 1); } } // Steel block { ItemSpec specs[9]; specs[0] = ItemSpec(ITEM_CRAFT, "steel_ingot"); specs[1] = ItemSpec(ITEM_CRAFT, "steel_ingot"); specs[2] = ItemSpec(ITEM_CRAFT, "steel_ingot"); specs[3] = ItemSpec(ITEM_CRAFT, "steel_ingot"); specs[4] = ItemSpec(ITEM_CRAFT, "steel_ingot"); specs[5] = ItemSpec(ITEM_CRAFT, "steel_ingot"); specs[6] = ItemSpec(ITEM_CRAFT, "steel_ingot"); specs[7] = ItemSpec(ITEM_CRAFT, "steel_ingot"); specs[8] = ItemSpec(ITEM_CRAFT, "steel_ingot"); if(checkItemCombination(items, specs)) { return new MaterialItem(CONTENT_STEEL, 1); } } // Sandstone { ItemSpec specs[9]; specs[3] = ItemSpec(ITEM_MATERIAL, CONTENT_SAND); specs[4] = ItemSpec(ITEM_MATERIAL, CONTENT_SAND); specs[6] = ItemSpec(ITEM_MATERIAL, CONTENT_SAND); specs[7] = ItemSpec(ITEM_MATERIAL, CONTENT_SAND); if(checkItemCombination(items, specs)) { return new MaterialItem(CONTENT_SANDSTONE, 1); } } // Clay { ItemSpec specs[9]; specs[3] = ItemSpec(ITEM_CRAFT, "lump_of_clay"); specs[4] = ItemSpec(ITEM_CRAFT, "lump_of_clay"); specs[6] = ItemSpec(ITEM_CRAFT, "lump_of_clay"); specs[7] = ItemSpec(ITEM_CRAFT, "lump_of_clay"); if(checkItemCombination(items, specs)) { return new MaterialItem(CONTENT_CLAY, 1); } } // Brick { ItemSpec specs[9]; specs[3] = ItemSpec(ITEM_CRAFT, "clay_brick"); specs[4] = ItemSpec(ITEM_CRAFT, "clay_brick"); specs[6] = ItemSpec(ITEM_CRAFT, "clay_brick"); specs[7] = ItemSpec(ITEM_CRAFT, "clay_brick"); if(checkItemCombination(items, specs)) { return new MaterialItem(CONTENT_BRICK, 1); } } // Paper { ItemSpec specs[9]; specs[3] = ItemSpec(ITEM_MATERIAL, CONTENT_PAPYRUS); specs[4] = ItemSpec(ITEM_MATERIAL, CONTENT_PAPYRUS); specs[5] = ItemSpec(ITEM_MATERIAL, CONTENT_PAPYRUS); if(checkItemCombination(items, specs)) { return new CraftItem("paper", 1); } } // Book { ItemSpec specs[9]; specs[1] = ItemSpec(ITEM_CRAFT, "paper"); specs[4] = ItemSpec(ITEM_CRAFT, "paper"); specs[7] = ItemSpec(ITEM_CRAFT, "paper"); if(checkItemCombination(items, specs)) { return new CraftItem("book", 1); } } // Book shelf { ItemSpec specs[9]; specs[0] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); specs[1] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); specs[2] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); specs[3] = ItemSpec(ITEM_CRAFT, "book"); specs[4] = ItemSpec(ITEM_CRAFT, "book"); specs[5] = ItemSpec(ITEM_CRAFT, "book"); specs[6] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); specs[7] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); specs[8] = ItemSpec(ITEM_MATERIAL, CONTENT_WOOD); if(checkItemCombination(items, specs)) { return new MaterialItem(CONTENT_BOOKSHELF, 1); } } // Ladder { ItemSpec specs[9]; specs[0] = ItemSpec(ITEM_CRAFT, "Stick"); specs[2] = ItemSpec(ITEM_CRAFT, "Stick"); specs[3] = ItemSpec(ITEM_CRAFT, "Stick"); specs[4] = ItemSpec(ITEM_CRAFT, "Stick"); specs[5] = ItemSpec(ITEM_CRAFT, "Stick"); specs[6] = ItemSpec(ITEM_CRAFT, "Stick"); specs[8] = ItemSpec(ITEM_CRAFT, "Stick"); if(checkItemCombination(items, specs)) { return new MaterialItem(CONTENT_LADDER, 1); } } return NULL; }