Exemple #1
0
            public static BMIObj FromMod(BMILib.Mod m)
            {
                BMIObj ret = new BMIObj();

                ret.Installed        = m.ModFullDirectory != null ? true : m.IsInstalled();
                ret.NeedsUpdate      = ret.Installed ? m.NeedsUpdate() : false;
                ret.Name             = m.Name;
                ret.Author           = m.Author;
                ret.InstalledVersion = m.Version ?? "-";
                ret.LatestVersion    = m.LatestRelease?.TagName ?? "-";
                ret.MinBTVersion     = "-";
                ret.MaxBTVersion     = "-";
                ret.Download         = "- Mb";
                ret.Description      = m.Website ?? "-";
                ret.InstallOrUpdate  = ret.Installed ? m.NeedsUpdate() ? "Update" : "Uninstall" : "Install";

                return(ret);
            }
Exemple #2
0
        public static void RefreshModList(IProgress <LoadProgress> progress, BMIwFormsApp.BMI form)
        {
            form.mods.Clear();
            progress.Report(new LoadProgress {
                Text = "Loading mods from local directory...", Percentage = 0
            });
            System.IO.DirectoryInfo di = new DirectoryInfo(@".");
            var dirs      = di.EnumerateDirectories();
            var dirsCount = dirs.Count();
            int curCount  = 0;

            foreach (DirectoryInfo d in dirs)
            {
                progress.Report(new LoadProgress {
                    Text = "Loading mods from local directory...", Percentage = 33 * (curCount / dirsCount)
                });
                try
                {
                    Mod m = Mod.LoadFromDirectory(d.FullName);
                    if (m != null)
                    {
                        form.mods.Add(m);
                    }
                    //else
                    //    Console.WriteLine($"{d.Name} didn't load right!");
                }
                catch (Exception ext)
                {
                    throw;
                }
                finally { curCount++; }
            }

            progress.Report(new LoadProgress {
                Text = "Loading Mods from BMI Index...", Percentage = 33
            });

            BMILib.IndexClient.Initialize();
            var modListCount        = BMILib.IndexClient.ModList.Count();
            var modListCurrentCount = 0;

            foreach (Mod m in BMILib.IndexClient.ModList.Values)
            {
                progress.Report(new LoadProgress {
                    Text = "Loading Mods from BMI Index...", Percentage = 33 + (33 * (modListCurrentCount / modListCount))
                });
                modListCurrentCount++;
                if (form.mods.Where(mm => mm.Name == m.Name).Count() > 0)
                {
                    continue;
                }
                form.mods.Add(m);
            }

            //bs.DataSource = typeof(BMIObj);

            progress.Report(new LoadProgress {
                Text = "Fetching Most Recent Mod Version for all mods...", Percentage = 66
            });

            var totalModCount   = form.mods.Count();
            var currentModCount = 0;

            foreach (Mod m in form.mods.OrderBy(m => m.Name))
            {
                progress.Report(new LoadProgress {
                    Text = "Fetching Most Recent Mod Version for all mods...", Percentage = 66 + (33 * (currentModCount / totalModCount))
                });
                currentModCount++;
                if (m == null)
                {
                    continue;
                }
                m.fetchReleasesFromWebsite();
                //bs.Add(BMIObj.FromMod(m));
            }

            form.bs.DataSource                     = BMIwFormsApp.BMI.CreateDataTable <BMIObj>(form.mods.Select(m => BMIObj.FromMod(m)).ToList());
            form.dataGridView1.DataSource          = form.bs;
            form.dataGridView1.AutoGenerateColumns = false;
            (form.bs.DataSource as DataTable).DefaultView.RowFilter = string.Format("Name LIKE '%{0}%' OR Author LIKE '%{0}%'", form.filterTextBox.Text);
        }