Notes and Vibe start

This commit is contained in:
2026-06-14 14:55:42 -04:00
commit d231ceded9
150 changed files with 62364 additions and 0 deletions
+9
View File
@@ -0,0 +1,9 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>
+32
View File
@@ -0,0 +1,32 @@
namespace Model;
public sealed record UnitData(
string Id,
string Name,
int Hexite,
int Flux,
int Supply,
int ProductionTime,
int Health,
int Energy,
int Shields,
int ArmorRating,
int MovementSpeed,
int DamagePerSecond,
int AttackRange,
IReadOnlyList<string> Attributes,
int Tier,
string Faction,
string? Hotkey,
int BuildAtSameTime,
int? Limit)
{
public double DpsPerHexite => UnitEfficiency.CalculateDpsPerHexite(DamagePerSecond, Hexite);
public double DpsPerFlux => UnitEfficiency.CalculateDpsPerFlux(DamagePerSecond, Flux);
public double DpsPerTotalCost => UnitEfficiency.CalculateDpsPerTotalCost(DamagePerSecond, Hexite, Flux);
public double HealthPerHexite => UnitEfficiency.CalculateHealthPerHexite(Health, Hexite);
public double HealthPerFlux => UnitEfficiency.CalculateHealthPerFlux(Health, Flux);
public double HealthPerTotalCost => UnitEfficiency.CalculateHealthPerTotalCost(Health, Hexite, Flux);
}
+22
View File
@@ -0,0 +1,22 @@
namespace Model;
public static class UnitEfficiency
{
public static double CalculateDpsPerHexite(int damagePerSecond, int hexite) => CalculateEfficiency(damagePerSecond, hexite);
public static double CalculateDpsPerFlux(int damagePerSecond, int flux) => CalculateEfficiency(damagePerSecond, flux);
public static double CalculateDpsPerTotalCost(int damagePerSecond, int hexite, int flux) => CalculateEfficiency(damagePerSecond, hexite + flux);
public static double CalculateHealthPerHexite(int health, int hexite) => CalculateEfficiency(health, hexite);
public static double CalculateHealthPerFlux(int health, int flux) => CalculateEfficiency(health, flux);
public static double CalculateHealthPerTotalCost(int health, int hexite, int flux) => CalculateEfficiency(health, hexite + flux);
private static double CalculateEfficiency(int value, int cost)
{
if (cost <= 0)
{
return value > 0 ? double.PositiveInfinity : 0;
}
return (double)value / cost;
}
}
+361
View File
@@ -0,0 +1,361 @@
// <auto-generated />
namespace Model;
public static class Units
{
public static readonly UnitData CorsairRaiders = new(
Id: "CorsairRaiders",
Name: "Corsair Raiders",
Hexite: 58,
Flux: 0,
Supply: 2,
ProductionTime: 30,
Health: 175,
Energy: 0,
Shields: 0,
ArmorRating: 0,
MovementSpeed: 650,
DamagePerSecond: 8,
AttackRange: 8,
Attributes: ["Light Armor", "Biological"],
Tier: 1,
Faction: "Corsair",
Hotkey: "Z",
BuildAtSameTime: 3,
Limit: null);
public static readonly UnitData CorsairRovers = new(
Id: "CorsairRovers",
Name: "Corsair Rovers",
Hexite: 100,
Flux: 25,
Supply: 3,
ProductionTime: 35,
Health: 320,
Energy: 0,
Shields: 0,
ArmorRating: 0,
MovementSpeed: 750,
DamagePerSecond: 17,
AttackRange: 7,
Attributes: ["Light Armor"],
Tier: 1,
Faction: "Corsair",
Hotkey: "X",
BuildAtSameTime: 2,
Limit: null);
public static readonly UnitData CorsairSnipers = new(
Id: "CorsairSnipers",
Name: "Corsair Snipers",
Hexite: 38,
Flux: 100,
Supply: 4,
ProductionTime: 30,
Health: 100,
Energy: 0,
Shields: 100,
ArmorRating: 0,
MovementSpeed: 425,
DamagePerSecond: 14,
AttackRange: 20,
Attributes: ["Light Armor", "Biological", "Bonus Damage vs Light Armor"],
Tier: 1,
Faction: "Corsair",
Hotkey: "C",
BuildAtSameTime: 2,
Limit: null);
public static readonly UnitData CorsairHovercraft = new(
Id: "CorsairHovercraft",
Name: "Corsair Hovercraft",
Hexite: 100,
Flux: 62,
Supply: 4,
ProductionTime: 20,
Health: 375,
Energy: 0,
Shields: 0,
ArmorRating: 0,
MovementSpeed: 550,
DamagePerSecond: 20,
AttackRange: 9,
Attributes: ["Medium Armor"],
Tier: 2,
Faction: "Corsair",
Hotkey: null,
BuildAtSameTime: 2,
Limit: null);
public static readonly UnitData CorsairFlamer = new(
Id: "CorsairFlamer",
Name: "Corsair Flamer",
Hexite: 100,
Flux: 200,
Supply: 6,
ProductionTime: 35,
Health: 1000,
Energy: 0,
Shields: 0,
ArmorRating: 2,
MovementSpeed: 450,
DamagePerSecond: 64,
AttackRange: 4,
Attributes: ["Heavy Armor", "Bonus Damage vs Light Armor", "Respawns for free after death"],
Tier: 3,
Faction: "Corsair",
Hotkey: "V",
BuildAtSameTime: 1,
Limit: null);
public static readonly UnitData Gatherer = new(
Id: "Gatherer",
Name: "Gatherer",
Hexite: 100,
Flux: 0,
Supply: 0,
ProductionTime: 18,
Health: 275,
Energy: 0,
Shields: 0,
ArmorRating: 0,
MovementSpeed: 510,
DamagePerSecond: 0,
AttackRange: 0,
Attributes: ["Biological", "Respawns for free after death"],
Tier: 0,
Faction: "Grell",
Hotkey: "H",
BuildAtSameTime: 1,
Limit: 5);
public static readonly UnitData BroodGuard = new(
Id: "BroodGuard",
Name: "Brood Guard",
Hexite: 125,
Flux: 0,
Supply: 3,
ProductionTime: 33,
Health: 250,
Energy: 0,
Shields: 0,
ArmorRating: 0,
MovementSpeed: 550,
DamagePerSecond: 15,
AttackRange: 1,
Attributes: ["Medium Armor", "Biological"],
Tier: 1,
Faction: "Grell",
Hotkey: "G",
BuildAtSameTime: 1,
Limit: null);
public static readonly UnitData Lasher = new(
Id: "Lasher",
Name: "Lasher",
Hexite: 50,
Flux: 25,
Supply: 2,
ProductionTime: 26,
Health: 150,
Energy: 0,
Shields: 0,
ArmorRating: 0,
MovementSpeed: 550,
DamagePerSecond: 14,
AttackRange: 8,
Attributes: ["Light Armor", "Biological", "Bonus Damage vs Medium Armor"],
Tier: 1,
Faction: "Grell",
Hotkey: "R",
BuildAtSameTime: 1,
Limit: null);
public static readonly UnitData Skrell = new(
Id: "Skrell",
Name: "Skrell",
Hexite: 12,
Flux: 19,
Supply: 1,
ProductionTime: 35,
Health: 50,
Energy: 0,
Shields: 0,
ArmorRating: 0,
MovementSpeed: 900,
DamagePerSecond: 5,
AttackRange: 2,
Attributes: ["Air unit", "Light Armor", "Biological", "Bonus Damage vs Air"],
Tier: 1,
Faction: "Grell",
Hotkey: "T",
BuildAtSameTime: 4,
Limit: null);
public static readonly UnitData Stinger = new(
Id: "Stinger",
Name: "Stinger",
Hexite: 25,
Flux: 0,
Supply: 1,
ProductionTime: 39,
Health: 90,
Energy: 0,
Shields: 0,
ArmorRating: 0,
MovementSpeed: 700,
DamagePerSecond: 9,
AttackRange: 1,
Attributes: ["Light Armor", "Biological"],
Tier: 1,
Faction: "Grell",
Hotkey: "Q",
BuildAtSameTime: 3,
Limit: null);
public static readonly UnitData Harbinger = new(
Id: "Harbinger",
Name: "Harbinger",
Hexite: 75,
Flux: 50,
Supply: 4,
ProductionTime: 35,
Health: 400,
Energy: 0,
Shields: 0,
ArmorRating: 1,
MovementSpeed: 475,
DamagePerSecond: 14,
AttackRange: 6,
Attributes: ["Biological", "Medium Armor", "Bonus Damage vs Heavy Armor"],
Tier: 2,
Faction: "Grell",
Hotkey: "W",
BuildAtSameTime: 1,
Limit: null);
public static readonly UnitData Mandragora = new(
Id: "Mandragora",
Name: "Mandragora",
Hexite: 125,
Flux: 25,
Supply: 4,
ProductionTime: 48,
Health: 450,
Energy: 0,
Shields: 0,
ArmorRating: 1,
MovementSpeed: 550,
DamagePerSecond: 22,
AttackRange: 4,
Attributes: ["Medium Armor", "Biological"],
Tier: 2,
Faction: "Grell",
Hotkey: "F",
BuildAtSameTime: 1,
Limit: null);
public static readonly UnitData Thresher = new(
Id: "Thresher",
Name: "Thresher",
Hexite: 100,
Flux: 175,
Supply: 8,
ProductionTime: 65,
Health: 300,
Energy: 0,
Shields: 0,
ArmorRating: 0,
MovementSpeed: 450,
DamagePerSecond: 36,
AttackRange: 27,
Attributes: ["Biological", "Heavy Armor", "Bonus Damage vs Buildings"],
Tier: 2,
Faction: "Grell",
Hotkey: "S",
BuildAtSameTime: 1,
Limit: null);
public static readonly UnitData Behemoth = new(
Id: "Behemoth",
Name: "Behemoth",
Hexite: 100,
Flux: 200,
Supply: 8,
ProductionTime: 80,
Health: 625,
Energy: 5,
Shields: 0,
ArmorRating: 1,
MovementSpeed: 500,
DamagePerSecond: 15,
AttackRange: 12,
Attributes: ["Air unit", "Regains Energy From Attacking", "Biological", "Heavy Armor", "Bonus Damage vs Heavy Armor"],
Tier: 3,
Faction: "Grell",
Hotkey: "D",
BuildAtSameTime: 1,
Limit: null);
public static readonly UnitData Reaver = new(
Id: "Reaver",
Name: "Reaver",
Hexite: 200,
Flux: 100,
Supply: 8,
ProductionTime: 80,
Health: 900,
Energy: 15,
Shields: 0,
ArmorRating: 3,
MovementSpeed: 525,
DamagePerSecond: 51,
AttackRange: 2,
Attributes: ["Regains Energy From Attacking", "Biological", "Heavy Armor"],
Tier: 3,
Faction: "Grell",
Hotkey: "A",
BuildAtSameTime: 1,
Limit: null);
public static readonly UnitData Weaver = new(
Id: "Weaver",
Name: "Weaver",
Hexite: 75,
Flux: 175,
Supply: 4,
ProductionTime: 40,
Health: 200,
Energy: 80,
Shields: 0,
ArmorRating: 0,
MovementSpeed: 650,
DamagePerSecond: 10,
AttackRange: 12,
Attributes: ["Medium Armor", "Biological", "Bonus Damage vs Air"],
Tier: 3,
Faction: "Grell",
Hotkey: "E",
BuildAtSameTime: 1,
Limit: null);
public static IReadOnlyList<UnitData> All { get; } =
[
CorsairRaiders,
CorsairRovers,
CorsairSnipers,
CorsairHovercraft,
CorsairFlamer,
Gatherer,
BroodGuard,
Lasher,
Skrell,
Stinger,
Harbinger,
Mandragora,
Thresher,
Behemoth,
Reaver,
Weaver,
];
}