Vibe filters
This commit is contained in:
@@ -529,31 +529,58 @@ static bool TryReadStarSystem(
|
||||
{
|
||||
system = default!;
|
||||
|
||||
var kind = string.Empty;
|
||||
var kindCount = 0;
|
||||
if (IsTrue(frontMatter, "isSideSystem"))
|
||||
string category;
|
||||
if (frontMatter.TryGetValue("systemCategory", out var categoryVal) && !string.IsNullOrWhiteSpace(categoryVal.Scalar))
|
||||
{
|
||||
kind = "Side";
|
||||
kindCount++;
|
||||
var catStr = categoryVal.Scalar.Trim();
|
||||
if (catStr.Equals("Homeworld System", StringComparison.OrdinalIgnoreCase) || catStr.Equals("Homeworld", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
category = "HomeworldSystem";
|
||||
}
|
||||
else if (catStr.Equals("Core System", StringComparison.OrdinalIgnoreCase) || catStr.Equals("Core", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
category = "CoreSystem";
|
||||
}
|
||||
else if (catStr.Equals("Side System", StringComparison.OrdinalIgnoreCase) || catStr.Equals("Side", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
category = "SideSystem";
|
||||
}
|
||||
else
|
||||
{
|
||||
reason = $"unknown systemCategory '{catStr}'";
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var kindCount = 0;
|
||||
category = string.Empty;
|
||||
if (IsTrue(frontMatter, "isSideSystem"))
|
||||
{
|
||||
category = "SideSystem";
|
||||
kindCount++;
|
||||
}
|
||||
|
||||
if (IsTrue(frontMatter, "isHomeworldSystem"))
|
||||
{
|
||||
category = "HomeworldSystem";
|
||||
kindCount++;
|
||||
}
|
||||
|
||||
if (IsTrue(frontMatter, "isCoreSystem"))
|
||||
{
|
||||
category = "CoreSystem";
|
||||
kindCount++;
|
||||
}
|
||||
|
||||
if (kindCount != 1)
|
||||
{
|
||||
reason = "missing or invalid systemCategory";
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (IsTrue(frontMatter, "isHomeworldSystem"))
|
||||
{
|
||||
kind = "Homeworld";
|
||||
kindCount++;
|
||||
}
|
||||
|
||||
if (IsTrue(frontMatter, "isCoreSystem"))
|
||||
{
|
||||
kind = "Core";
|
||||
kindCount++;
|
||||
}
|
||||
|
||||
if (kindCount != 1)
|
||||
{
|
||||
reason = "expected exactly one system kind flag";
|
||||
return false;
|
||||
}
|
||||
var owner = TryGetOptionalString(frontMatter, "owner") ?? "The Eden Accord";
|
||||
|
||||
var name = Path.GetFileNameWithoutExtension(path);
|
||||
var connectedSystems = frontMatter.TryGetValue("connectedSystems", out var connectedValue)
|
||||
@@ -563,7 +590,8 @@ static bool TryReadStarSystem(
|
||||
system = new StarSystemSource(
|
||||
ToUniqueIdentifier(name, usedIds),
|
||||
name,
|
||||
kind,
|
||||
category,
|
||||
owner,
|
||||
IsTrue(frontMatter, "higherInfluenceYield"),
|
||||
IsTrue(frontMatter, "higherCreditYield"),
|
||||
IsTrue(frontMatter, "higherEnergyYield"),
|
||||
@@ -660,7 +688,8 @@ static string GenerateStarSystems(IReadOnlyList<StarSystemSource> systems)
|
||||
builder.AppendLine($" public static readonly StarSystemData {system.Id} = new(");
|
||||
builder.AppendLine($" Id: {Literal(system.Id)},");
|
||||
builder.AppendLine($" Name: {Literal(system.Name)},");
|
||||
builder.AppendLine($" Kind: StarSystemKind.{system.Kind},");
|
||||
builder.AppendLine($" SystemCategory: StarSystemCategory.{system.SystemCategory},");
|
||||
builder.AppendLine($" Owner: {Literal(system.Owner)},");
|
||||
builder.AppendLine($" HigherInfluenceYield: {BoolLiteral(system.HigherInfluenceYield)},");
|
||||
builder.AppendLine($" HigherCreditYield: {BoolLiteral(system.HigherCreditYield)},");
|
||||
builder.AppendLine($" HigherEnergyYield: {BoolLiteral(system.HigherEnergyYield)},");
|
||||
@@ -784,7 +813,8 @@ internal sealed record UnitSource(
|
||||
internal sealed record StarSystemSource(
|
||||
string Id,
|
||||
string Name,
|
||||
string Kind,
|
||||
string SystemCategory,
|
||||
string Owner,
|
||||
bool HigherInfluenceYield,
|
||||
bool HigherCreditYield,
|
||||
bool HigherEnergyYield,
|
||||
|
||||
@@ -11,7 +11,8 @@ public sealed class StarSystemDoc
|
||||
{
|
||||
public string FilePath { get; set; } = string.Empty;
|
||||
public string Name { get; set; } = string.Empty;
|
||||
public string Kind { get; set; } = string.Empty;
|
||||
public string SystemCategory { get; set; } = string.Empty;
|
||||
public string Owner { get; set; } = string.Empty;
|
||||
public bool HigherInfluenceYield { get; set; }
|
||||
public bool HigherCreditYield { get; set; }
|
||||
public bool HigherEnergyYield { get; set; }
|
||||
@@ -119,13 +120,18 @@ public static class StarSystemDocStore
|
||||
{
|
||||
FilePath = path,
|
||||
Name = Path.GetFileNameWithoutExtension(path),
|
||||
SystemCategory = scalars.TryGetValue("systemCategory", out var categoryVal) ? categoryVal : string.Empty,
|
||||
Owner = scalars.TryGetValue("owner", out var ownerVal) ? ownerVal : "The Eden Accord",
|
||||
OccupationBuff = scalars.TryGetValue("occupationBuff", out var buff) ? buff : null,
|
||||
SystemMastery = scalars.TryGetValue("systemMastery", out var mastery) ? mastery : null,
|
||||
};
|
||||
|
||||
if (IsTrue(scalars, "isSideSystem")) doc.Kind = "Side";
|
||||
if (IsTrue(scalars, "isHomeworldSystem")) doc.Kind = "Homeworld";
|
||||
if (IsTrue(scalars, "isCoreSystem")) doc.Kind = "Core";
|
||||
if (string.IsNullOrEmpty(doc.SystemCategory))
|
||||
{
|
||||
if (IsTrue(scalars, "isSideSystem")) doc.SystemCategory = "Side System";
|
||||
if (IsTrue(scalars, "isHomeworldSystem")) doc.SystemCategory = "Homeworld System";
|
||||
if (IsTrue(scalars, "isCoreSystem")) doc.SystemCategory = "Core System";
|
||||
}
|
||||
|
||||
doc.HigherInfluenceYield = IsTrue(scalars, "higherInfluenceYield");
|
||||
doc.HigherCreditYield = IsTrue(scalars, "higherCreditYield");
|
||||
|
||||
@@ -57,7 +57,7 @@ public sealed class MapDrawable : IDrawable
|
||||
var center = ToScreen(node.X, node.Y);
|
||||
var radius = (float)(NodeRadius * Scale);
|
||||
|
||||
canvas.FillColor = ColorForKind(node.Doc.Kind);
|
||||
canvas.FillColor = ColorForOwner(node.Doc.Owner);
|
||||
canvas.FillCircle(center, radius);
|
||||
|
||||
if (node.IsHighlighted)
|
||||
@@ -85,11 +85,19 @@ public sealed class MapDrawable : IDrawable
|
||||
}
|
||||
}
|
||||
|
||||
public static Color ColorForKind(string kind) => kind switch
|
||||
public static Color ColorForOwner(string owner) => owner switch
|
||||
{
|
||||
"Homeworld" => Color.FromArgb("#43a047"),
|
||||
"Core" => Color.FromArgb("#fb8c00"),
|
||||
"Side" => Color.FromArgb("#4a90d9"),
|
||||
"The Eden Accord" => Color.FromArgb("#10b981"),
|
||||
"The Keeper Council" => Color.FromArgb("#38bdf8"),
|
||||
"The Obsidian Order" => Color.FromArgb("#ef4444"),
|
||||
_ => Color.FromArgb("#9aa5b1"),
|
||||
};
|
||||
|
||||
public static Color ColorForCategory(string category) => category switch
|
||||
{
|
||||
"Homeworld System" or "Homeworld" => Color.FromArgb("#43a047"),
|
||||
"Core System" or "Core" => Color.FromArgb("#fb8c00"),
|
||||
"Side System" or "Side" => Color.FromArgb("#4a90d9"),
|
||||
_ => Color.FromArgb("#9aa5b1"),
|
||||
};
|
||||
}
|
||||
|
||||
@@ -37,8 +37,11 @@
|
||||
<Label Text="Name" FontAttributes="Bold" />
|
||||
<Label x:Name="NameLabel" />
|
||||
|
||||
<Label Text="Kind" FontAttributes="Bold" />
|
||||
<Label x:Name="KindLabel" />
|
||||
<Label Text="Category" FontAttributes="Bold" />
|
||||
<Label x:Name="CategoryLabel" />
|
||||
|
||||
<Label Text="Owner" FontAttributes="Bold" />
|
||||
<Label x:Name="OwnerLabel" />
|
||||
|
||||
<Label Text="Yields" FontAttributes="Bold" />
|
||||
<Label x:Name="YieldsLabel" />
|
||||
|
||||
@@ -533,7 +533,8 @@ public partial class MapEditorPage : ContentPage
|
||||
{
|
||||
var doc = node.Doc;
|
||||
NameLabel.Text = doc.Name;
|
||||
KindLabel.Text = string.IsNullOrEmpty(doc.Kind) ? "—" : doc.Kind;
|
||||
CategoryLabel.Text = string.IsNullOrEmpty(doc.SystemCategory) ? "—" : doc.SystemCategory;
|
||||
OwnerLabel.Text = string.IsNullOrEmpty(doc.Owner) ? "—" : doc.Owner;
|
||||
YieldsLabel.Text = YieldText(doc);
|
||||
BuffLabel.Text = doc.OccupationBuff ?? "—";
|
||||
MasteryLabel.Text = doc.SystemMastery ?? "—";
|
||||
|
||||
@@ -1,16 +1,58 @@
|
||||
namespace ZeroSpace.Model;
|
||||
|
||||
public enum StarSystemKind
|
||||
public enum StarSystemCategory
|
||||
{
|
||||
Side,
|
||||
Homeworld,
|
||||
Core
|
||||
HomeworldSystem,
|
||||
CoreSystem,
|
||||
SideSystem
|
||||
}
|
||||
|
||||
public static class StarSystemCategoryExtensions
|
||||
{
|
||||
public static string ToDisplayName(this StarSystemCategory category) => category switch
|
||||
{
|
||||
StarSystemCategory.HomeworldSystem => "Homeworld System",
|
||||
StarSystemCategory.CoreSystem => "Core System",
|
||||
StarSystemCategory.SideSystem => "Side System",
|
||||
_ => category.ToString()
|
||||
};
|
||||
}
|
||||
|
||||
public static class StarSystemOwners
|
||||
{
|
||||
public const string EdenAccord = "The Eden Accord";
|
||||
public const string KeeperCouncil = "The Keeper Council";
|
||||
public const string ObsidianOrder = "The Obsidian Order";
|
||||
|
||||
public static readonly IReadOnlyList<string> All =
|
||||
[
|
||||
EdenAccord,
|
||||
KeeperCouncil,
|
||||
ObsidianOrder
|
||||
];
|
||||
|
||||
public static string GetColor(string? owner) => owner switch
|
||||
{
|
||||
EdenAccord => "#10b981", // Green
|
||||
KeeperCouncil => "#38bdf8", // Blue
|
||||
ObsidianOrder => "#ef4444", // Red
|
||||
_ => "#94a3b8"
|
||||
};
|
||||
|
||||
public static string GetCssClass(string? owner) => owner switch
|
||||
{
|
||||
EdenAccord => "owner-eden",
|
||||
KeeperCouncil => "owner-keeper",
|
||||
ObsidianOrder => "owner-obsidian",
|
||||
_ => "owner-neutral"
|
||||
};
|
||||
}
|
||||
|
||||
public sealed record StarSystemData(
|
||||
string Id,
|
||||
string Name,
|
||||
StarSystemKind Kind,
|
||||
StarSystemCategory SystemCategory,
|
||||
string Owner,
|
||||
bool HigherInfluenceYield,
|
||||
bool HigherCreditYield,
|
||||
bool HigherEnergyYield,
|
||||
|
||||
@@ -6,7 +6,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData AndusReach = new(
|
||||
Id: "AndusReach",
|
||||
Name: "Andus Reach",
|
||||
Kind: StarSystemKind.Side,
|
||||
SystemCategory: StarSystemCategory.SideSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -21,7 +22,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData AquilaRift = new(
|
||||
Id: "AquilaRift",
|
||||
Name: "Aquila Rift",
|
||||
Kind: StarSystemKind.Side,
|
||||
SystemCategory: StarSystemCategory.SideSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -36,7 +38,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData ArtemisGrotto = new(
|
||||
Id: "ArtemisGrotto",
|
||||
Name: "Artemis Grotto",
|
||||
Kind: StarSystemKind.Homeworld,
|
||||
SystemCategory: StarSystemCategory.HomeworldSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -51,7 +54,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData AshesOfRevenge = new(
|
||||
Id: "AshesOfRevenge",
|
||||
Name: "Ashes of Revenge",
|
||||
Kind: StarSystemKind.Homeworld,
|
||||
SystemCategory: StarSystemCategory.HomeworldSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -66,7 +70,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData AstralHaven = new(
|
||||
Id: "AstralHaven",
|
||||
Name: "Astral Haven",
|
||||
Kind: StarSystemKind.Side,
|
||||
SystemCategory: StarSystemCategory.SideSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -81,7 +86,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData AuroraVale = new(
|
||||
Id: "AuroraVale",
|
||||
Name: "Aurora Vale",
|
||||
Kind: StarSystemKind.Side,
|
||||
SystemCategory: StarSystemCategory.SideSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -89,14 +95,15 @@ public static class StarSystems
|
||||
OccupationBuff: "+2% Unit health and shields",
|
||||
SystemMastery: "Max Supply",
|
||||
ConnectedSystems: ["Endless Wastes", "Beta Clarity", "Stronghold Nova Centauri"],
|
||||
X: 597.9,
|
||||
Y: 437.7,
|
||||
X: 161.4,
|
||||
Y: -30.2,
|
||||
Body: "");
|
||||
|
||||
public static readonly StarSystemData BetaClarity = new(
|
||||
Id: "BetaClarity",
|
||||
Name: "Beta Clarity",
|
||||
Kind: StarSystemKind.Side,
|
||||
SystemCategory: StarSystemCategory.SideSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -104,14 +111,15 @@ public static class StarSystems
|
||||
OccupationBuff: "+0.25 unit vision and attack range",
|
||||
SystemMastery: "Hero Damage",
|
||||
ConnectedSystems: ["Aurora Vale", "Solaris Reach", "Nebulon Drift"],
|
||||
X: 467,
|
||||
Y: 622.8,
|
||||
X: 268.8,
|
||||
Y: 87,
|
||||
Body: "");
|
||||
|
||||
public static readonly StarSystemData BurningCairn = new(
|
||||
Id: "BurningCairn",
|
||||
Name: "Burning Cairn",
|
||||
Kind: StarSystemKind.Side,
|
||||
SystemCategory: StarSystemCategory.SideSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -126,7 +134,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData CalmBelt = new(
|
||||
Id: "CalmBelt",
|
||||
Name: "Calm Belt",
|
||||
Kind: StarSystemKind.Side,
|
||||
SystemCategory: StarSystemCategory.SideSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -141,7 +150,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData CelestialForgeStronghold = new(
|
||||
Id: "CelestialForgeStronghold",
|
||||
Name: "Celestial Forge Stronghold",
|
||||
Kind: StarSystemKind.Core,
|
||||
SystemCategory: StarSystemCategory.CoreSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: true,
|
||||
@@ -156,7 +166,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData CorundumDream = new(
|
||||
Id: "CorundumDream",
|
||||
Name: "Corundum Dream",
|
||||
Kind: StarSystemKind.Side,
|
||||
SystemCategory: StarSystemCategory.SideSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -171,7 +182,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData CrimsonExpanse = new(
|
||||
Id: "CrimsonExpanse",
|
||||
Name: "Crimson Expanse",
|
||||
Kind: StarSystemKind.Core,
|
||||
SystemCategory: StarSystemCategory.CoreSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -186,7 +198,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData CrystallicGenesis = new(
|
||||
Id: "CrystallicGenesis",
|
||||
Name: "Crystallic Genesis",
|
||||
Kind: StarSystemKind.Side,
|
||||
SystemCategory: StarSystemCategory.SideSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -201,7 +214,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData DevilSTrident = new(
|
||||
Id: "DevilSTrident",
|
||||
Name: "Devil's Trident",
|
||||
Kind: StarSystemKind.Core,
|
||||
SystemCategory: StarSystemCategory.CoreSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: true,
|
||||
HigherEnergyYield: false,
|
||||
@@ -216,7 +230,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData DraconisReach = new(
|
||||
Id: "DraconisReach",
|
||||
Name: "Draconis Reach",
|
||||
Kind: StarSystemKind.Side,
|
||||
SystemCategory: StarSystemCategory.SideSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -231,7 +246,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData EbonyKeep = new(
|
||||
Id: "EbonyKeep",
|
||||
Name: "Ebony Keep",
|
||||
Kind: StarSystemKind.Core,
|
||||
SystemCategory: StarSystemCategory.CoreSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: true,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -246,7 +262,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData EdenSHeart = new(
|
||||
Id: "EdenSHeart",
|
||||
Name: "Eden's Heart",
|
||||
Kind: StarSystemKind.Homeworld,
|
||||
SystemCategory: StarSystemCategory.HomeworldSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: true,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -261,7 +278,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData EndlessWastes = new(
|
||||
Id: "EndlessWastes",
|
||||
Name: "Endless Wastes",
|
||||
Kind: StarSystemKind.Side,
|
||||
SystemCategory: StarSystemCategory.SideSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -269,14 +287,15 @@ public static class StarSystems
|
||||
OccupationBuff: "+50 Starting Hexite",
|
||||
SystemMastery: "Production Speed for Buildings",
|
||||
ConnectedSystems: ["Uanachian Whirlpool", "Gamma Swarm", "Nebulon Drift", "Aurora Vale"],
|
||||
X: 286.2,
|
||||
Y: 508.8,
|
||||
X: 146.7,
|
||||
Y: 66.6,
|
||||
Body: "");
|
||||
|
||||
public static readonly StarSystemData EpsilonArc = new(
|
||||
Id: "EpsilonArc",
|
||||
Name: "Epsilon Arc",
|
||||
Kind: StarSystemKind.Core,
|
||||
SystemCategory: StarSystemCategory.CoreSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -291,7 +310,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData ErebusDeep = new(
|
||||
Id: "ErebusDeep",
|
||||
Name: "Erebus Deep",
|
||||
Kind: StarSystemKind.Core,
|
||||
SystemCategory: StarSystemCategory.CoreSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -306,7 +326,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData ForgeOfSouls = new(
|
||||
Id: "ForgeOfSouls",
|
||||
Name: "Forge of Souls",
|
||||
Kind: StarSystemKind.Homeworld,
|
||||
SystemCategory: StarSystemCategory.HomeworldSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: true,
|
||||
@@ -321,7 +342,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData GalacticZenith = new(
|
||||
Id: "GalacticZenith",
|
||||
Name: "Galactic Zenith",
|
||||
Kind: StarSystemKind.Core,
|
||||
SystemCategory: StarSystemCategory.CoreSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: true,
|
||||
HigherCreditYield: true,
|
||||
HigherEnergyYield: true,
|
||||
@@ -336,7 +358,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData GammaSwarm = new(
|
||||
Id: "GammaSwarm",
|
||||
Name: "Gamma Swarm",
|
||||
Kind: StarSystemKind.Side,
|
||||
SystemCategory: StarSystemCategory.SideSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -351,7 +374,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData GelidStorm = new(
|
||||
Id: "GelidStorm",
|
||||
Name: "Gelid Storm",
|
||||
Kind: StarSystemKind.Side,
|
||||
SystemCategory: StarSystemCategory.SideSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -366,7 +390,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData GlitteringHope = new(
|
||||
Id: "GlitteringHope",
|
||||
Name: "Glittering Hope",
|
||||
Kind: StarSystemKind.Homeworld,
|
||||
SystemCategory: StarSystemCategory.HomeworldSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: true,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -381,7 +406,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData HeigenStream = new(
|
||||
Id: "HeigenStream",
|
||||
Name: "Heigen Stream",
|
||||
Kind: StarSystemKind.Side,
|
||||
SystemCategory: StarSystemCategory.SideSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -396,7 +422,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData HeliosCrossing = new(
|
||||
Id: "HeliosCrossing",
|
||||
Name: "Helios Crossing",
|
||||
Kind: StarSystemKind.Core,
|
||||
SystemCategory: StarSystemCategory.CoreSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -411,7 +438,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData HyperionNebula = new(
|
||||
Id: "HyperionNebula",
|
||||
Name: "Hyperion Nebula",
|
||||
Kind: StarSystemKind.Side,
|
||||
SystemCategory: StarSystemCategory.SideSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -426,7 +454,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData IdalSWord = new(
|
||||
Id: "IdalSWord",
|
||||
Name: "Idal's Word",
|
||||
Kind: StarSystemKind.Side,
|
||||
SystemCategory: StarSystemCategory.SideSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -441,7 +470,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData IgneousCascade = new(
|
||||
Id: "IgneousCascade",
|
||||
Name: "Igneous Cascade",
|
||||
Kind: StarSystemKind.Side,
|
||||
SystemCategory: StarSystemCategory.SideSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -456,7 +486,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData InfernoSEdgeStronghold = new(
|
||||
Id: "InfernoSEdgeStronghold",
|
||||
Name: "Inferno's Edge Stronghold",
|
||||
Kind: StarSystemKind.Core,
|
||||
SystemCategory: StarSystemCategory.CoreSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: true,
|
||||
@@ -471,7 +502,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData IotanTears = new(
|
||||
Id: "IotanTears",
|
||||
Name: "Iotan Tears",
|
||||
Kind: StarSystemKind.Side,
|
||||
SystemCategory: StarSystemCategory.SideSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -486,7 +518,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData IvoryFields = new(
|
||||
Id: "IvoryFields",
|
||||
Name: "Ivory Fields",
|
||||
Kind: StarSystemKind.Homeworld,
|
||||
SystemCategory: StarSystemCategory.HomeworldSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -501,7 +534,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData IvorySteel = new(
|
||||
Id: "IvorySteel",
|
||||
Name: "Ivory Steel",
|
||||
Kind: StarSystemKind.Core,
|
||||
SystemCategory: StarSystemCategory.CoreSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -516,7 +550,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData LambdaGateway = new(
|
||||
Id: "LambdaGateway",
|
||||
Name: "Lambda Gateway",
|
||||
Kind: StarSystemKind.Core,
|
||||
SystemCategory: StarSystemCategory.CoreSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: true,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -531,7 +566,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData LeviathanSWake = new(
|
||||
Id: "LeviathanSWake",
|
||||
Name: "Leviathan's Wake",
|
||||
Kind: StarSystemKind.Core,
|
||||
SystemCategory: StarSystemCategory.CoreSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: true,
|
||||
@@ -546,7 +582,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData LightsBounty = new(
|
||||
Id: "LightsBounty",
|
||||
Name: "Lights Bounty",
|
||||
Kind: StarSystemKind.Homeworld,
|
||||
SystemCategory: StarSystemCategory.HomeworldSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: true,
|
||||
@@ -561,7 +598,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData MagentaBloom = new(
|
||||
Id: "MagentaBloom",
|
||||
Name: "Magenta Bloom",
|
||||
Kind: StarSystemKind.Side,
|
||||
SystemCategory: StarSystemCategory.SideSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -576,7 +614,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData MagneticFolly = new(
|
||||
Id: "MagneticFolly",
|
||||
Name: "Magnetic Folly",
|
||||
Kind: StarSystemKind.Core,
|
||||
SystemCategory: StarSystemCategory.CoreSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: true,
|
||||
HigherEnergyYield: false,
|
||||
@@ -591,7 +630,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData MercuryForge = new(
|
||||
Id: "MercuryForge",
|
||||
Name: "Mercury Forge",
|
||||
Kind: StarSystemKind.Core,
|
||||
SystemCategory: StarSystemCategory.CoreSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: true,
|
||||
HigherEnergyYield: false,
|
||||
@@ -606,7 +646,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData NebulonDrift = new(
|
||||
Id: "NebulonDrift",
|
||||
Name: "Nebulon Drift",
|
||||
Kind: StarSystemKind.Side,
|
||||
SystemCategory: StarSystemCategory.SideSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -621,7 +662,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData NeeraSGift = new(
|
||||
Id: "NeeraSGift",
|
||||
Name: "Neera's Gift",
|
||||
Kind: StarSystemKind.Homeworld,
|
||||
SystemCategory: StarSystemCategory.HomeworldSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -636,7 +678,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData NegativeIon = new(
|
||||
Id: "NegativeIon",
|
||||
Name: "Negative Ion",
|
||||
Kind: StarSystemKind.Core,
|
||||
SystemCategory: StarSystemCategory.CoreSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -651,7 +694,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData NexusPrime = new(
|
||||
Id: "NexusPrime",
|
||||
Name: "Nexus Prime",
|
||||
Kind: StarSystemKind.Homeworld,
|
||||
SystemCategory: StarSystemCategory.HomeworldSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: true,
|
||||
HigherEnergyYield: false,
|
||||
@@ -666,7 +710,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData NoxiousEnergy = new(
|
||||
Id: "NoxiousEnergy",
|
||||
Name: "Noxious Energy",
|
||||
Kind: StarSystemKind.Side,
|
||||
SystemCategory: StarSystemCategory.SideSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -681,7 +726,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData NucleicRedux = new(
|
||||
Id: "NucleicRedux",
|
||||
Name: "Nucleic Redux",
|
||||
Kind: StarSystemKind.Core,
|
||||
SystemCategory: StarSystemCategory.CoreSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -696,7 +742,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData ObsidianPalace = new(
|
||||
Id: "ObsidianPalace",
|
||||
Name: "Obsidian Palace",
|
||||
Kind: StarSystemKind.Homeworld,
|
||||
SystemCategory: StarSystemCategory.HomeworldSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -711,7 +758,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData OccamSAbode = new(
|
||||
Id: "OccamSAbode",
|
||||
Name: "Occam's Abode",
|
||||
Kind: StarSystemKind.Side,
|
||||
SystemCategory: StarSystemCategory.SideSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -726,7 +774,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData OrionSGate = new(
|
||||
Id: "OrionSGate",
|
||||
Name: "Orion's Gate",
|
||||
Kind: StarSystemKind.Core,
|
||||
SystemCategory: StarSystemCategory.CoreSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -741,7 +790,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData PleiadesCluster = new(
|
||||
Id: "PleiadesCluster",
|
||||
Name: "Pleiades Cluster",
|
||||
Kind: StarSystemKind.Side,
|
||||
SystemCategory: StarSystemCategory.SideSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: true,
|
||||
HigherEnergyYield: false,
|
||||
@@ -756,7 +806,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData ProximaPrime = new(
|
||||
Id: "ProximaPrime",
|
||||
Name: "Proxima Prime",
|
||||
Kind: StarSystemKind.Homeworld,
|
||||
SystemCategory: StarSystemCategory.HomeworldSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: true,
|
||||
HigherEnergyYield: false,
|
||||
@@ -771,7 +822,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData QuartzalianBerth = new(
|
||||
Id: "QuartzalianBerth",
|
||||
Name: "Quartzalian Berth",
|
||||
Kind: StarSystemKind.Side,
|
||||
SystemCategory: StarSystemCategory.SideSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -786,7 +838,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData RaiderSReef = new(
|
||||
Id: "RaiderSReef",
|
||||
Name: "Raider's Reef",
|
||||
Kind: StarSystemKind.Side,
|
||||
SystemCategory: StarSystemCategory.SideSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -801,7 +854,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData ScarlettIre = new(
|
||||
Id: "ScarlettIre",
|
||||
Name: "Scarlett Ire",
|
||||
Kind: StarSystemKind.Core,
|
||||
SystemCategory: StarSystemCategory.CoreSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -816,7 +870,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData ShatteredLight = new(
|
||||
Id: "ShatteredLight",
|
||||
Name: "Shattered Light",
|
||||
Kind: StarSystemKind.Core,
|
||||
SystemCategory: StarSystemCategory.CoreSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -831,7 +886,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData SigmaVortex = new(
|
||||
Id: "SigmaVortex",
|
||||
Name: "Sigma Vortex",
|
||||
Kind: StarSystemKind.Core,
|
||||
SystemCategory: StarSystemCategory.CoreSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -846,7 +902,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData SolarisReach = new(
|
||||
Id: "SolarisReach",
|
||||
Name: "Solaris Reach",
|
||||
Kind: StarSystemKind.Side,
|
||||
SystemCategory: StarSystemCategory.SideSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -861,7 +918,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData StarlessSky = new(
|
||||
Id: "StarlessSky",
|
||||
Name: "Starless Sky",
|
||||
Kind: StarSystemKind.Homeworld,
|
||||
SystemCategory: StarSystemCategory.HomeworldSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -876,7 +934,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData SteelDepths = new(
|
||||
Id: "SteelDepths",
|
||||
Name: "Steel Depths",
|
||||
Kind: StarSystemKind.Homeworld,
|
||||
SystemCategory: StarSystemCategory.HomeworldSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -891,7 +950,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData StellarForge = new(
|
||||
Id: "StellarForge",
|
||||
Name: "Stellar Forge",
|
||||
Kind: StarSystemKind.Core,
|
||||
SystemCategory: StarSystemCategory.CoreSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -906,7 +966,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData StrongholdAtlas = new(
|
||||
Id: "StrongholdAtlas",
|
||||
Name: "Stronghold Atlas",
|
||||
Kind: StarSystemKind.Homeworld,
|
||||
SystemCategory: StarSystemCategory.HomeworldSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -921,7 +982,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData StrongholdCronus = new(
|
||||
Id: "StrongholdCronus",
|
||||
Name: "Stronghold Cronus",
|
||||
Kind: StarSystemKind.Core,
|
||||
SystemCategory: StarSystemCategory.CoreSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: true,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -936,7 +998,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData StrongholdLeo = new(
|
||||
Id: "StrongholdLeo",
|
||||
Name: "Stronghold Leo",
|
||||
Kind: StarSystemKind.Homeworld,
|
||||
SystemCategory: StarSystemCategory.HomeworldSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: true,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -944,14 +1007,15 @@ public static class StarSystems
|
||||
OccupationBuff: "+100 Starting Hexite",
|
||||
SystemMastery: "Hero Damage",
|
||||
ConnectedSystems: ["Glittering Hope", "Neera's Gift", "Pleiades Cluster"],
|
||||
X: 330.4,
|
||||
Y: 128.2,
|
||||
X: 392.8,
|
||||
Y: 76.8,
|
||||
Body: "");
|
||||
|
||||
public static readonly StarSystemData StrongholdNovaCentauri = new(
|
||||
Id: "StrongholdNovaCentauri",
|
||||
Name: "Stronghold Nova Centauri",
|
||||
Kind: StarSystemKind.Homeworld,
|
||||
SystemCategory: StarSystemCategory.HomeworldSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -959,14 +1023,15 @@ public static class StarSystems
|
||||
OccupationBuff: "+0.1 Topbar regeneration rate",
|
||||
SystemMastery: "Starting Topbar Energy",
|
||||
ConnectedSystems: ["Aurora Vale", "Solaris Reach", "Yellow Dawn", "Proxima Prime"],
|
||||
X: 879.2,
|
||||
Y: 660.9,
|
||||
X: 334.2,
|
||||
Y: -14.3,
|
||||
Body: "");
|
||||
|
||||
public static readonly StarSystemData StrongholdOrion = new(
|
||||
Id: "StrongholdOrion",
|
||||
Name: "Stronghold Orion",
|
||||
Kind: StarSystemKind.Homeworld,
|
||||
SystemCategory: StarSystemCategory.HomeworldSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: true,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -981,7 +1046,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData StrongholdTau = new(
|
||||
Id: "StrongholdTau",
|
||||
Name: "Stronghold Tau",
|
||||
Kind: StarSystemKind.Homeworld,
|
||||
SystemCategory: StarSystemCategory.HomeworldSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: true,
|
||||
HigherEnergyYield: false,
|
||||
@@ -996,7 +1062,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData StrongholdVega = new(
|
||||
Id: "StrongholdVega",
|
||||
Name: "Stronghold Vega",
|
||||
Kind: StarSystemKind.Homeworld,
|
||||
SystemCategory: StarSystemCategory.HomeworldSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: true,
|
||||
HigherEnergyYield: false,
|
||||
@@ -1011,7 +1078,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData SullenDwarf = new(
|
||||
Id: "SullenDwarf",
|
||||
Name: "Sullen Dwarf",
|
||||
Kind: StarSystemKind.Side,
|
||||
SystemCategory: StarSystemCategory.SideSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -1026,7 +1094,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData TartarusExpanse = new(
|
||||
Id: "TartarusExpanse",
|
||||
Name: "Tartarus Expanse",
|
||||
Kind: StarSystemKind.Core,
|
||||
SystemCategory: StarSystemCategory.CoreSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -1041,7 +1110,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData TheCrucible = new(
|
||||
Id: "TheCrucible",
|
||||
Name: "The Crucible",
|
||||
Kind: StarSystemKind.Core,
|
||||
SystemCategory: StarSystemCategory.CoreSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: true,
|
||||
HigherEnergyYield: false,
|
||||
@@ -1056,7 +1126,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData TheHighCouncil = new(
|
||||
Id: "TheHighCouncil",
|
||||
Name: "The High Council",
|
||||
Kind: StarSystemKind.Homeworld,
|
||||
SystemCategory: StarSystemCategory.HomeworldSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: true,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -1071,7 +1142,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData TheUndergrowth = new(
|
||||
Id: "TheUndergrowth",
|
||||
Name: "The Undergrowth",
|
||||
Kind: StarSystemKind.Homeworld,
|
||||
SystemCategory: StarSystemCategory.HomeworldSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: true,
|
||||
HigherEnergyYield: false,
|
||||
@@ -1086,7 +1158,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData TitanSFall = new(
|
||||
Id: "TitanSFall",
|
||||
Name: "Titan's Fall",
|
||||
Kind: StarSystemKind.Core,
|
||||
SystemCategory: StarSystemCategory.CoreSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -1101,7 +1174,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData TyphonSCall = new(
|
||||
Id: "TyphonSCall",
|
||||
Name: "Typhon's Call",
|
||||
Kind: StarSystemKind.Homeworld,
|
||||
SystemCategory: StarSystemCategory.HomeworldSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: true,
|
||||
@@ -1116,7 +1190,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData UanachianWhirlpool = new(
|
||||
Id: "UanachianWhirlpool",
|
||||
Name: "Uanachian Whirlpool",
|
||||
Kind: StarSystemKind.Side,
|
||||
SystemCategory: StarSystemCategory.SideSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -1131,7 +1206,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData VoidStar = new(
|
||||
Id: "VoidStar",
|
||||
Name: "Void Star",
|
||||
Kind: StarSystemKind.Core,
|
||||
SystemCategory: StarSystemCategory.CoreSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -1139,14 +1215,15 @@ public static class StarSystems
|
||||
OccupationBuff: "+20 Topbar maximum energy",
|
||||
SystemMastery: "Unit Health and Shields",
|
||||
ConnectedSystems: ["Nucleic Redux", "Aquila Rift", "Devil's Trident", "Xenon Abyss", "Inferno's Edge Stronghold", "Tartarus Expanse"],
|
||||
X: 230,
|
||||
Y: 140.6,
|
||||
X: 813.8,
|
||||
Y: 93.6,
|
||||
Body: "");
|
||||
|
||||
public static readonly StarSystemData VulcanSBreath = new(
|
||||
Id: "VulcanSBreath",
|
||||
Name: "Vulcan's Breath",
|
||||
Kind: StarSystemKind.Core,
|
||||
SystemCategory: StarSystemCategory.CoreSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -1161,7 +1238,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData WildSEnd = new(
|
||||
Id: "WildSEnd",
|
||||
Name: "Wild's End",
|
||||
Kind: StarSystemKind.Homeworld,
|
||||
SystemCategory: StarSystemCategory.HomeworldSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: true,
|
||||
HigherEnergyYield: false,
|
||||
@@ -1176,7 +1254,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData XenonAbyss = new(
|
||||
Id: "XenonAbyss",
|
||||
Name: "Xenon Abyss",
|
||||
Kind: StarSystemKind.Core,
|
||||
SystemCategory: StarSystemCategory.CoreSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -1184,14 +1263,15 @@ public static class StarSystems
|
||||
OccupationBuff: "+10 Topbar starting energy",
|
||||
SystemMastery: "Starting Topbar Energy",
|
||||
ConnectedSystems: ["Devil's Trident", "Void Star", "Inferno's Edge Stronghold", "Shattered Light"],
|
||||
X: 623.3,
|
||||
Y: 58.5,
|
||||
X: 663.3,
|
||||
Y: 0,
|
||||
Body: "");
|
||||
|
||||
public static readonly StarSystemData XenthicFields = new(
|
||||
Id: "XenthicFields",
|
||||
Name: "Xenthic Fields",
|
||||
Kind: StarSystemKind.Side,
|
||||
SystemCategory: StarSystemCategory.SideSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -1206,7 +1286,8 @@ public static class StarSystems
|
||||
public static readonly StarSystemData YellowDawn = new(
|
||||
Id: "YellowDawn",
|
||||
Name: "Yellow Dawn",
|
||||
Kind: StarSystemKind.Homeworld,
|
||||
SystemCategory: StarSystemCategory.HomeworldSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
@@ -1214,14 +1295,15 @@ public static class StarSystems
|
||||
OccupationBuff: "+10 max supply",
|
||||
SystemMastery: "Hero Health and Shields",
|
||||
ConnectedSystems: ["Stronghold Nova Centauri", "Proxima Prime", "Eden's Heart"],
|
||||
X: 65.5,
|
||||
Y: 336.5,
|
||||
X: 430.6,
|
||||
Y: -2.9,
|
||||
Body: "");
|
||||
|
||||
public static readonly StarSystemData ZetaHorizon = new(
|
||||
Id: "ZetaHorizon",
|
||||
Name: "Zeta Horizon",
|
||||
Kind: StarSystemKind.Side,
|
||||
SystemCategory: StarSystemCategory.SideSystem,
|
||||
Owner: "The Eden Accord",
|
||||
HigherInfluenceYield: false,
|
||||
HigherCreditYield: false,
|
||||
HigherEnergyYield: false,
|
||||
|
||||
@@ -8,32 +8,89 @@
|
||||
<div class="d-flex flex-wrap align-items-center justify-content-between mb-3 gap-3">
|
||||
<div>
|
||||
<h1 class="h2 mb-1 text-light fw-bold">Galaxy Map</h1>
|
||||
<p class="text-secondary mb-0 small">Interactive tactical star chart displaying all planetary systems and
|
||||
hyperlane routes.</p>
|
||||
<p class="text-secondary mb-0 small">Interactive tactical star chart displaying all planetary systems and hyperlane routes.</p>
|
||||
</div>
|
||||
<div class="d-flex align-items-center gap-3">
|
||||
<div class="map-legend d-flex align-items-center gap-3 px-3 py-2 rounded">
|
||||
<div class="legend-item d-flex align-items-center gap-1">
|
||||
<span class="legend-dot dot-homeworld"></span>
|
||||
<span class="legend-text">Homeworld</span>
|
||||
</div>
|
||||
<div class="legend-item d-flex align-items-center gap-1">
|
||||
<span class="legend-dot dot-core"></span>
|
||||
<span class="legend-text">Core</span>
|
||||
</div>
|
||||
<div class="legend-item d-flex align-items-center gap-1">
|
||||
<span class="legend-dot dot-side"></span>
|
||||
<span class="legend-text">Side</span>
|
||||
<div class="d-flex flex-wrap align-items-center gap-3">
|
||||
<div class="map-legend d-flex flex-wrap align-items-center gap-3 px-3 py-2 rounded">
|
||||
<div class="legend-group d-flex align-items-center gap-2">
|
||||
<span class="legend-header text-dim fs-8 text-uppercase">Faction:</span>
|
||||
<div class="legend-item d-flex align-items-center gap-1" title="The Eden Accord (Green)">
|
||||
<span class="legend-dot dot-eden"></span>
|
||||
<span class="legend-text">Eden Accord</span>
|
||||
</div>
|
||||
<div class="legend-item d-flex align-items-center gap-1" title="The Keeper Council (Blue)">
|
||||
<span class="legend-dot dot-keeper"></span>
|
||||
<span class="legend-text">Keeper Council</span>
|
||||
</div>
|
||||
<div class="legend-item d-flex align-items-center gap-1" title="The Obsidian Order (Red)">
|
||||
<span class="legend-dot dot-obsidian"></span>
|
||||
<span class="legend-text">Obsidian Order</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="map-stats text-secondary small px-3 py-2 rounded">
|
||||
<span><strong>@_systems.Count</strong> Systems</span>
|
||||
<span><strong>@_matchingCount</strong> / <strong>@_systems.Count</strong> Systems</span>
|
||||
<span class="mx-1">•</span>
|
||||
<span><strong>@_connections.Count</strong> Hyperlanes</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Filter Control Bar -->
|
||||
<div class="filter-bar zs-glass-card p-3 mb-3 d-flex flex-wrap align-items-center gap-3">
|
||||
<div class="d-flex align-items-center gap-2 filter-item">
|
||||
<label class="filter-label text-dim small fw-semibold text-uppercase">System Type:</label>
|
||||
<select class="form-select form-select-sm scifi-select" @bind="_selectedCategory" @bind:after="ApplyFilters">
|
||||
<option value="">All Types</option>
|
||||
<option value="@StarSystemCategory.HomeworldSystem">Homeworld System</option>
|
||||
<option value="@StarSystemCategory.CoreSystem">Core System</option>
|
||||
<option value="@StarSystemCategory.SideSystem">Side System</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="d-flex align-items-center gap-2 filter-item">
|
||||
<label class="filter-label text-dim small fw-semibold text-uppercase">Mastery:</label>
|
||||
<select class="form-select form-select-sm scifi-select" @bind="_selectedMastery" @bind:after="ApplyFilters">
|
||||
<option value="">All Masteries</option>
|
||||
<option value="__ANY__">Any Mastery</option>
|
||||
@foreach (var mastery in _availableMasteries)
|
||||
{
|
||||
<option value="@mastery">@mastery</option>
|
||||
}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="d-flex align-items-center gap-2 filter-item">
|
||||
<label class="filter-label text-dim small fw-semibold text-uppercase">Special Yields:</label>
|
||||
<select class="form-select form-select-sm scifi-select" @bind="_selectedYield" @bind:after="ApplyFilters">
|
||||
<option value="">All Yields</option>
|
||||
<option value="ANY">Any Special Yield</option>
|
||||
<option value="Influence">Higher Influence</option>
|
||||
<option value="Credits">Higher Credits</option>
|
||||
<option value="Energy">Higher Energy</option>
|
||||
<option value="Items">Higher Items</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="d-flex align-items-center gap-2 filter-item">
|
||||
<label class="filter-label text-dim small fw-semibold text-uppercase">Faction:</label>
|
||||
<select class="form-select form-select-sm scifi-select" @bind="_selectedOwner" @bind:after="ApplyFilters">
|
||||
<option value="">All Factions</option>
|
||||
@foreach (var owner in StarSystemOwners.All)
|
||||
{
|
||||
<option value="@owner">@owner</option>
|
||||
}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
@if (HasActiveFilters)
|
||||
{
|
||||
<button class="btn btn-sm btn-scifi-outline py-1 px-3 ms-auto" @onclick="ResetFilters">
|
||||
<span>Reset Filters</span>
|
||||
</button>
|
||||
}
|
||||
</div>
|
||||
|
||||
<div class="galaxy-map-container" @onmouseleave="OnContainerMouseLeave">
|
||||
<svg viewBox="0 0 1000 1000" class="galaxy-svg" preserveAspectRatio="xMidYMid meet"
|
||||
xmlns="http://www.w3.org/2000/svg">
|
||||
@@ -50,23 +107,23 @@
|
||||
<stop offset="100%" stop-color="rgba(13, 17, 23, 0)"/>
|
||||
</radialGradient>
|
||||
|
||||
<!-- Glow filters -->
|
||||
<filter id="glow-homeworld" x="-50%" y="-50%" width="200%" height="200%">
|
||||
<!-- Glow filters for Owners / Factions -->
|
||||
<filter id="glow-eden" x="-50%" y="-50%" width="200%" height="200%">
|
||||
<feGaussianBlur in="SourceGraphic" stdDeviation="3" result="blur"/>
|
||||
<feMerge>
|
||||
<feMergeNode in="blur"/>
|
||||
<feMergeNode in="SourceGraphic"/>
|
||||
</feMerge>
|
||||
</filter>
|
||||
<filter id="glow-core" x="-50%" y="-50%" width="200%" height="200%">
|
||||
<filter id="glow-keeper" x="-50%" y="-50%" width="200%" height="200%">
|
||||
<feGaussianBlur in="SourceGraphic" stdDeviation="3" result="blur"/>
|
||||
<feMerge>
|
||||
<feMergeNode in="blur"/>
|
||||
<feMergeNode in="SourceGraphic"/>
|
||||
</feMerge>
|
||||
</filter>
|
||||
<filter id="glow-side" x="-50%" y="-50%" width="200%" height="200%">
|
||||
<feGaussianBlur in="SourceGraphic" stdDeviation="2.5" result="blur"/>
|
||||
<filter id="glow-obsidian" x="-50%" y="-50%" width="200%" height="200%">
|
||||
<feGaussianBlur in="SourceGraphic" stdDeviation="3" result="blur"/>
|
||||
<feMerge>
|
||||
<feMergeNode in="blur"/>
|
||||
<feMergeNode in="SourceGraphic"/>
|
||||
@@ -83,12 +140,17 @@
|
||||
<g class="hyperlanes">
|
||||
@foreach (var edge in _connections)
|
||||
{
|
||||
var isHighlighted = _hoveredSystem is not null &&
|
||||
var isFromMatch = _matchingSystemIds.Contains(edge.From.Id);
|
||||
var isToMatch = _matchingSystemIds.Contains(edge.To.Id);
|
||||
var isFilterDimmed = HasActiveFilters && (!isFromMatch || !isToMatch);
|
||||
|
||||
var isHoverHighlighted = _hoveredSystem is not null &&
|
||||
(string.Equals(edge.From.Id, _hoveredSystem.Id, StringComparison.OrdinalIgnoreCase) ||
|
||||
string.Equals(edge.To.Id, _hoveredSystem.Id, StringComparison.OrdinalIgnoreCase));
|
||||
var isDimmed = _hoveredSystem is not null && !isHighlighted;
|
||||
var lineClass = isHighlighted ? "hyperlane-line hyperlane-highlighted" :
|
||||
isDimmed ? "hyperlane-line hyperlane-dimmed" : "hyperlane-line";
|
||||
var isHoverDimmed = _hoveredSystem is not null && !isHoverHighlighted;
|
||||
|
||||
var lineClass = isHoverHighlighted ? "hyperlane-line hyperlane-highlighted" :
|
||||
(isHoverDimmed || isFilterDimmed) ? "hyperlane-line hyperlane-dimmed" : "hyperlane-line";
|
||||
<line x1="@SvgNumber(edge.From.X)"
|
||||
y1="@SvgNumber(edge.From.Y)"
|
||||
x2="@SvgNumber(edge.To.X)"
|
||||
@@ -101,16 +163,18 @@
|
||||
<g class="planetary-nodes">
|
||||
@foreach (var system in _systems)
|
||||
{
|
||||
var kindClass = GetKindCssClass(system.Kind);
|
||||
var radius = GetNodeRadius(system.Kind);
|
||||
var ownerClass = GetOwnerCssClass(system.Owner);
|
||||
var radius = GetNodeRadius(system.SystemCategory);
|
||||
var isMatch = _matchingSystemIds.Contains(system.Id);
|
||||
var isHovered = _hoveredSystem is not null && string.Equals(system.Id, _hoveredSystem.Id, StringComparison.OrdinalIgnoreCase);
|
||||
var isNeighbor = _hoveredConnectedIds.Contains(system.Id);
|
||||
var isDimmed = _hoveredSystem is not null && !isHovered && !isNeighbor;
|
||||
var isDimmed = (_hoveredSystem is not null && !isHovered && !isNeighbor) || (HasActiveFilters && !isMatch);
|
||||
var stateClass = isHovered ? "is-hovered" :
|
||||
isNeighbor ? "is-neighbor" :
|
||||
isDimmed ? "is-dimmed" : "";
|
||||
isDimmed ? "is-dimmed" :
|
||||
(HasActiveFilters && isMatch ? "is-filter-matched" : "");
|
||||
|
||||
<g class="node-group @kindClass @stateClass"
|
||||
<g class="node-group @ownerClass @stateClass"
|
||||
transform="translate(@SvgNumber(system.X), @SvgNumber(system.Y))"
|
||||
@onclick="() => OnNodeClick(system.Id)"
|
||||
@onmouseenter="() => OnNodeMouseEnter(system)"
|
||||
@@ -120,7 +184,7 @@
|
||||
@onkeydown="e => OnNodeKeyDown(e, system.Id)"
|
||||
tabindex="0"
|
||||
role="button"
|
||||
aria-label="@system.Name (@system.Kind)">
|
||||
aria-label="@system.Name (@system.SystemCategory.ToDisplayName(), @system.Owner)">
|
||||
|
||||
<!-- Outer aura/glow circle -->
|
||||
<circle r="@SvgNumber(radius + 4)" class="node-aura"/>
|
||||
@@ -129,7 +193,7 @@
|
||||
<circle r="@SvgNumber(radius)" class="node-circle"/>
|
||||
|
||||
<!-- Center core dot for homeworlds and core systems -->
|
||||
@if (system.Kind != StarSystemKind.Side)
|
||||
@if (system.SystemCategory != StarSystemCategory.SideSystem)
|
||||
{
|
||||
<circle r="@SvgNumber(radius * 0.4)" class="node-core-dot"/>
|
||||
}
|
||||
@@ -144,21 +208,26 @@
|
||||
<!-- Floating Glassmorphism Hover Card -->
|
||||
@if (_hoveredSystem is not null)
|
||||
{
|
||||
var kindClass = GetKindCssClass(_hoveredSystem.Kind);
|
||||
var ownerClass = GetOwnerCssClass(_hoveredSystem.Owner);
|
||||
var higherYields = GetHigherYields(_hoveredSystem);
|
||||
<div class="planet-hover-card @kindClass"
|
||||
<div class="planet-hover-card @ownerClass"
|
||||
style="@GetTooltipStyle(_hoveredSystem)"
|
||||
role="tooltip"
|
||||
aria-live="polite">
|
||||
<div class="card-header-row d-flex align-items-center justify-content-between mb-2">
|
||||
<div class="d-flex align-items-center gap-2">
|
||||
<span class="system-kind-indicator"></span>
|
||||
<span class="system-owner-indicator"></span>
|
||||
<span class="system-title fw-bold text-light">@_hoveredSystem.Name</span>
|
||||
</div>
|
||||
<span class="badge kind-badge">@_hoveredSystem.Kind</span>
|
||||
<span class="badge @CategoryBadgeClass(_hoveredSystem.SystemCategory)">@_hoveredSystem.SystemCategory.ToDisplayName()</span>
|
||||
</div>
|
||||
|
||||
<div class="card-details-grid">
|
||||
<div class="detail-row">
|
||||
<span class="detail-label">Faction Owner</span>
|
||||
<span class="badge @OwnerBadgeClass(_hoveredSystem.Owner) mt-1">@_hoveredSystem.Owner</span>
|
||||
</div>
|
||||
|
||||
<div class="detail-row">
|
||||
<span class="detail-label">Occupation Buff</span>
|
||||
<span class="detail-value @(_hoveredSystem.OccupationBuff != null ? "text-buff" : "text-secondary")">
|
||||
@@ -215,13 +284,93 @@
|
||||
|
||||
private IReadOnlyList<StarSystemData> _systems = [];
|
||||
private IReadOnlyList<ConnectionEdge> _connections = [];
|
||||
private IReadOnlyList<string> _availableMasteries = [];
|
||||
private StarSystemData? _hoveredSystem;
|
||||
private readonly HashSet<string> _hoveredConnectedIds = new(StringComparer.OrdinalIgnoreCase);
|
||||
private readonly HashSet<string> _matchingSystemIds = new(StringComparer.OrdinalIgnoreCase);
|
||||
|
||||
private StarSystemCategory? _selectedCategory;
|
||||
private string _selectedMastery = string.Empty;
|
||||
private string _selectedYield = string.Empty;
|
||||
private string _selectedOwner = string.Empty;
|
||||
private int _matchingCount;
|
||||
|
||||
private bool HasActiveFilters =>
|
||||
_selectedCategory.HasValue ||
|
||||
!string.IsNullOrEmpty(_selectedMastery) ||
|
||||
!string.IsNullOrEmpty(_selectedYield) ||
|
||||
!string.IsNullOrEmpty(_selectedOwner);
|
||||
|
||||
protected override void OnInitialized()
|
||||
{
|
||||
_systems = StarSystems.All;
|
||||
_connections = BuildUniqueConnections(_systems);
|
||||
_availableMasteries = SystemMasteries.All.Select(m => m.Name).Distinct().OrderBy(m => m).ToList();
|
||||
ApplyFilters();
|
||||
}
|
||||
|
||||
private void ApplyFilters()
|
||||
{
|
||||
_matchingSystemIds.Clear();
|
||||
foreach (var system in _systems)
|
||||
{
|
||||
if (MatchesFilters(system))
|
||||
{
|
||||
_matchingSystemIds.Add(system.Id);
|
||||
}
|
||||
}
|
||||
_matchingCount = _matchingSystemIds.Count;
|
||||
}
|
||||
|
||||
private bool MatchesFilters(StarSystemData system)
|
||||
{
|
||||
if (_selectedCategory.HasValue && system.SystemCategory != _selectedCategory.Value)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(_selectedMastery))
|
||||
{
|
||||
if (_selectedMastery == "__ANY__")
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(system.SystemMastery)) return false;
|
||||
}
|
||||
else if (!string.Equals(system.SystemMastery, _selectedMastery, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(_selectedYield))
|
||||
{
|
||||
if (_selectedYield == "ANY")
|
||||
{
|
||||
if (!system.HigherInfluenceYield && !system.HigherCreditYield && !system.HigherEnergyYield && !system.HigherChanceForItems)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else if (_selectedYield == "Influence" && !system.HigherInfluenceYield) return false;
|
||||
else if (_selectedYield == "Credits" && !system.HigherCreditYield) return false;
|
||||
else if (_selectedYield == "Energy" && !system.HigherEnergyYield) return false;
|
||||
else if (_selectedYield == "Items" && !system.HigherChanceForItems) return false;
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(_selectedOwner) && !string.Equals(system.Owner, _selectedOwner, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private void ResetFilters()
|
||||
{
|
||||
_selectedCategory = null;
|
||||
_selectedMastery = string.Empty;
|
||||
_selectedYield = string.Empty;
|
||||
_selectedOwner = string.Empty;
|
||||
ApplyFilters();
|
||||
}
|
||||
|
||||
private static IReadOnlyList<ConnectionEdge> BuildUniqueConnections(IReadOnlyList<StarSystemData> allSystems)
|
||||
@@ -371,17 +520,34 @@
|
||||
return $"left: {SvgNumber(posX)}%; top: {SvgNumber(posY)}%; transform: {transform};";
|
||||
}
|
||||
|
||||
private static string GetKindCssClass(StarSystemKind kind) => kind switch
|
||||
private static string GetOwnerCssClass(string owner) => owner switch
|
||||
{
|
||||
StarSystemKind.Homeworld => "kind-homeworld",
|
||||
StarSystemKind.Core => "kind-core",
|
||||
_ => "kind-side"
|
||||
StarSystemOwners.EdenAccord => "owner-eden",
|
||||
StarSystemOwners.KeeperCouncil => "owner-keeper",
|
||||
StarSystemOwners.ObsidianOrder => "owner-obsidian",
|
||||
_ => "owner-eden"
|
||||
};
|
||||
|
||||
private static double GetNodeRadius(StarSystemKind kind) => kind switch
|
||||
private static string CategoryBadgeClass(StarSystemCategory category) => category switch
|
||||
{
|
||||
StarSystemKind.Homeworld => 7.0,
|
||||
StarSystemKind.Core => 6.0,
|
||||
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 double GetNodeRadius(StarSystemCategory category) => category switch
|
||||
{
|
||||
StarSystemCategory.HomeworldSystem => 7.0,
|
||||
StarSystemCategory.CoreSystem => 6.0,
|
||||
_ => 4.5
|
||||
};
|
||||
|
||||
|
||||
@@ -17,21 +17,21 @@
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.dot-homeworld {
|
||||
.dot-eden {
|
||||
background-color: #10b981;
|
||||
box-shadow: 0 0 8px rgba(16, 185, 129, 0.7);
|
||||
}
|
||||
|
||||
.dot-core {
|
||||
background-color: #f59e0b;
|
||||
box-shadow: 0 0 8px rgba(245, 158, 11, 0.7);
|
||||
}
|
||||
|
||||
.dot-side {
|
||||
.dot-keeper {
|
||||
background-color: #38bdf8;
|
||||
box-shadow: 0 0 8px rgba(56, 189, 248, 0.7);
|
||||
}
|
||||
|
||||
.dot-obsidian {
|
||||
background-color: #ef4444;
|
||||
box-shadow: 0 0 8px rgba(239, 68, 68, 0.7);
|
||||
}
|
||||
|
||||
.legend-text {
|
||||
font-size: 0.85rem;
|
||||
color: #c9d1d9;
|
||||
@@ -116,35 +116,35 @@
|
||||
transition: fill 0.2s ease, font-weight 0.2s ease, font-size 0.2s ease;
|
||||
}
|
||||
|
||||
/* Kinds */
|
||||
.kind-homeworld .node-circle {
|
||||
/* Faction owner colors */
|
||||
.owner-eden .node-circle {
|
||||
fill: #10b981;
|
||||
stroke: #34d399;
|
||||
}
|
||||
|
||||
.kind-homeworld .node-aura {
|
||||
.owner-eden .node-aura {
|
||||
fill: #10b981;
|
||||
filter: url(#glow-homeworld);
|
||||
filter: url(#glow-eden);
|
||||
}
|
||||
|
||||
.kind-core .node-circle {
|
||||
fill: #f59e0b;
|
||||
stroke: #fbbf24;
|
||||
}
|
||||
|
||||
.kind-core .node-aura {
|
||||
fill: #f59e0b;
|
||||
filter: url(#glow-core);
|
||||
}
|
||||
|
||||
.kind-side .node-circle {
|
||||
.owner-keeper .node-circle {
|
||||
fill: #38bdf8;
|
||||
stroke: #7dd3fc;
|
||||
}
|
||||
|
||||
.kind-side .node-aura {
|
||||
.owner-keeper .node-aura {
|
||||
fill: #38bdf8;
|
||||
filter: url(#glow-side);
|
||||
filter: url(#glow-keeper);
|
||||
}
|
||||
|
||||
.owner-obsidian .node-circle {
|
||||
fill: #ef4444;
|
||||
stroke: #f87171;
|
||||
}
|
||||
|
||||
.owner-obsidian .node-aura {
|
||||
fill: #ef4444;
|
||||
filter: url(#glow-obsidian);
|
||||
}
|
||||
|
||||
/* Node State Styles */
|
||||
@@ -228,7 +228,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
.system-kind-indicator {
|
||||
.system-owner-indicator {
|
||||
width: 9px;
|
||||
height: 9px;
|
||||
border-radius: 50%;
|
||||
@@ -247,49 +247,34 @@
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
||||
/* Kind Variant Themes for Hover Card */
|
||||
.planet-hover-card.kind-homeworld {
|
||||
/* Faction owner themes for hover card */
|
||||
.planet-hover-card.owner-eden {
|
||||
border-color: rgba(16, 185, 129, 0.45);
|
||||
box-shadow: 0 16px 36px rgba(0, 0, 0, 0.8), 0 0 24px rgba(16, 185, 129, 0.18);
|
||||
}
|
||||
.planet-hover-card.kind-homeworld .kind-badge {
|
||||
background: rgba(16, 185, 129, 0.2);
|
||||
color: #34d399;
|
||||
border: 1px solid rgba(16, 185, 129, 0.4);
|
||||
}
|
||||
.planet-hover-card.kind-homeworld .system-kind-indicator {
|
||||
.planet-hover-card.owner-eden .system-owner-indicator {
|
||||
background-color: #10b981;
|
||||
box-shadow: 0 0 8px rgba(16, 185, 129, 0.8);
|
||||
}
|
||||
|
||||
.planet-hover-card.kind-core {
|
||||
border-color: rgba(245, 158, 11, 0.45);
|
||||
box-shadow: 0 16px 36px rgba(0, 0, 0, 0.8), 0 0 24px rgba(245, 158, 11, 0.18);
|
||||
}
|
||||
.planet-hover-card.kind-core .kind-badge {
|
||||
background: rgba(245, 158, 11, 0.2);
|
||||
color: #fbbf24;
|
||||
border: 1px solid rgba(245, 158, 11, 0.4);
|
||||
}
|
||||
.planet-hover-card.kind-core .system-kind-indicator {
|
||||
background-color: #f59e0b;
|
||||
box-shadow: 0 0 8px rgba(245, 158, 11, 0.8);
|
||||
}
|
||||
|
||||
.planet-hover-card.kind-side {
|
||||
.planet-hover-card.owner-keeper {
|
||||
border-color: rgba(56, 189, 248, 0.45);
|
||||
box-shadow: 0 16px 36px rgba(0, 0, 0, 0.8), 0 0 24px rgba(56, 189, 248, 0.18);
|
||||
}
|
||||
.planet-hover-card.kind-side .kind-badge {
|
||||
background: rgba(56, 189, 248, 0.2);
|
||||
color: #7dd3fc;
|
||||
border: 1px solid rgba(56, 189, 248, 0.4);
|
||||
}
|
||||
.planet-hover-card.kind-side .system-kind-indicator {
|
||||
.planet-hover-card.owner-keeper .system-owner-indicator {
|
||||
background-color: #38bdf8;
|
||||
box-shadow: 0 0 8px rgba(56, 189, 248, 0.8);
|
||||
}
|
||||
|
||||
.planet-hover-card.owner-obsidian {
|
||||
border-color: rgba(239, 68, 68, 0.45);
|
||||
box-shadow: 0 16px 36px rgba(0, 0, 0, 0.8), 0 0 24px rgba(239, 68, 68, 0.18);
|
||||
}
|
||||
.planet-hover-card.owner-obsidian .system-owner-indicator {
|
||||
background-color: #ef4444;
|
||||
box-shadow: 0 0 8px rgba(239, 68, 68, 0.8);
|
||||
}
|
||||
|
||||
/* Card Details Grid */
|
||||
.card-details-grid {
|
||||
display: flex;
|
||||
|
||||
@@ -279,9 +279,9 @@
|
||||
protected override void OnInitialized()
|
||||
{
|
||||
totalSystemsCount = StarSystems.All.Count;
|
||||
homeworldsCount = StarSystems.All.Count(s => s.Kind == StarSystemKind.Homeworld);
|
||||
coreCount = StarSystems.All.Count(s => s.Kind == StarSystemKind.Core);
|
||||
sideCount = StarSystems.All.Count(s => s.Kind == StarSystemKind.Side);
|
||||
homeworldsCount = StarSystems.All.Count(s => s.SystemCategory == StarSystemCategory.HomeworldSystem);
|
||||
coreCount = StarSystems.All.Count(s => s.SystemCategory == StarSystemCategory.CoreSystem);
|
||||
sideCount = StarSystems.All.Count(s => s.SystemCategory == StarSystemCategory.SideSystem);
|
||||
|
||||
// Calculate unique hyperlanes
|
||||
var edges = new HashSet<string>(StringComparer.OrdinalIgnoreCase);
|
||||
|
||||
@@ -12,7 +12,8 @@ else
|
||||
{
|
||||
<div class="section-header d-flex align-items-center mb-4">
|
||||
<h1 class="mb-0">@system.Name</h1>
|
||||
<span class="badge @KindBadgeClass(system.Kind) ms-3">@system.Kind</span>
|
||||
<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>
|
||||
@@ -20,6 +21,14 @@ else
|
||||
</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>
|
||||
|
||||
@@ -86,11 +95,19 @@ else
|
||||
system = StarSystems.All.FirstOrDefault(s => s.Id.Equals(Id, StringComparison.OrdinalIgnoreCase));
|
||||
}
|
||||
|
||||
private static string KindBadgeClass(StarSystemKind kind) => kind switch
|
||||
private static string CategoryBadgeClass(StarSystemCategory category) => category switch
|
||||
{
|
||||
StarSystemKind.Homeworld => "badge-homeworld",
|
||||
StarSystemKind.Core => "badge-core",
|
||||
StarSystemKind.Side => "badge-side",
|
||||
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"
|
||||
};
|
||||
|
||||
|
||||
@@ -16,19 +16,19 @@
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@foreach (var kind in Enum.GetValues<StarSystemKind>())
|
||||
@foreach (var category in Enum.GetValues<StarSystemCategory>())
|
||||
{
|
||||
var systems = StarSystems.All.Where(s => s.Kind == kind).OrderBy(s => s.Name).ToList();
|
||||
var badgeClass = kind switch {
|
||||
StarSystemKind.Homeworld => "badge-homeworld",
|
||||
StarSystemKind.Core => "badge-core",
|
||||
StarSystemKind.Side => "badge-side",
|
||||
var systems = StarSystems.All.Where(s => s.SystemCategory == category).OrderBy(s => s.Name).ToList();
|
||||
var badgeClass = category switch {
|
||||
StarSystemCategory.HomeworldSystem => "badge-homeworld",
|
||||
StarSystemCategory.CoreSystem => "badge-core",
|
||||
StarSystemCategory.SideSystem => "badge-side",
|
||||
_ => "badge-side"
|
||||
};
|
||||
|
||||
<div class="mb-4">
|
||||
<div class="d-flex align-items-center gap-2 mb-3">
|
||||
<h2 class="h4 mb-0 text-white">@kind Systems</h2>
|
||||
<h2 class="h4 mb-0 text-white">@category.ToDisplayName()</h2>
|
||||
<span class="badge @badgeClass">@systems.Count</span>
|
||||
</div>
|
||||
<ul class="list-unstyled row g-2">
|
||||
@@ -36,10 +36,13 @@
|
||||
{
|
||||
<li class="col-md-4 col-lg-3">
|
||||
<a class="d-block p-2 rounded zs-glass-card text-decoration-none" href="/StarSystem/@system.Id">
|
||||
<span class="fw-semibold text-white">@system.Name</span>
|
||||
<div class="d-flex align-items-center justify-content-between">
|
||||
<span class="fw-semibold text-white">@system.Name</span>
|
||||
<span class="badge @OwnerBadgeClass(system.Owner) fs-8">@system.Owner</span>
|
||||
</div>
|
||||
@if (!string.IsNullOrWhiteSpace(system.OccupationBuff))
|
||||
{
|
||||
<div class="small text-dim text-truncate" title="@system.OccupationBuff">@system.OccupationBuff</div>
|
||||
<div class="small text-dim text-truncate mt-1" title="@system.OccupationBuff">@system.OccupationBuff</div>
|
||||
}
|
||||
</a>
|
||||
</li>
|
||||
@@ -47,3 +50,13 @@
|
||||
</ul>
|
||||
</div>
|
||||
}
|
||||
|
||||
@code {
|
||||
private static string OwnerBadgeClass(string owner) => owner switch
|
||||
{
|
||||
StarSystemOwners.EdenAccord => "badge-eden",
|
||||
StarSystemOwners.KeeperCouncil => "badge-keeper",
|
||||
StarSystemOwners.ObsidianOrder => "badge-obsidian",
|
||||
_ => "badge-side"
|
||||
};
|
||||
}
|
||||
|
||||
@@ -118,6 +118,30 @@ p {
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.badge-eden {
|
||||
background: rgba(16, 185, 129, 0.18);
|
||||
color: #34d399;
|
||||
border: 1px solid rgba(16, 185, 129, 0.45);
|
||||
box-shadow: 0 0 8px rgba(16, 185, 129, 0.25);
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.badge-keeper {
|
||||
background: rgba(56, 189, 248, 0.18);
|
||||
color: #7dd3fc;
|
||||
border: 1px solid rgba(56, 189, 248, 0.45);
|
||||
box-shadow: 0 0 8px rgba(56, 189, 248, 0.25);
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.badge-obsidian {
|
||||
background: rgba(239, 68, 68, 0.18);
|
||||
color: #f87171;
|
||||
border: 1px solid rgba(239, 68, 68, 0.45);
|
||||
box-shadow: 0 0 8px rgba(239, 68, 68, 0.25);
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.badge-mastery {
|
||||
background: rgba(167, 139, 250, 0.18);
|
||||
color: #c4b5fd;
|
||||
|
||||
Reference in New Issue
Block a user