using Cthangover.Core.UI.Theming;
using Godot;
namespace Mods.ModManager
{
///
/// Locale keys, badge colors and sort ranks for .
/// Colors are semantic entries shared with the rest of
/// the UI: success installed, warning update, info downgrade, danger locally
/// modified, muted disabled, faint not installed.
///
public static class ModStatusNames
{
/// Localized status label shown on tiles and the detail page.
public static string Translate(ModItemStatus status)
=> TranslationServer.Translate(Key(status));
/// Translation key of a status.
public static string Key(ModItemStatus status) => status switch
{
ModItemStatus.Installed => "mod_manager/status_installed",
ModItemStatus.UpdateAvailable => "mod_manager/status_update",
ModItemStatus.DowngradeAvailable => "mod_manager/status_downgrade",
ModItemStatus.ModifiedLocally => "mod_manager/status_modified",
ModItemStatus.Disabled => "mod_manager/status_disabled",
_ => "mod_manager/status_not_installed",
};
/// Badge color for a status.
public static Color Color(ModItemStatus status) => status switch
{
ModItemStatus.Installed => UiTokens.Success,
ModItemStatus.UpdateAvailable => UiTokens.Warning,
ModItemStatus.DowngradeAvailable => UiTokens.Info,
ModItemStatus.ModifiedLocally => UiTokens.Danger,
ModItemStatus.Disabled => UiTokens.Muted,
_ => UiTokens.Faint,
};
///
/// Rank used by : highlights actionable
/// states (update, modified) before plain installed and catalog-only mods.
///
public static int SortRank(ModItemStatus status) => status switch
{
ModItemStatus.UpdateAvailable => 0,
ModItemStatus.ModifiedLocally => 1,
ModItemStatus.Installed => 2,
ModItemStatus.DowngradeAvailable => 3,
ModItemStatus.Disabled => 4,
_ => 5,
};
}
}