CraftingStorage.h 2.0 KB

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