@using LANCommander.Launcher.Models @using Button = AntDesign.Button @using ButtonType = AntDesign.ButtonType @using Tooltip = AntDesign.Tooltip @namespace LANCommander.Launcher.UI @inject LocalizationService LocalizationService @inject InstallService InstallService @inject GameClient GameClient @inject ISettingsProvider SettingsProvider @inject ModalService ModalService
@code { [CascadingParameter] public Models.ListItem? CurrentItem { get; set; } [CascadingParameter] public Data.Models.Game? CurrentGame { get; set; } [CascadingParameter] public SDK.Models.Game? RemoteGame { get; set; } long GetDownloadSize() { long size = 0; if (RemoteGame != null && RemoteGame.Archives.Any()) size = RemoteGame.Archives.OrderByDescending(a => a.CreatedOn).First().CompressedSize; return size; } string GetPlayTime(Data.Models.Game game) { var totalTime = new TimeSpan(game.PlaySessions .Where(ps => ps.End != null && ps.Start != null) .Select(ps => ps.End.Value.Subtract(ps.Start.Value)) .Sum(ts => ts.Ticks)); if (totalTime.TotalMinutes < 1) return LocalizationService.GetString("None"); else if (totalTime.TotalHours < 1) return LocalizationService.GetString("PlayTimeMinutes", totalTime.TotalMinutes.ToString("0")); else return LocalizationService.GetString("PlayTimeHours", totalTime.TotalHours.ToString("0.##")); } string GetLastPlayed(Data.Models.Game game) { var lastSession = game.PlaySessions.Where(ps => ps.End != null && ps.Start != null).OrderByDescending(ps => ps.End).FirstOrDefault(); if (lastSession == null) return LocalizationService.GetString("Never"); else return lastSession.End.Value.ToRelativeDate(); } async Task Install() { var addons = await GameClient.GetAddonsAsync(CurrentGame.Id); if (SettingsProvider.CurrentValue.Games.InstallDirectories.Length > 1 || (addons != null && addons.Any())) { var modalOptions = new ModalOptions { Title = LocalizationService.GetString("InstallGame", CurrentItem.Name), Maximizable = false, DefaultMaximized = false, Closable = true, OkText = LocalizationService.GetString("Install"), Draggable = true, Centered = true, WrapClassName = "ant-modal-wrap-no-padding", Footer = null, }; var modalRef = ModalService.CreateModal