Exemplo n.º 1
0
        public static List <Hmod> GetMods(bool onlyInstalled = false, string[] installed = null, Form taskerParent = null)
        {
            var usermodsDirectory = UserModsDirectory;
            var installedMods     = installed ?? hakchi.GetPackList() ?? new string[] { };
            var modsList          = new List <string>();


            if (onlyInstalled)
            {
                modsList.AddRange(installedMods);
            }
            else
            {
                if (Directory.Exists(usermodsDirectory))
                {
                    foreach (var mod in Directory.GetDirectories(usermodsDirectory, "*.hmod", SearchOption.TopDirectoryOnly).Select(m => Path.GetFileNameWithoutExtension(m)).Where(m => BadCharsRegex.IsMatch(m)))
                    {
                        Directory.Move(Path.Combine(usermodsDirectory, $"{mod}.hmod"), Path.Combine(usermodsDirectory, $"{GetCleanName(mod)}.hmod"));
                    }

                    foreach (var mod in Directory.GetFiles(usermodsDirectory, "*.hmod", SearchOption.TopDirectoryOnly).Select(m => Path.GetFileNameWithoutExtension(m)).Where(m => BadCharsRegex.IsMatch(m)))
                    {
                        File.Move(Path.Combine(usermodsDirectory, $"{mod}.hmod"), Path.Combine(usermodsDirectory, $"{GetCleanName(mod)}.hmod"));
                    }

                    modsList.AddRange(from m
                                      in Directory.GetDirectories(usermodsDirectory, "*.hmod", SearchOption.TopDirectoryOnly)
                                      select Path.GetFileNameWithoutExtension(m));
                    modsList.AddRange(from m
                                      in Directory.GetFiles(usermodsDirectory, "*.hmod", SearchOption.TopDirectoryOnly)
                                      select Path.GetFileNameWithoutExtension(m));
                }
            }

            using (Tasker tasker = new Tasker(taskerParent))
            {
                tasker.AttachView(new Tasks.TaskerForm());
                var modObject = new ModTasks.ModObject();
                modObject.HmodsToLoad    = modsList;
                modObject.InstalledHmods = installedMods ?? new string[] { };
                tasker.SetTitle(Resources.LoadingHmods);
                tasker.SetStatusImage(Resources.sign_brick);
                tasker.SyncObject = modObject;
                tasker.AddTask(ModTasks.GetHmods);
                tasker.Start();
                return(modObject.LoadedHmods);
            }
        }
Exemplo n.º 2
0
        public static List <Hmod> GetMods(bool onlyInstalled = false, Form taskerParent = null)
        {
            var usermodsDirectory = UserModsDirectory;
            var installedMods     = hakchi.GetPackList() ?? new string[] { };
            var modsList          = new List <string>();

            if (onlyInstalled)
            {
                modsList.AddRange(installedMods);
            }
            else
            {
                if (Directory.Exists(usermodsDirectory))
                {
                    modsList.AddRange(from m
                                      in Directory.GetDirectories(usermodsDirectory, "*.hmod", SearchOption.TopDirectoryOnly)
                                      select Path.GetFileNameWithoutExtension(m));
                    modsList.AddRange(from m
                                      in Directory.GetFiles(usermodsDirectory, "*.hmod", SearchOption.TopDirectoryOnly)
                                      select Path.GetFileNameWithoutExtension(m));
                }
            }

            using (Tasker tasker = new Tasker(taskerParent))
            {
                tasker.AttachView(new Tasks.TaskerForm());
                var modObject = new ModTasks.ModObject();
                modObject.HmodsToLoad    = modsList;
                modObject.InstalledHmods = installedMods ?? new string[] { };
                tasker.SetTitle(Resources.LoadingHmods);
                tasker.SetStatusImage(Resources.sign_brick);
                tasker.SyncObject = modObject;
                tasker.AddTask(ModTasks.GetHmods);
                tasker.Start();
                return(modObject.LoadedHmods);
            }
        }
Exemplo n.º 3
0
        public SelectModsForm(bool loadInstalledMods, bool allowDropMods, string[] filesToAdd = null)
        {
            InitializeComponent();
            this.loadInstalledMods = loadInstalledMods;

            switch (ConfigIni.Instance.hmodListSort)
            {
            case HmodListSort.Category:
                categoryToolStripMenuItem.Checked = true;
                break;

            case HmodListSort.Creator:
                creatorToolStripMenuItem.Checked = true;
                break;
            }

            wbReadme.Document.BackColor = this.BackColor;
            usermodsDirectory           = Path.Combine(Program.BaseDirectoryExternal, "user_mods");
            var modsList = new List <string>();

            if (hakchi.Shell.IsOnline && (hakchi.MinimalMemboot || hakchi.CanInteract))
            {
                bool wasMounted = true;
                if (hakchi.MinimalMemboot)
                {
                    if (hakchi.Shell.Execute("hakchi eval 'mountpoint -q \"$mountpoint/var/lib\"'") != 0)
                    {
                        wasMounted = false;
                        hakchi.Shell.ExecuteSimple("hakchi mount_base");
                    }
                }
                installedMods = hakchi.Shell.ExecuteSimple("hakchi pack_list", 0, true).Split(new char[] { '\n' }, StringSplitOptions.RemoveEmptyEntries);
                if (!wasMounted)
                {
                    hakchi.Shell.ExecuteSimple("hakchi umount_base");
                }
            }

            if (loadInstalledMods && hakchi.Shell.IsOnline)
            {
                foreach (var mod in installedMods)
                {
                    modsList.Add(mod);
                }
            }
            else
            {
                if (Directory.Exists(usermodsDirectory))
                {
                    modsList.AddRange(from m
                                      in Directory.GetDirectories(usermodsDirectory, "*.hmod", SearchOption.TopDirectoryOnly)
                                      select Path.GetFileNameWithoutExtension(m));
                    modsList.AddRange(from m
                                      in Directory.GetFiles(usermodsDirectory, "*.hmod", SearchOption.TopDirectoryOnly)
                                      select Path.GetFileNameWithoutExtension(m));
                }
            }

            using (Tasker tasker = new Tasker(this))
            {
                tasker.AttachView(new Tasks.TaskerForm());
                var modObject = new ModTasks.ModObject();
                modObject.HmodsToLoad    = modsList;
                modObject.InstalledHmods = installedMods;
                tasker.SetTitle(Resources.LoadingHmods);
                tasker.SetStatusImage(Resources.sign_brick);
                tasker.SyncObject = modObject;
                tasker.AddTask(ModTasks.GetHmods);
                tasker.Start();
                hmods = modObject.LoadedHmods;
            }

            populateList();

            if (filesToAdd != null)
            {
                AddMods(filesToAdd);
            }
            this.AllowDrop = allowDropMods;
        }