Add a third log output interface method
[oweals/minetest.git] / src / content_inventory.cpp
index 3222506067169eb5af7be5805162fdc34dde07f8..21acad30740b64687753fbc05cd376fafc26309e 100644 (file)
@@ -22,30 +22,11 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #include "content_mapnode.h"
 //#include "serverobject.h"
 #include "content_sao.h"
+//#include "gamedef.h"
+//#include "nodedef.h"
 
-bool item_material_is_cookable(content_t content)
-{
-       if(content == CONTENT_TREE)
-               return true;
-       else if(content == CONTENT_COBBLE)
-               return true;
-       else if(content == CONTENT_SAND)
-               return true;
-       return false;
-}
-
-InventoryItem* item_material_create_cook_result(content_t content)
-{
-       if(content == CONTENT_TREE)
-               return new CraftItem("lump_of_coal", 1);
-       else if(content == CONTENT_COBBLE)
-               return new MaterialItem(CONTENT_STONE, 1);
-       else if(content == CONTENT_SAND)
-               return new MaterialItem(CONTENT_GLASS, 1);
-       return NULL;
-}
-
-std::string item_craft_get_image_name(const std::string &subname)
+std::string item_craft_get_image_name(const std::string &subname,
+               IGameDef *gamedef)
 {
        if(subname == "Stick")
                return "stick.png";
@@ -65,52 +46,95 @@ std::string item_craft_get_image_name(const std::string &subname)
                return "clay_brick.png";
        else if(subname == "rat")
                return "rat.png";
+       else if(subname == "cooked_rat")
+               return "cooked_rat.png";
+       else if(subname == "scorched_stuff")
+               return "scorched_stuff.png";
        else if(subname == "firefly")
                return "firefly.png";
+       else if(subname == "apple")
+               return "apple.png^[forcesingle";
+       else if(subname == "apple_iron")
+               return "apple_iron.png";
+       else if(subname == "testobject1") // test object
+               return "unknown_block.png^[forcesingle";
        else
                return "cloud.png"; // just something
 }
 
 ServerActiveObject* item_craft_create_object(const std::string &subname,
-               ServerEnvironment *env, u16 id, v3f pos)
+               ServerEnvironment *env, v3f pos)
 {
        if(subname == "rat")
        {
-               ServerActiveObject *obj = new RatSAO(env, id, pos);
+               ServerActiveObject *obj = new RatSAO(env, pos);
                return obj;
        }
        else if(subname == "firefly")
        {
-               ServerActiveObject *obj = new FireflySAO(env, id, pos);
+               ServerActiveObject *obj = new FireflySAO(env, pos);
+               return obj;
+       }
+       else if(subname == "testobject1")
+       {
+               ServerActiveObject *obj = new LuaEntitySAO(env, pos, "testentity", "");
                return obj;
        }
 
        return NULL;
 }
 
-s16 item_craft_get_drop_count(const std::string &subname)
+s16 item_craft_get_drop_count(const std::string &subname, IGameDef *gamedef)
 {
-       if(subname == "rat" || subname == "firefly")
+       if(subname == "rat" || subname == "firefly" || subname == "testobject1")
                return 1;
 
        return -1;
 }
 
-bool item_craft_is_cookable(const std::string &subname)
+bool item_craft_is_cookable(const std::string &subname, IGameDef *gamedef)
 {
-       if(subname == "lump_of_iron" || subname == "lump_of_clay")
+       if(subname == "lump_of_iron" || subname == "lump_of_clay" || subname == "rat" || subname == "cooked_rat")
                return true;
                
        return false;
 }
 
-InventoryItem* item_craft_create_cook_result(const std::string &subname)
+InventoryItem* item_craft_create_cook_result(const std::string &subname,
+               IGameDef *gamedef)
 {
        if(subname == "lump_of_iron")
-               return new CraftItem("steel_ingot", 1);
+               return new CraftItem(gamedef, "steel_ingot", 1);
        else if(subname == "lump_of_clay")
-               return new CraftItem("clay_brick", 1);
+               return new CraftItem(gamedef, "clay_brick", 1);
+       else if(subname == "rat")
+               return new CraftItem(gamedef, "cooked_rat", 1);
+       else if(subname == "cooked_rat")
+               return new CraftItem(gamedef, "scorched_stuff", 1);
 
        return NULL;
 }
 
+bool item_craft_is_eatable(const std::string &subname, IGameDef *gamedef)
+{
+       if(subname == "cooked_rat")
+               return true;
+       else if(subname == "apple")
+               return true;
+       else if(subname == "apple_iron")
+               return true;
+       return false;
+}
+
+s16 item_craft_eat_hp_change(const std::string &subname, IGameDef *gamedef)
+{
+       if(subname == "cooked_rat")
+               return 6; // 3 hearts
+       else if(subname == "apple")
+               return 4; // 2 hearts
+       else if(subname == "apple_iron")
+               return 8; // 4 hearts
+       return 0;
+}
+
+