CraftingGrid.h 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #pragma once
  2. #include <Either.h>
  3. #include <UIMLView.h>
  4. #include <VecN.h>
  5. #include "InventoryView.h"
  6. #include "NetworkAPIProcessor.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
  12. //! ist
  13. bool isApplicableFor(Framework::XML::Element& element) override;
  14. //! erstellt eine neue Zeichnung zu einem gegebenen xml Element
  15. Framework::Zeichnung* parseElement(Framework::XML::Element& element,
  16. Framework::UIMLContainer& generalFactory) override;
  17. //! wendet die layout parameter zu einer Zeichnung an
  18. void layout(Framework::XML::Element& element,
  19. Framework::Zeichnung& z,
  20. int pWidth,
  21. int pHeight,
  22. Framework::UIMLContainer& generalLayouter) override;
  23. };
  24. class CraftingGridView : public Framework::ZeichnungHintergrund,
  25. public NetworkAPIProcessor,
  26. public InventoryDragSource
  27. {
  28. private:
  29. int rowSize;
  30. int colSize;
  31. int numOutputSlots;
  32. // entity id or block position
  33. Framework::Either<int, Framework::VecN<int, 4>> target;
  34. Framework::Array<SlotInfo>* slots;
  35. Framework::Array<SlotInfo>* outputs;
  36. Framework::Text id;
  37. int dragStartId;
  38. int dragStopId;
  39. Framework::Knopf* craft;
  40. int currentTooltipSlot;
  41. int requestetTooltipSlot;
  42. int getSlotByLocalPos(Framework::Punkt pos);
  43. public:
  44. CraftingGridView(Framework::Text id,
  45. int rowSize,
  46. int colSize,
  47. int numOutputSlots,
  48. Framework::Either<int, Framework::VecN<int, 4>> target);
  49. ~CraftingGridView();
  50. void api(char* message) override;
  51. bool tick(double tickVal) override;
  52. void render(Framework::Bild& rObj) override;
  53. void doMausEreignis(Framework::MausEreignis& me, bool userRet) override;
  54. Framework::Either<int, Framework::VecN<int, 4>>
  55. getInventoryTarget() const override;
  56. };