diff options
author | Lukas Pioch <lukas@zgow.de> | 2015-09-24 10:48:33 +0200 |
---|---|---|
committer | Lukas Pioch <lukas@zgow.de> | 2015-11-03 18:00:55 +0100 |
commit | 9749c3aac9dbfbc46a919193c97bb9c9e5339e03 (patch) | |
tree | 7ea9f3b0029bbf5041c2f05c7d3f3e156c3e6186 /src/BrewingRecipes.h | |
parent | Merge pull request #2595 from cengizIO/master (diff) | |
download | cuberite-9749c3aac9dbfbc46a919193c97bb9c9e5339e03.tar cuberite-9749c3aac9dbfbc46a919193c97bb9c9e5339e03.tar.gz cuberite-9749c3aac9dbfbc46a919193c97bb9c9e5339e03.tar.bz2 cuberite-9749c3aac9dbfbc46a919193c97bb9c9e5339e03.tar.lz cuberite-9749c3aac9dbfbc46a919193c97bb9c9e5339e03.tar.xz cuberite-9749c3aac9dbfbc46a919193c97bb9c9e5339e03.tar.zst cuberite-9749c3aac9dbfbc46a919193c97bb9c9e5339e03.zip |
Diffstat (limited to 'src/BrewingRecipes.h')
-rw-r--r-- | src/BrewingRecipes.h | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/src/BrewingRecipes.h b/src/BrewingRecipes.h new file mode 100644 index 000000000..82fb0b822 --- /dev/null +++ b/src/BrewingRecipes.h @@ -0,0 +1,55 @@ + +#pragma once + + + + + +class cItem; + + + + + +class cBrewingRecipes +{ +public: + cBrewingRecipes(void); + ~cBrewingRecipes(); + + void ReloadRecipes(void); + + struct cRecipe + { + cRecipe() {} + cRecipe(cRecipe &&) {} + + cRecipe(const cRecipe&) = delete; + cRecipe & operator=(const cRecipe&) = delete; + + std::unique_ptr<cItem> Input; + std::unique_ptr<cItem> Output; + std::unique_ptr<cItem> Ingredient; + }; + + /** Returns a recipe for the specified input, nullptr if no recipe found */ + const cRecipe * GetRecipeFrom(const cItem & a_Input, const cItem & a_Ingredient) const; + + /** Returns true if the item is a ingredient, false if not. */ + bool IsIngredient(const cItem & a_Ingredient) const; + + /** Returns true if the item is a bottle / potion, false if not. */ + bool IsBottle(const cItem & a_Bottle) const; +private: + void ClearRecipes(void); + + /** Parses the recipe contained in the line, adds it to m_pState's recipes. + Logs a warning to the console on input error. */ + void AddRecipeFromLine(const AString & a_Line, unsigned int a_LineNum); + + /** Parses an item string, returns true if successful. */ + bool ParseItem(const AString & a_String, cItem & a_Item); + + struct sBrewingRecipeState; + std::unique_ptr<sBrewingRecipeState> m_pState; +}; |