CraftingStorage.h 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #pragma once
  2. #include <Array.h>
  3. #include <Vec3.h>
  4. #include "Inventory.h"
  5. #include "ItemSlot.h"
  6. #include "ItemStack.h"
  7. #include "Recipie.h"
  8. class CraftingStorage
  9. {
  10. public:
  11. virtual bool isAllAvailable(Framework::RCArray<RecipieInput>& inputs) = 0;
  12. virtual bool hasFreeSpace(const Item* zItem, int amount) = 0;
  13. virtual void consume(Framework::RCArray<RecipieInput>& inputs) = 0;
  14. virtual void addCraftingResult(ItemStack* zStack) = 0;
  15. virtual Framework::Vec3<float> getStorageLocation() const = 0;
  16. virtual int getStorageDimensionId() const = 0;
  17. };
  18. class ShapedCraftingStorage : public CraftingStorage
  19. {
  20. public:
  21. virtual bool isAllAvailable(
  22. Framework::RCArray<RecipieInput>& inputs, int width, int height)
  23. = 0;
  24. virtual bool consume(
  25. Framework::RCArray<RecipieInput>& inputs, int width, int height)
  26. = 0;
  27. };
  28. class BasicShapedCrafter : public ShapedCraftingStorage
  29. {
  30. private:
  31. Framework::Array<ItemSlot*> craftingInput;
  32. Inventory* zInventory;
  33. Recipie* currentRecipie;
  34. Framework::Text recipieList;
  35. int width;
  36. int height;
  37. void getOutputPreview(NetworkMessage* zMsg);
  38. public:
  39. BasicShapedCrafter(int width,
  40. int height,
  41. Inventory* zInventory,
  42. Framework::Text recipieList);
  43. virtual bool isAllAvailable(Framework::RCArray<RecipieInput>& inputs,
  44. int width,
  45. int height) override;
  46. virtual bool isAllAvailable(
  47. Framework::RCArray<RecipieInput>& inputs) override;
  48. virtual bool hasFreeSpace(const Item* zItem, int amount) override;
  49. virtual bool consume(Framework::RCArray<RecipieInput>& inputs,
  50. int width,
  51. int height) override;
  52. virtual void consume(Framework::RCArray<RecipieInput>& inputs) override;
  53. virtual void addCraftingResult(ItemStack* zStack) override;
  54. void applyCurrentRecipie();
  55. void calculateOutputPreview();
  56. virtual Framework::Vec3<float> getStorageLocation() const override;
  57. virtual int getStorageDimensionId() const override;
  58. };