Beispiel #1
0
 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));
                 }
             }
         }
 }
Beispiel #2
0
        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
                    });
                }
            }
        }