feat: improved visualisation and x4 data import
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace SpaceGame.Simulation.Api.Data;
|
||||
|
||||
public sealed class ConstructionDefinition
|
||||
@@ -13,6 +15,29 @@ public sealed class ConstructionDefinition
|
||||
public int Priority { get; set; }
|
||||
}
|
||||
|
||||
public sealed class ItemPriceDefinition
|
||||
{
|
||||
public float Min { get; set; }
|
||||
public float Max { get; set; }
|
||||
public float Avg { get; set; }
|
||||
}
|
||||
|
||||
public sealed class ItemEffectDefinition
|
||||
{
|
||||
public required string Type { get; set; }
|
||||
public float Product { get; set; }
|
||||
}
|
||||
|
||||
public sealed class ItemProductionDefinition
|
||||
{
|
||||
public float Time { get; set; }
|
||||
public float Amount { get; set; }
|
||||
public string Method { get; set; } = "default";
|
||||
public string Name { get; set; } = "Universal";
|
||||
public List<RecipeInputDefinition> Wares { get; set; } = [];
|
||||
public List<ItemEffectDefinition> Effects { get; set; } = [];
|
||||
}
|
||||
|
||||
public sealed class BalanceDefinition
|
||||
{
|
||||
public float YPlane { get; set; }
|
||||
@@ -25,17 +50,35 @@ public sealed class BalanceDefinition
|
||||
public float UndockDistance { get; set; }
|
||||
}
|
||||
|
||||
public sealed class StarDefinition
|
||||
{
|
||||
public string Kind { get; set; } = "main-sequence";
|
||||
public required string Color { get; set; }
|
||||
public required string Glow { get; set; }
|
||||
public float Size { get; set; }
|
||||
public float OrbitRadius { get; set; }
|
||||
public float OrbitSpeed { get; set; }
|
||||
public float OrbitPhaseAtEpoch { get; set; }
|
||||
}
|
||||
|
||||
public sealed class MoonDefinition
|
||||
{
|
||||
public required string Label { get; set; }
|
||||
public float Size { get; set; }
|
||||
public required string Color { get; set; }
|
||||
public float OrbitRadius { get; set; }
|
||||
public float OrbitSpeed { get; set; }
|
||||
public float OrbitPhaseAtEpoch { get; set; }
|
||||
public float OrbitInclination { get; set; }
|
||||
public float OrbitLongitudeOfAscendingNode { get; set; }
|
||||
}
|
||||
|
||||
public sealed class SolarSystemDefinition
|
||||
{
|
||||
public required string Id { get; set; }
|
||||
public required string Label { get; set; }
|
||||
public required float[] Position { get; set; }
|
||||
public string StarKind { get; set; } = "main-sequence";
|
||||
public int StarCount { get; set; } = 1;
|
||||
public required string StarColor { get; set; }
|
||||
public required string StarGlow { get; set; }
|
||||
public float StarSize { get; set; }
|
||||
public float GravityWellRadius { get; set; }
|
||||
public required List<StarDefinition> Stars { get; set; }
|
||||
public required AsteroidFieldDefinition AsteroidField { get; set; }
|
||||
public required List<ResourceNodeDefinition> ResourceNodes { get; set; }
|
||||
public required List<PlanetDefinition> Planets { get; set; }
|
||||
@@ -68,9 +111,21 @@ public sealed class ItemDefinition
|
||||
public required string Name { get; set; }
|
||||
public string Description { get; set; } = string.Empty;
|
||||
public string Type { get; set; } = "material";
|
||||
public required string CargoKind { get; set; }
|
||||
public string CargoKind { get; set; } = string.Empty;
|
||||
public float Volume { get; set; } = 1f;
|
||||
public int Version { get; set; }
|
||||
public string FactoryName { get; set; } = string.Empty;
|
||||
public string Icon { get; set; } = string.Empty;
|
||||
public string Group { get; set; } = string.Empty;
|
||||
public ItemPriceDefinition? Price { get; set; }
|
||||
public List<string> Illegal { get; set; } = [];
|
||||
public List<ItemProductionDefinition> Production { get; set; } = [];
|
||||
public ConstructionDefinition? Construction { get; set; }
|
||||
[JsonPropertyName("transport")]
|
||||
public string Transport
|
||||
{
|
||||
set => CargoKind = value;
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class RecipeOutputDefinition
|
||||
@@ -81,8 +136,13 @@ public sealed class RecipeOutputDefinition
|
||||
|
||||
public sealed class RecipeInputDefinition
|
||||
{
|
||||
public required string ItemId { get; set; }
|
||||
public string ItemId { get; set; } = string.Empty;
|
||||
public float Amount { get; set; }
|
||||
[JsonPropertyName("ware")]
|
||||
public string Ware
|
||||
{
|
||||
set => ItemId = value;
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class ModuleConstructionDefinition
|
||||
@@ -91,18 +151,73 @@ public sealed class ModuleConstructionDefinition
|
||||
public float ProductionTime { get; set; }
|
||||
}
|
||||
|
||||
public sealed class ModuleDockDefinition
|
||||
{
|
||||
public int Capacity { get; set; }
|
||||
public required string Size { get; set; }
|
||||
}
|
||||
|
||||
public sealed class ModuleCargoDefinition
|
||||
{
|
||||
public float Max { get; set; }
|
||||
public required string Type { get; set; }
|
||||
}
|
||||
|
||||
public sealed class ModuleWorkForceDefinition
|
||||
{
|
||||
public float Capacity { get; set; }
|
||||
public float Max { get; set; }
|
||||
public string Race { get; set; } = string.Empty;
|
||||
}
|
||||
|
||||
public sealed class ModuleMountDefinition
|
||||
{
|
||||
public required string Group { get; set; }
|
||||
public required string Size { get; set; }
|
||||
public bool Hittable { get; set; }
|
||||
public List<string> Types { get; set; } = [];
|
||||
}
|
||||
|
||||
public sealed class ModuleProductionDefinition
|
||||
{
|
||||
public float Time { get; set; }
|
||||
public float Amount { get; set; }
|
||||
public string Method { get; set; } = "default";
|
||||
public string Name { get; set; } = "Universal";
|
||||
public List<RecipeInputDefinition> Wares { get; set; } = [];
|
||||
}
|
||||
|
||||
public sealed class ModuleDefinition
|
||||
{
|
||||
public required string Id { get; set; }
|
||||
public required string Name { get; set; }
|
||||
public string Description { get; set; } = string.Empty;
|
||||
public required string Type { get; set; }
|
||||
[JsonIgnore]
|
||||
public string? Product { get; set; }
|
||||
public List<string> Products { get; set; } = [];
|
||||
public string ProductionMode { get; set; } = "passive";
|
||||
public float Radius { get; set; } = 12f;
|
||||
public float Hull { get; set; } = 100f;
|
||||
public float WorkforceNeeded { get; set; }
|
||||
public int Version { get; set; }
|
||||
public string Macro { get; set; } = string.Empty;
|
||||
public string MakerRace { get; set; } = string.Empty;
|
||||
public int ExplosionDamage { get; set; }
|
||||
public ItemPriceDefinition? Price { get; set; }
|
||||
public List<string> Owners { get; set; } = [];
|
||||
public ModuleCargoDefinition? Cargo { get; set; }
|
||||
public ModuleWorkForceDefinition? WorkForce { get; set; }
|
||||
public List<ModuleDockDefinition> Docks { get; set; } = [];
|
||||
public List<ModuleMountDefinition> Shields { get; set; } = [];
|
||||
public List<ModuleMountDefinition> Turrets { get; set; } = [];
|
||||
public List<ModuleProductionDefinition> Production { get; set; } = [];
|
||||
public ModuleConstructionDefinition? Construction { get; set; }
|
||||
[JsonPropertyName("product")]
|
||||
public List<string> ProductIds
|
||||
{
|
||||
set => Products = value ?? [];
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class ModuleRecipeDefinition
|
||||
@@ -130,7 +245,7 @@ public sealed class PlanetDefinition
|
||||
public required string Label { get; set; }
|
||||
public string PlanetType { get; set; } = "terrestrial";
|
||||
public string Shape { get; set; } = "sphere";
|
||||
public int MoonCount { get; set; }
|
||||
public List<MoonDefinition> Moons { get; set; } = [];
|
||||
public float OrbitRadius { get; set; }
|
||||
public float OrbitSpeed { get; set; }
|
||||
public float OrbitEccentricity { get; set; }
|
||||
|
||||
Reference in New Issue
Block a user