diff --git a/ZeroSpace/ZeroSpace.Web/Pages/StarSystemDetail.razor b/ZeroSpace/ZeroSpace.Web/Pages/StarSystemDetail.razor new file mode 100644 index 0000000..08b7cf4 --- /dev/null +++ b/ZeroSpace/ZeroSpace.Web/Pages/StarSystemDetail.razor @@ -0,0 +1,111 @@ +@page "/StarSystem/{Id}" + +@(system?.Name ?? "Star System") + +@if (system is null) +{ + +} +else +{ +
+

@system.Name

+ @system.Kind +
+
+ +
+
Occupation buff
+
@(system.OccupationBuff ?? "—")
+ +
System mastery
+
+ @if (system.SystemMastery is null) + { + @:— + } + else + { + var masteryUrl = ZeroSpaceLinks.UrlFor(system.SystemMastery); + if (masteryUrl is null) + { + @system.SystemMastery + } + else + { + @system.SystemMastery + } + } +
+ +
Yields
+
@YieldText(system)
+ +
Connected systems
+
+ @for (var i = 0; i < system.ConnectedSystems.Count; i++) + { + var name = system.ConnectedSystems[i]; + var url = ZeroSpaceLinks.UrlFor(name); + if (url is null) + { + @name + } + else + { + @name + } + @if (i < system.ConnectedSystems.Count - 1) + { + @:,  + } + } +
+
+ + @if (!string.IsNullOrWhiteSpace(system.Body)) + { +

Notes

+ + } +} + +@code { + [Parameter] + public string Id { get; set; } = string.Empty; + + private StarSystemData? system; + + protected override void OnParametersSet() + { + system = StarSystems.All.FirstOrDefault(s => s.Id.Equals(Id, StringComparison.OrdinalIgnoreCase)); + } + + private static string YieldText(StarSystemData s) + { + var yields = new List(); + if (s.HigherInfluenceYield) + { + yields.Add("Influence"); + } + + if (s.HigherCreditYield) + { + yields.Add("Credits"); + } + + if (s.HigherEnergyYield) + { + yields.Add("Energy"); + } + + if (s.HigherChanceForItems) + { + yields.Add("Items"); + } + + return yields.Count == 0 ? "Standard" : "Higher " + string.Join(", ", yields); + } +}