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