コード例 #1
0
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);
}
コード例 #2
0
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);
}
コード例 #3
0
/*
	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;
}
コード例 #4
0
ファイル: content_craft.cpp プロジェクト: Poxpido/minetest
/*
	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;
}