#pragma once #include #include #include #include "BuilderModeExitedEvent.h" #include "BuildingType.h" #include "DemolishModeChangedEvent.h" #include "EventHandler.h" #include "GameConfig.h" class QPushButton; class BuildButtonGrid : public QWidget, public CombinedEventHandler { Q_OBJECT public: BuildButtonGrid(const GameConfig* config, QWidget* parent = nullptr); ~BuildButtonGrid() override; void updateAffordability(int buildingBlocks); void clearActiveButton(); private: void handleEvent(std::shared_ptr event) override; void handleEvent(std::shared_ptr event) override; private slots: void onBuildButton(int index); private: const GameConfig* m_config; std::vector m_types; std::vector m_buttons; std::map m_costs; int m_activeIndex; QPushButton* m_demolishButton; };