public void Run(string[] args) { _writer.WriteLine($"Started OWML v{_owmlManifest.Version}"); _writer.WriteLine("For detailed log, see Logs/OWML.Log.txt"); LocateGamePath(); CopyGameFiles(); CreateLogsDirectory(); var hasPortArgument = CommandLineArguments.HasArgument(Constants.ConsolePortArgument); if (!hasPortArgument) { ListenForOutput(); } var mods = _modFinder.GetMods(); ShowModList(mods); PatchGame(mods); StartGame(args); if (hasPortArgument) { ExitConsole(); } Console.ReadLine(); }
public void LoadMods() { if (_owmlConfig.Verbose) { _console.WriteLine("Verbose mode is enabled"); Application.logMessageReceived += OnLogMessageReceived; } var normalMods = _modFinder.GetMods().Where(mod => !mod.Manifest.PriorityLoad).ToList(); var sortedNormal = _sorter.SortMods(normalMods); var priorityMods = _modFinder.GetMods().Where(mod => mod.Manifest.PriorityLoad).ToList(); var sortedPriority = _sorter.SortMods(priorityMods); var modNames = _modFinder.GetMods().Where(mod => mod.Config.Enabled).Select(mod => mod.Manifest.UniqueName).ToList(); var sortedMods = sortedPriority.Concat(sortedNormal); foreach (var mod in sortedMods) { foreach (var dependency in mod.Manifest.Dependencies) { if (!modNames.Contains(dependency)) { _console.WriteLine($"Error! {mod.Manifest.UniqueName} needs {dependency}, but it's disabled!"); } } var modType = LoadMod(mod); if (modType == null) { _logger.Log("Mod type is null, skipping"); _menus.ModsMenu.AddMod(mod, null); continue; } var helper = CreateModHelper(mod); var initMod = InitializeMod(modType, helper); _menus.ModsMenu.AddMod(mod, initMod); _modList.Add(initMod); } }