CraftingGrid.h 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  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. bool updateElement(Framework::XML::Element& element,
  18. Framework::Zeichnung& z,
  19. Framework::UIMLContainer& generalFactory) override;
  20. //! wendet die layout parameter zu einer Zeichnung an
  21. void layout(Framework::XML::Element& element,
  22. Framework::Zeichnung& z,
  23. int pWidth,
  24. int pHeight,
  25. Framework::UIMLContainer& generalLayouter) override;
  26. };
  27. class CraftingGridView : public Framework::ZeichnungHintergrund,
  28. public NetworkAPIProcessor,
  29. public InventoryDragSource
  30. {
  31. private:
  32. int rowSize;
  33. int colSize;
  34. int numOutputSlots;
  35. // entity id or block position
  36. int* address;
  37. int addressLength;
  38. Framework::Array<SlotInfo>* slots;
  39. Framework::Array<SlotInfo>* outputs;
  40. Framework::Text id;
  41. Framework::Punkt mausPos;
  42. int dragStartId;
  43. int dragStopId;
  44. Framework::Knopf* craft;
  45. Framework::Knopf* recipies;
  46. int currentTooltipSlot;
  47. int requestetTooltipSlot;
  48. int getSlotByLocalPos(Framework::Punkt pos);
  49. public:
  50. CraftingGridView(Framework::Text id,
  51. int rowSize,
  52. int colSize,
  53. int numOutputSlots,
  54. int* address,
  55. int addressLength);
  56. ~CraftingGridView();
  57. void api(char* message) override;
  58. bool tick(double tickVal) override;
  59. void render(Framework::Bild& rObj) override;
  60. void doMausEreignis(Framework::MausEreignis& me, bool userRet) override;
  61. Framework::Either<int, Framework::VecN<int, 4>>
  62. getInventoryTarget() const override;
  63. };