Add actual carts and shit

Upgrade UI to Level 6

Balls
This commit is contained in:
2026-07-06 13:41:15 +02:00
parent f69e832503
commit 8b6c6235c2
17 changed files with 978 additions and 165 deletions
+13
View File
@@ -10,10 +10,12 @@ namespace KernelPanic.Meta
public sealed class PlayerCollection
{
private readonly List<DistroDefinition> ownedUnits = new();
private int featuredIndex;
// TODO: Populate owned units from SaveService during bootstrap.
// TODO: Add newly unlocked units from GachaService rewards when pulls exist.
public IReadOnlyList<DistroDefinition> OwnedUnits => ownedUnits;
public DistroDefinition FeaturedUnit => ownedUnits.Count == 0 ? null : ownedUnits[Math.Clamp(featuredIndex, 0, ownedUnits.Count - 1)];
public event Action Changed;
@@ -26,7 +28,18 @@ namespace KernelPanic.Meta
// Persistence is wired by the owner so this domain class stays IO-free.
ownedUnits.Add(unit);
featuredIndex = Math.Clamp(featuredIndex, 0, ownedUnits.Count - 1);
Changed?.Invoke();
}
public void SelectNextFeatured()
{
if (ownedUnits.Count < 2)
{
return;
}
featuredIndex = (featuredIndex + 1) % ownedUnits.Count;
}
}
}
+6 -10
View File
@@ -60,7 +60,7 @@ namespace KernelPanic.Meta
public bool starterChosen;
public List<string> ownedUnitIds = new();
public List<string> bannerPoolIds = new();
public List<CardLoadoutSaveEntry> cardLoadouts = new();
public LastRunLoadoutSaveEntry lastRunLoadout = new();
public static SaveData CreateDefault()
{
@@ -71,24 +71,20 @@ namespace KernelPanic.Meta
{
ownedUnitIds ??= new List<string>();
bannerPoolIds ??= new List<string>();
cardLoadouts ??= new List<CardLoadoutSaveEntry>();
for (int i = 0; i < cardLoadouts.Count; i++)
{
cardLoadouts[i] ??= new CardLoadoutSaveEntry();
cardLoadouts[i].EnsureLists();
}
lastRunLoadout ??= new LastRunLoadoutSaveEntry();
lastRunLoadout.EnsureLists();
}
}
[Serializable]
public sealed class CardLoadoutSaveEntry
public sealed class LastRunLoadoutSaveEntry
{
public string distroId;
public List<string> equippedCardIds = new();
public List<string> cardIds = new();
public void EnsureLists()
{
equippedCardIds ??= new List<string>();
cardIds ??= new List<string>();
}
}
}