InventoryView.h 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. #pragma once
  2. #include <Either.h>
  3. #include <UIMLView.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
  11. //! ist
  12. bool isApplicableFor(Framework::XML::Element& element) override;
  13. //! erstellt eine neue Zeichnung zu einem gegebenen xml Element
  14. Framework::Zeichnung* parseElement(Framework::XML::Element& element,
  15. Framework::UIMLContainer& generalFactory) override;
  16. //! wendet die layout parameter zu einer Zeichnung an
  17. void layout(Framework::XML::Element& element,
  18. Framework::Zeichnung& z,
  19. int pWidth,
  20. int pHeight,
  21. Framework::UIMLContainer& generalLayouter) override;
  22. };
  23. struct SlotInfo
  24. {
  25. int id;
  26. int itemCount;
  27. float hp;
  28. float maxHp;
  29. float durability;
  30. float maxDurability;
  31. Framework::Bild* zItem;
  32. void render(int x,
  33. int y,
  34. Framework::Bild& rObj,
  35. bool selected,
  36. bool lightBackground);
  37. };
  38. class InventoryDragSource
  39. {
  40. public:
  41. virtual Framework::Either<int, Framework::VecN<int, 4>>
  42. getInventoryTarget() const = 0;
  43. };
  44. class InventoryView : public Framework::ZeichnungHintergrund,
  45. public NetworkAPIProcessor,
  46. public InventoryDragSource
  47. {
  48. private:
  49. int rowSize;
  50. // entity id or block position
  51. Framework::Either<int, Framework::VecN<int, 4>> target;
  52. Framework::Text slotNameFilter;
  53. Framework::Text id;
  54. Framework::Array<SlotInfo>* slots;
  55. Framework::Punkt mausPos;
  56. int dragStartId;
  57. int dragStopId;
  58. int currentTooltipSlot;
  59. int requestetTooltipSlot;
  60. int getSlotByLocalPos(Framework::Punkt pos);
  61. public:
  62. InventoryView(Framework::Text id,
  63. Framework::Either<int, Framework::VecN<int, 4>> target,
  64. int rowSize,
  65. Framework::Text slotNameFilter);
  66. ~InventoryView();
  67. void api(char* message) override;
  68. bool tick(double tickVal) override;
  69. void render(Framework::Bild& rObj) override;
  70. void doMausEreignis(Framework::MausEreignis& me, bool userRet) override;
  71. Framework::Either<int, Framework::VecN<int, 4>>
  72. getInventoryTarget() const override;
  73. };