#pragma once #include <Either.h> #include <UIMLView.h> #include <VecN.h> #include "InventoryView.h" #include "NetworkAPIProcessor.h" class CraftingGridElement : public Framework::UIMLElement { public: CraftingGridElement(); //! pr�ft, ob dieses UIML Element f�r ein bestimmtes xml Element zust�ndig //! ist bool isApplicableFor(Framework::XML::Element& element) override; //! erstellt eine neue Zeichnung zu einem gegebenen xml Element Framework::Zeichnung* parseElement(Framework::XML::Element& element, Framework::UIMLContainer& generalFactory) override; //! wendet die layout parameter zu einer Zeichnung an void layout(Framework::XML::Element& element, Framework::Zeichnung& z, int pWidth, int pHeight, Framework::UIMLContainer& generalLayouter) override; }; class CraftingGridView : public Framework::ZeichnungHintergrund, public NetworkAPIProcessor, public InventoryDragSource { private: int rowSize; int colSize; int numOutputSlots; // entity id or block position Framework::Either<int, Framework::VecN<int, 4>> target; Framework::Array<SlotInfo>* slots; Framework::Array<SlotInfo>* outputs; Framework::Text id; Framework::Punkt mausPos; int dragStartId; int dragStopId; Framework::Knopf* craft; Framework::Knopf* recipies; int currentTooltipSlot; int requestetTooltipSlot; int getSlotByLocalPos(Framework::Punkt pos); public: CraftingGridView(Framework::Text id, int rowSize, int colSize, int numOutputSlots, Framework::Either<int, Framework::VecN<int, 4>> target); ~CraftingGridView(); void api(char* message) override; bool tick(double tickVal) override; void render(Framework::Bild& rObj) override; void doMausEreignis(Framework::MausEreignis& me, bool userRet) override; Framework::Either<int, Framework::VecN<int, 4>> getInventoryTarget() const override; };