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);
}