CraftingGrid.h 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #pragma once
  2. #include <UIMLView.h>
  3. #include <Either.h>
  4. #include <VecN.h>
  5. #include "NetworkAPIProcessor.h"
  6. #include "InventoryView.h"
  7. class CraftingGridElement : public Framework::UIMLElement
  8. {
  9. public:
  10. CraftingGridElement();
  11. //! prüft, ob dieses UIML Element für ein bestimmtes xml Element zuständig 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, Framework::UIMLContainer& generalFactory) override;
  15. //! wendet die layout parameter zu einer Zeichnung an
  16. void layout(Framework::XML::Element& element, Framework::Zeichnung& z, int pWidth, int pHeight, Framework::UIMLContainer& generalLayouter) override;
  17. };
  18. class CraftingGridView : public Framework::ZeichnungHintergrund, public NetworkAPIProcessor, public InventoryDragSource
  19. {
  20. private:
  21. int rowSize;
  22. int colSize;
  23. int numOutputSlots;
  24. // entity id or block position
  25. Framework::Either<int, Framework::VecN<int, 4>> target;
  26. Framework::Array<SlotInfo>* slots;
  27. Framework::Array<SlotInfo>* outputs;
  28. Framework::Text id;
  29. int dragStartId;
  30. int dragStopId;
  31. Framework::Knopf* craft;
  32. int currentTooltipSlot;
  33. int requestetTooltipSlot;
  34. int getSlotByLocalPos(Framework::Punkt pos);
  35. public:
  36. CraftingGridView(Framework::Text id, int rowSize, int colSize, int numOutputSlots, Framework::Either<int, Framework::VecN<int, 4>> target);
  37. ~CraftingGridView();
  38. void api(char* message) override;
  39. bool tick(double tickVal) override;
  40. void render(Framework::Bild& rObj) override;
  41. void doMausEreignis(Framework::MausEreignis& me, bool userRet) override;
  42. Framework::Either<int, Framework::VecN<int, 4>> getInventoryTarget() const override;
  43. };