140 lines
4.0 KiB
Plaintext
140 lines
4.0 KiB
Plaintext
@page "/StarSystem/{Id}"
|
|
|
|
<PageTitle>@(system?.Name ?? "Star System")</PageTitle>
|
|
|
|
@if (system is null)
|
|
{
|
|
<div class="alert alert-warning" role="alert">
|
|
Unknown star system. <a href="/StarSystem">Back to all star systems</a>.
|
|
</div>
|
|
}
|
|
else
|
|
{
|
|
<div class="section-header d-flex align-items-center mb-4">
|
|
<h1 class="mb-0">@system.Name</h1>
|
|
<span class="badge @CategoryBadgeClass(system.SystemCategory) ms-3">@system.SystemCategory.ToDisplayName()</span>
|
|
<span class="badge @OwnerBadgeClass(system.Owner) ms-2">@system.Owner</span>
|
|
<div class="ms-3 flex-grow-1 border-bottom opacity-25"></div>
|
|
<a href="/galaxy" class="btn btn-sm btn-scifi-outline ms-2 d-none d-md-inline-flex">
|
|
<span>View on Map</span>
|
|
</a>
|
|
</div>
|
|
|
|
<dl class="row">
|
|
<dt class="col-sm-3">Owner</dt>
|
|
<dd class="col-sm-9">
|
|
<span class="badge @OwnerBadgeClass(system.Owner)">@system.Owner</span>
|
|
</dd>
|
|
|
|
<dt class="col-sm-3">Category</dt>
|
|
<dd class="col-sm-9">@system.SystemCategory.ToDisplayName()</dd>
|
|
|
|
<dt class="col-sm-3">Occupation buff</dt>
|
|
<dd class="col-sm-9">@(system.OccupationBuff ?? "—")</dd>
|
|
|
|
<dt class="col-sm-3">System mastery</dt>
|
|
<dd class="col-sm-9">
|
|
@if (system.SystemMastery is null)
|
|
{
|
|
@:—
|
|
}
|
|
else
|
|
{
|
|
var masteryUrl = ZeroSpaceLinks.UrlFor(system.SystemMastery);
|
|
if (masteryUrl is null)
|
|
{
|
|
@system.SystemMastery
|
|
}
|
|
else
|
|
{
|
|
<a href="@masteryUrl">@system.SystemMastery</a>
|
|
}
|
|
}
|
|
</dd>
|
|
|
|
<dt class="col-sm-3">Yields</dt>
|
|
<dd class="col-sm-9">@YieldText(system)</dd>
|
|
|
|
<dt class="col-sm-3">Connected systems</dt>
|
|
<dd class="col-sm-9">
|
|
@for (var i = 0; i < system.ConnectedSystems.Count; i++)
|
|
{
|
|
var name = system.ConnectedSystems[i];
|
|
var url = ZeroSpaceLinks.UrlFor(name);
|
|
if (url is null)
|
|
{
|
|
<span>@name</span>
|
|
}
|
|
else
|
|
{
|
|
<a href="@url">@name</a>
|
|
}
|
|
@if (i < system.ConnectedSystems.Count - 1)
|
|
{
|
|
@:,
|
|
}
|
|
}
|
|
</dd>
|
|
</dl>
|
|
|
|
@if (!string.IsNullOrWhiteSpace(system.Body))
|
|
{
|
|
<h2>Notes</h2>
|
|
<MarkdownView Markdown="@system.Body" />
|
|
}
|
|
}
|
|
|
|
@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 CategoryBadgeClass(StarSystemCategory category) => category switch
|
|
{
|
|
StarSystemCategory.HomeworldSystem => "badge-homeworld",
|
|
StarSystemCategory.CoreSystem => "badge-core",
|
|
StarSystemCategory.SideSystem => "badge-side",
|
|
_ => "badge-side"
|
|
};
|
|
|
|
private static string OwnerBadgeClass(string owner) => owner switch
|
|
{
|
|
StarSystemOwners.EdenAccord => "badge-eden",
|
|
StarSystemOwners.KeeperCouncil => "badge-keeper",
|
|
StarSystemOwners.ObsidianOrder => "badge-obsidian",
|
|
_ => "badge-side"
|
|
};
|
|
|
|
private static string YieldText(StarSystemData s)
|
|
{
|
|
var yields = new List<string>();
|
|
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);
|
|
}
|
|
}
|