#pragma once #include #include #include #include #include #include #include #include "entt/entity/entity.hpp" #include "ArenaSimulation.h" #include "EntitySelectedEvent.h" #include "EventHandler.h" #include "GameConfig.h" #include "GameSpeedChangedEvent.h" #include "VisualsConfig.h" class ArenaView; class ShipStatsPanel; class InspectWindow : public QWidget, public CombinedEventHandler { Q_OBJECT public: InspectWindow(ArenaSimulation* sim, const GameConfig* config, const VisualsConfig* visuals, const std::string& arenaName, QWidget* parent = nullptr); ~InspectWindow() override; protected: void closeEvent(QCloseEvent* event) override; void keyPressEvent(QKeyEvent* event) override; private: void handleEvent(std::shared_ptr event) override; void handleEvent(std::shared_ptr event) override; private slots: void onSpeedButton(int index); void pollStatus(); private: void updateInfoPanel(const ArenaStatus& status); void refreshEntityStats(); ArenaSimulation* m_sim; const GameConfig* m_config; ArenaView* m_arenaView; std::vector m_speedButtons; QLabel* m_team1Header; QLabel* m_team2Header; QLabel* m_team1Threat; QLabel* m_team2Threat; QLabel* m_team1Content; QLabel* m_team2Content; QTimer* m_pollTimer; std::optional m_selectedEntity; QLabel* m_entityTitleLabel; ShipStatsPanel* m_entityStatsPanel; QLabel* m_stationStatsLabel; static const double kSpeeds[]; static const int kSpeedCount; };