]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/craftdef.h
Merge pull request #1825 from Zeno-/control_key_cache
[dragonfireclient.git] / src / craftdef.h
index 107b4cf987f9a3f91af825ef02e044ea5a7517cf..14dc530031ba4eaa834eb49ccfc08e112ae3cd63 100644 (file)
@@ -1,6 +1,6 @@
 /*
-Minetest-c55
-Copyright (C) 2011 celeron55, Perttu Ahola <celeron55@gmail.com>
+Minetest
+Copyright (C) 2013 celeron55, Perttu Ahola <celeron55@gmail.com>
 
 This program is free software; you can redistribute it and/or modify
 it under the terms of the GNU Lesser General Public License as published by
@@ -130,6 +130,8 @@ class CraftDefinition
        // Returns the output structure, meaning depends on crafting method
        // The implementation can assume that check(input) returns true
        virtual CraftOutput getOutput(const CraftInput &input, IGameDef *gamedef) const=0;
+       // the inverse of the above
+       virtual CraftInput getInput(const CraftOutput &output, IGameDef *gamedef) const=0;
        // Decreases count of every input item
        virtual void decrementInput(CraftInput &input, IGameDef *gamedef) const=0;
 
@@ -164,6 +166,7 @@ class CraftDefinitionShaped: public CraftDefinition
        virtual std::string getName() const;
        virtual bool check(const CraftInput &input, IGameDef *gamedef) const;
        virtual CraftOutput getOutput(const CraftInput &input, IGameDef *gamedef) const;
+       virtual CraftInput getInput(const CraftOutput &output, IGameDef *gamedef) const;
        virtual void decrementInput(CraftInput &input, IGameDef *gamedef) const;
 
        virtual std::string dump() const;
@@ -205,6 +208,7 @@ class CraftDefinitionShapeless: public CraftDefinition
        virtual std::string getName() const;
        virtual bool check(const CraftInput &input, IGameDef *gamedef) const;
        virtual CraftOutput getOutput(const CraftInput &input, IGameDef *gamedef) const;
+       virtual CraftInput getInput(const CraftOutput &output, IGameDef *gamedef) const;
        virtual void decrementInput(CraftInput &input, IGameDef *gamedef) const;
 
        virtual std::string dump() const;
@@ -242,6 +246,7 @@ class CraftDefinitionToolRepair: public CraftDefinition
        virtual std::string getName() const;
        virtual bool check(const CraftInput &input, IGameDef *gamedef) const;
        virtual CraftOutput getOutput(const CraftInput &input, IGameDef *gamedef) const;
+       virtual CraftInput getInput(const CraftOutput &output, IGameDef *gamedef) const;
        virtual void decrementInput(CraftInput &input, IGameDef *gamedef) const;
 
        virtual std::string dump() const;
@@ -281,6 +286,7 @@ class CraftDefinitionCooking: public CraftDefinition
        virtual std::string getName() const;
        virtual bool check(const CraftInput &input, IGameDef *gamedef) const;
        virtual CraftOutput getOutput(const CraftInput &input, IGameDef *gamedef) const;
+       virtual CraftInput getInput(const CraftOutput &output, IGameDef *gamedef) const;
        virtual void decrementInput(CraftInput &input, IGameDef *gamedef) const;
 
        virtual std::string dump() const;
@@ -320,6 +326,7 @@ class CraftDefinitionFuel: public CraftDefinition
        virtual std::string getName() const;
        virtual bool check(const CraftInput &input, IGameDef *gamedef) const;
        virtual CraftOutput getOutput(const CraftInput &input, IGameDef *gamedef) const;
+       virtual CraftInput getInput(const CraftOutput &output, IGameDef *gamedef) const;
        virtual void decrementInput(CraftInput &input, IGameDef *gamedef) const;
 
        virtual std::string dump() const;
@@ -349,6 +356,10 @@ class ICraftDefManager
        // The main crafting function
        virtual bool getCraftResult(CraftInput &input, CraftOutput &output,
                        bool decrementInput, IGameDef *gamedef) const=0;
+       virtual bool getCraftRecipe(CraftInput &input, CraftOutput &output,
+                       IGameDef *gamedef) const=0;
+       virtual std::vector<CraftDefinition*> getCraftRecipes(CraftOutput &output,
+                       IGameDef *gamedef) const=0;
        
        // Print crafting recipes for debugging
        virtual std::string dump() const=0;
@@ -365,6 +376,10 @@ class IWritableCraftDefManager : public ICraftDefManager
        // The main crafting function
        virtual bool getCraftResult(CraftInput &input, CraftOutput &output,
                        bool decrementInput, IGameDef *gamedef) const=0;
+       virtual bool getCraftRecipe(CraftInput &input, CraftOutput &output,
+                       IGameDef *gamedef) const=0;
+       virtual std::vector<CraftDefinition*> getCraftRecipes(CraftOutput &output, 
+                       IGameDef *gamedef) const=0;
 
        // Print crafting recipes for debugging
        virtual std::string dump() const=0;