add ship stats panel to ship layout dialog
This commit is contained in:
49
src/lib/sim/ShipStatsCalculator.h
Normal file
49
src/lib/sim/ShipStatsCalculator.h
Normal 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);
|
||||
Reference in New Issue
Block a user