#pragma once #include #include #include #include "BuildingBlocksChangedEvent.h" #include "BuildingId.h" #include "EscapeMenuRequestedEvent.h" #include "EventHandler.h" #include "GameOverEvent.h" #include "LayoutDialogRequestedEvent.h" #include "SchematicChoicesAvailableEvent.h" #include "ShipLayoutBlueprint.h" #include "Tick.h" #include "VisualsConfig.h" class Simulation; class GameWorldView; class HeaderBar; class SelectedBuildingPanel; class BuildButtonGrid; class BlueprintPanel; class QCloseEvent; class QResizeEvent; class MainWindow : public QWidget, public CombinedEventHandler { Q_OBJECT public: MainWindow(Simulation* sim, const std::string& configDir, QWidget* parent = nullptr); ~MainWindow() override; protected: void resizeEvent(QResizeEvent* event) override; void closeEvent(QCloseEvent* event) override; private: void handleEvent(std::shared_ptr event) override; void handleEvent(std::shared_ptr event) override; void handleEvent(std::shared_ptr event) override; void handleEvent(std::shared_ptr event) override; void handleEvent(std::shared_ptr event) override; void layoutPanels(); private: std::string m_configDir; VisualsConfig m_visuals; Simulation* m_sim; GameWorldView* m_gameWorldView; HeaderBar* m_headerBar; SelectedBuildingPanel* m_selectedBuildingPanel; BuildButtonGrid* m_buildButtonGrid; BlueprintPanel* m_blueprintPanel; QWidget* m_sidePanel; std::vector m_layoutBlueprints; };