#pragma once #include #include #include "Tick.h" #include "VisualsConfig.h" class Simulation; class GameWorldView; class HeaderBar; class SelectedBuildingPanel; class BuildButtonGrid; class BlueprintPanel; class QResizeEvent; class MainWindow : public QWidget { Q_OBJECT public: MainWindow(Simulation* sim, const std::string& configDir, QWidget* parent = nullptr); protected: void resizeEvent(QResizeEvent* event) override; private slots: void onGameOver(); void onStateUpdated(Tick tick, int blocks, double speed); void onEscapeMenuRequested(); private: void layoutPanels(); 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_bottomPanel; };