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); } }
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); } }
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; }