A 2D tile-based sandbox game.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

InventoryTrait.h 843B

123456789101112131415161718192021222324252627282930313233343536373839
  1. #pragma once
  2. #include <vector>
  3. #include <stdlib.h>
  4. #include "../Vector2.h"
  5. #include "../ItemStack.h"
  6. namespace Swan {
  7. struct InventoryTrait {
  8. struct Inventory;
  9. struct Tag {};
  10. virtual Inventory &get(Tag) = 0;
  11. struct Inventory {
  12. virtual ~Inventory() = default;
  13. virtual int size() = 0;
  14. virtual ItemStack get(int slot) = 0;
  15. virtual ItemStack set(int slot, ItemStack stack) = 0;
  16. virtual ItemStack insert(int slot, ItemStack stack) = 0;
  17. ItemStack insert(ItemStack stack) { return insert(0, stack); }
  18. };
  19. struct BasicInventory: Inventory {
  20. BasicInventory(int size): content(size) {}
  21. std::vector<ItemStack> content;
  22. int size() override { return content.size(); }
  23. ItemStack get(int slot) override;
  24. ItemStack set(int slot, ItemStack stack) override;
  25. ItemStack insert(int slot, ItemStack stack) override;
  26. };
  27. };
  28. }