add live ship stats panel

This commit is contained in:
2026-06-07 21:07:19 +02:00
parent 37a70ea321
commit f097e9a25f
20 changed files with 723 additions and 45 deletions

View File

@@ -1,5 +1,6 @@
#pragma once
#include <optional>
#include <string>
#include <vector>
@@ -8,18 +9,27 @@
#include <QTimer>
#include <QWidget>
#include "entt/entity/entity.hpp"
#include "ArenaSimulation.h"
#include "EntitySelectedEvent.h"
#include "EventHandler.h"
#include "GameConfig.h"
#include "VisualsConfig.h"
class ArenaView;
class ShipStatsPanel;
class InspectWindow : public QWidget
class InspectWindow : public QWidget,
public EventHandler<EntitySelectedEvent>
{
Q_OBJECT
public:
InspectWindow(ArenaSimulation* sim, const VisualsConfig* visuals,
InspectWindow(ArenaSimulation* sim, const GameConfig* config,
const VisualsConfig* visuals,
const std::string& arenaName, QWidget* parent = nullptr);
~InspectWindow() override;
signals:
void closed();
@@ -28,6 +38,9 @@ protected:
void closeEvent(QCloseEvent* event) override;
void keyPressEvent(QKeyEvent* event) override;
private:
void handleEvent(std::shared_ptr<const EntitySelectedEvent> event) override;
private slots:
void onSpeedButton(int index);
void onSpeedChanged(double multiplier);
@@ -35,9 +48,11 @@ private slots:
private:
void updateInfoPanel(const ArenaStatus& status);
void refreshEntityStats();
ArenaSimulation* m_sim;
ArenaView* m_arenaView;
ArenaSimulation* m_sim;
const GameConfig* m_config;
ArenaView* m_arenaView;
std::vector<QPushButton*> m_speedButtons;
QLabel* m_team1Header;
@@ -46,6 +61,11 @@ private:
QLabel* m_team2Content;
QTimer* m_pollTimer;
std::optional<entt::entity> m_selectedEntity;
QLabel* m_entityTitleLabel;
ShipStatsPanel* m_entityStatsPanel;
QLabel* m_stationStatsLabel;
static const double kSpeeds[];
static const int kSpeedCount;
};