internal static void InitializeModsList() { lock (Lock) if (IsSpacewarInstalled && Exists(WorkshopPath)) { ulong[] SubscribedMods = TryDeploy() ? SteamAPI.GetSubscribedMods() : null; foreach (string Path in EnumerateDirectories(WorkshopPath).Where(Mod => ulong.TryParse(Mod.Substring(Mod.LastIndexOf('\\') + 1), out _))) { if (Mods.Find(Mod => Mod.Path == Path) is null) { Mods.Add(new Mod(Path, SubscribedMods)); } } } }
internal async void LoadMods() { ulong[] SubscribedMods = await Run(() => TryDeploy()?SteamAPI.GetSubscribedMods() : new ulong[0]); foreach (KeyValuePair <string, ModRecord[]> Mods in Cluster.Mods) { Grid Header = new Grid { Margin = new Thickness(0D, 10D, 0D, 0D) }; Header.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(0D, GridUnitType.Auto) }); Header.ColumnDefinitions.Add(new ColumnDefinition()); Header.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(0D, GridUnitType.Auto) }); if (Mods.Key != string.Empty) { TextBlock Name = new TextBlock { Foreground = (SolidColorBrush)FindResource("BrightBrush"), FontSize = 28, HorizontalAlignment = HorizontalAlignment.Left, VerticalAlignment = VerticalAlignment.Center, Text = Mods.Key }; Grid.SetColumn(Name, 0); Header.Children.Add(Name); } Button FixModsButton = new Button { HorizontalAlignment = HorizontalAlignment.Right, VerticalAlignment = VerticalAlignment.Center, Tag = Mods.Key, Content = LocString(LocCode.FixMods) }; FixModsButton.Click += FixMods; Grid.SetColumn(FixModsButton, 2); Header.Children.Add(FixModsButton); ModsList.Children.Add(Header); foreach (ModRecord Mod in Mods.Value) { StackPanel Stack = new StackPanel(); Stack.Children.Add(new TextBlock { Foreground = (SolidColorBrush)FindResource("BrightBrush"), FontSize = 24, HorizontalAlignment = HorizontalAlignment.Center, Text = $"{Mod.Name} ({Mod.Size})" }); Button SubscribeButton = new Button { Template = (ControlTemplate)FindResource("SubscribeButton"), Foreground = (SolidColorBrush)FindResource("BrightGrayBrush"), FontSize = 20, HorizontalAlignment = HorizontalAlignment.Center, IsEnabled = !SubscribedMods.Contains(Mod.ID), Tag = Mod.ID, Content = SubscribedMods.Contains(Mod.ID) ? LocString(LocCode.Subscribed) : LocString(LocCode.Subscribe) }; SubscribeButton.Click += Subscribe; Stack.Children.Add(SubscribeButton); ModsList.Children.Add(new Border { Margin = new Thickness(0D, 5D, 0D, 0D), Padding = new Thickness(10D), Background = (SolidColorBrush)FindResource("DarkestDarkBrush"), CornerRadius = new CornerRadius(20D), Child = Stack }); } } }