using System.Linq; using MegaCrit.Sts2.Core.Models; namespace StS2Sim; /// /// Display formatting for card identifiers. Single source of truth for /// "CARD.STRIKE_IRONCLAD" → "Strike Ironclad" and the "+N" upgrade suffix. /// internal static class CardLabels { /// "CARD.STRIKE_IRONCLAD" → "Strike Ironclad". Returns input unchanged if it has no '.'. public static string PrettyName(string id) { var parts = id.Split('.'); if (parts.Length < 2) return id; var entry = parts[^1].Replace('_', ' ').ToLowerInvariant(); return string.Concat(entry.Split(' ').Select(w => char.ToUpperInvariant(w[0]) + w[1..]).Select(w => w + ' ')).TrimEnd(); } /// Pretty name + "+" / "+N" suffix when upgraded. Level 1 prints as a bare "+". public static string UpgradeSuffix(int upgradeLevel) => upgradeLevel <= 0 ? "" : upgradeLevel == 1 ? "+" : "+" + upgradeLevel; /// "CARD.STRIKE_IRONCLAD" + level 2 → "Strike Ironclad+2". public static string Format(string id, int upgradeLevel) => PrettyName(id) + UpgradeSuffix(upgradeLevel); /// Format a live CardModel using its current upgrade state. public static string Format(CardModel card) => Format(card.Id.ToString(), card.IsUpgraded ? card.CurrentUpgradeLevel : 0); }