InventoryView.h 1.6 KB

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