add ship stats panel to ship layout dialog

This commit is contained in:
2026-06-06 21:21:48 +02:00
parent 8dad554800
commit 37a70ea321
9 changed files with 562 additions and 24 deletions

View File

@@ -0,0 +1,49 @@
#pragma once
#include <optional>
#include <string>
#include <vector>
#include "GameConfig.h"
#include "ShipLayout.h"
// Effective stats for a ship with a given layout, after applying all passive
// module modifiers per REQ-MOD-STAT-CALC. Values are in display units:
// speeds in tiles/s, ranges in tiles, accelerations in tiles/s² or rad/s².
struct ShipStats
{
float hp;
float maxSpeed_tps;
float sensorRange_tiles;
float mainAcceleration_tpss;
float maneuveringAcceleration_tpss;
float angularAcceleration_radpss;
float maxRotationSpeed_radps;
struct WeaponStats
{
float combinedDps;
float maxRange_tiles;
};
struct SalvageStats
{
float combinedCollectionRate;
float maxRange_tiles;
};
struct RepairStats
{
float combinedRepairRate_hps;
float maxRange_tiles;
};
std::optional<WeaponStats> weapons;
std::optional<SalvageStats> salvage;
std::optional<RepairStats> repair;
};
ShipStats calculateShipStats(const GameConfig& config,
const std::string& shipId,
int level,
const std::vector<PlacedModule>& modules);