#pragma once #include #include "GameConfig.h" #include "Tick.h" #include "VisualsConfig.h" class Simulation; class GameWorldView; class HeaderBar; class SelectedBuildingPanel; class BuildButtonGrid; class QResizeEvent; class MainWindow : public QWidget { Q_OBJECT public: MainWindow(Simulation* sim, const GameConfig* config, const VisualsConfig* visuals, 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(); Simulation* m_sim; GameWorldView* m_gameWorldView; HeaderBar* m_headerBar; SelectedBuildingPanel* m_selectedBuildingPanel; BuildButtonGrid* m_buildButtonGrid; QWidget* m_bottomPanel; };