/// <summary> /// Gets the list of plugin, sorted by load order. /// </summary> /// <returns>The list of plugins, sorted by load order.</returns> private string[] GetTimestampLoadOrder() { List <string> lstOrderedPlugins = new List <string>(); DirectoryInfo diPluginFolder = new DirectoryInfo(GameMode.PluginDirectory); try { if (diPluginFolder.Exists) { lstOrderedPlugins = diPluginFolder .EnumerateFiles() .OrderBy(file => file.LastWriteTime) .Where(file => file.Extension.Equals(".esp", StringComparison.InvariantCultureIgnoreCase) || file.Extension.Equals(".esm", StringComparison.InvariantCultureIgnoreCase)) .Select(file => file.FullName) .ToList(); } } catch { } finally { AddMissingElements(lstOrderedPlugins, true); LastValidLoadOrder = lstOrderedPlugins; } if (lstOrderedPlugins.Count > 0) { return(RemoveNonExistentPlugins(lstOrderedPlugins.ToArray())); } else if (LastValidLoadOrder.Count > 0) { return(RemoveNonExistentPlugins(LastValidLoadOrder.ToArray())); } else { return(RemoveNonExistentPlugins(GameMode.OrderedCriticalPluginNames.Concat(GameMode.OrderedOfficialPluginNames).ToArray())); } }
/// <summary> /// Gets the list of plugin from a file, sorted by load order. /// </summary> /// <returns>The list of plugins from a file, sorted by load order.</returns> private string[] GetSortedListLoadOrder() { int intRepeat = 0; bool?booReady = IsFileReady(PluginsFilePath, ForcedReadOnly, true); while (booReady == false) { Thread.Sleep(500); if (intRepeat++ >= 20) { break; } booReady = IsFileReady(PluginsFilePath, ForcedReadOnly, true); } if (booReady != false) { List <string> lstOrderedPlugins = new List <string>(); try { if (File.Exists(LoadOrderFilePath)) { foreach (string line in File.ReadLines(LoadOrderFilePath)) { if (!string.IsNullOrWhiteSpace(line)) { if (m_rgxPluginFile.IsMatch(line)) { lstOrderedPlugins.Add(AddPluginDirectory(line)); } } } } } catch { } finally { AddMissingElements(lstOrderedPlugins, false); LastValidLoadOrder = lstOrderedPlugins; } if (lstOrderedPlugins.Count > 0) { if (booReady == null) { SetSortedListLoadOrder(RemoveNonExistentPlugins(lstOrderedPlugins.ToArray())); } return(RemoveNonExistentPlugins(lstOrderedPlugins.ToArray())); } } if (LastValidLoadOrder.Count > 0) { return(RemoveNonExistentPlugins(LastValidLoadOrder.ToArray())); } else { return(RemoveNonExistentPlugins(GameMode.OrderedCriticalPluginNames.Concat(GameMode.OrderedOfficialPluginNames).ToArray())); } }