#pragma once #include "AbstractContainerMenu.h" #include "Slot.h" class BeaconTileEntity; class BeaconMenu : public AbstractContainerMenu { private: class PaymentSlot : public Slot { public: PaymentSlot(std::shared_ptr container, int slot, int x, int y); bool mayPlace(std::shared_ptr item); int getMaxStackSize(); }; public: static const int PAYMENT_SLOT = 0; static const int INV_SLOT_START = PAYMENT_SLOT + 1; static const int INV_SLOT_END = INV_SLOT_START + 9 * 3; static const int USE_ROW_SLOT_START = INV_SLOT_END; static const int USE_ROW_SLOT_END = USE_ROW_SLOT_START + 9; private: std::shared_ptr beacon; PaymentSlot* paymentSlot; // copied values because container/client system is retarded int levels; int primaryPower; int secondaryPower; public: BeaconMenu(std::shared_ptr inventory, std::shared_ptr beacon); void addSlotListener(ContainerListener* listener); void setData(int id, int value); std::shared_ptr getBeacon(); bool stillValid(std::shared_ptr player); std::shared_ptr quickMoveStack(std::shared_ptr player, int slotIndex); };