#pragma once #include #include #include "ItemFilter.h" #include "CraftingStorage.h" 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; int width; int height; Item* output; int outputAmount; public: ShapedRecipie(int width, int height); ~ShapedRecipie(); void setIngredient(int x, int y, ItemFilter* filter); void setOutput(Item* item, int amount); bool testApplicability(ShapedCraftingStorage* zStorage); void apply(ShapedCraftingStorage* zStorage); };