InventoryView.h 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #pragma once
  2. #include <UIMLView.h>
  3. #include <Either.h>
  4. #include <VecN.h>
  5. #include "NetworkAPIProcessor.h"
  6. class InventoryElement : public Framework::UIMLElement
  7. {
  8. public:
  9. InventoryElement();
  10. //! prüft, ob dieses UIML Element für ein bestimmtes xml Element zuständig ist
  11. bool isApplicableFor(Framework::XML::Element& element) override;
  12. //! erstellt eine neue Zeichnung zu einem gegebenen xml Element
  13. Framework::Zeichnung* parseElement(Framework::XML::Element& element, Framework::UIMLContainer& generalFactory) override;
  14. //! wendet die layout parameter zu einer Zeichnung an
  15. void layout(Framework::XML::Element& element, Framework::Zeichnung& z, int pWidth, int pHeight, Framework::UIMLContainer& generalLayouter) override;
  16. };
  17. struct SlotInfo
  18. {
  19. int id;
  20. int itemCount;
  21. float damage;
  22. float maxDamage;
  23. float durability;
  24. float maxDurability;
  25. Framework::Bild* zItem;
  26. void render(int x, int y, Framework::Bild& rObj, bool selected, bool lightBackground);
  27. };
  28. class InventoryDragSource
  29. {
  30. public:
  31. virtual Framework::Either<int, Framework::VecN<int, 4>> getInventoryTarget() const = 0;
  32. };
  33. class InventoryView : public Framework::ZeichnungHintergrund, public NetworkAPIProcessor, public InventoryDragSource
  34. {
  35. private:
  36. int rowSize;
  37. // entity id or block position
  38. Framework::Either<int, Framework::VecN<int, 4>> target;
  39. Framework::Text slotNameFilter;
  40. Framework::Text id;
  41. Framework::Array<SlotInfo>* slots;
  42. int dragStartId;
  43. int dragStopId;
  44. public:
  45. InventoryView(Framework::Text id, Framework::Either<int, Framework::VecN<int, 4>> target, int rowSize, Framework::Text slotNameFilter);
  46. ~InventoryView();
  47. void api(char* message) override;
  48. bool tick(double tickVal) override;
  49. void render(Framework::Bild& rObj) override;
  50. void doMausEreignis(Framework::MausEreignis& me, bool userRet) override;
  51. Framework::Either<int, Framework::VecN<int, 4>> getInventoryTarget() const override;
  52. };