#pragma once #include #include #include "ItemFilter.h" #include "ItemModifier.h" class CraftingStorage; class ShapedCraftingStorage; struct ItemInfo { int type; int count; float hp; float maxHp; float durability; float maxDurability; }; class Recipie : public virtual Framework::ReferenceCounter { private: Framework::RCArray filters; Framework::Array inputAmount; Framework::RCArray outputs; Framework::Array outputAmount; public: Recipie(); void addIngredient(ItemFilter* filter, int amount); void addOutput(Item* item, int amount); bool testApplicability(CraftingStorage* zStorage); void apply(CraftingStorage* zStorage); }; class ShapedRecipie : public virtual Framework::ReferenceCounter { private: Framework::RCArray filters; Framework::RCArray modifiers; int width; int height; Item* output; int outputAmount; public: ShapedRecipie(int width, int height); ~ShapedRecipie(); void setIngredient( int x, int y, ItemFilter* filter, ItemModifier* modifier); void setOutput(Item* item, int amount); bool testApplicability(ShapedCraftingStorage* zStorage); void apply(ShapedCraftingStorage* zStorage); Framework::Array getOutput(ShapedCraftingStorage* zStorage); };