#pragma once #include #include #include "RecipesConfig.h" // for RecipeIngredient #include "ShipLayout.h" // for PlacedModule // Build materials and base production time (REQ-BLD-SHIPYARD, REQ-DEF-SCHEMATIC-DROP). struct ShipSchematic { std::vector materials; double productionTimeSeconds; }; struct ShipHealth { float hp; // REQ-SHP-STATS }; struct ShipMovement { float speed_mps; // max linear speed cap, m/s (REQ-SHP-STATS, REQ-SHP-MOVEMENT) float mainAcceleration_mpss; // forward acceleration, m/s² float maneuveringAcceleration_mpss;// omnidirectional acceleration, m/s² float angularAcceleration_radpss; // angular acceleration, rad/s² float maxRotationSpeed_radps; // angular velocity cap, rad/s }; struct ShipSensor { float sensorRange_m; // REQ-SHP-SENSOR, REQ-SHP-STATS }; struct ShipDef { std::string id; std::vector layout; ShipSchematic schematic; ShipHealth health; ShipMovement movement; ShipSensor sensor; // Module layout used for enemy wave ships (REQ-WAV-DEFAULT-MODULES). std::vector defaultModules; }; struct ShipsConfig { std::vector ships; };