private static void ChangeIsSelectedOf(LauncherModsVM mods, LauncherModuleVM targetModule) { if (targetModule.IsSelected) { using (var enumerator = mods.Modules.GetEnumerator()) { while (enumerator.MoveNext()) { var launcherModuleVm = enumerator.Current; if (launcherModuleVm == null) { continue; } launcherModuleVm.IsSelected |= targetModule.Info.DependedModuleIds.Contains(launcherModuleVm.Info.Id); } return; } } foreach (var launcherModuleVm2 in mods.Modules) { launcherModuleVm2.IsSelected &= !launcherModuleVm2.Info.DependedModuleIds.Contains(targetModule.Info.Id); } }
public static bool LoadSubModulesPrefix(LauncherModsVM __instance, UserData ____userData, bool isMultiplayer) { var list = SortByDependencies( ModuleInfo.GetModules() .Where(x => IsVisible(isMultiplayer, x)) .Select(x => { var userModData = ____userData.GetUserModData(isMultiplayer, x.Id); if (userModData != null) { x.IsSelected = x.IsSelected || userModData.IsSelected; } return(x); }) .OrderBy(x => x.IsNative() ? 0 : x.IsOfficial ? 1 : x.IsSelected ? 2 : 3) // presort .ThenBy(x => Math.Min(x.DependedModuleIds.Count, 1)) // roots grouped ); foreach (var moduleInfo in list) { UnblockModule(moduleInfo); var launcherModuleVm = new LauncherModuleVM(moduleInfo, (targetModule, insertIndex, tag) => ChangeLoadingOrderOf(__instance, targetModule, insertIndex, tag), targetModule => ChangeIsSelectedOf(__instance, targetModule)); __instance.Modules.Add(launcherModuleVm); } return(false); }
// Token: 0x06000010 RID: 16 RVA: 0x00002374 File Offset: 0x00000574 private static void ChangeLoadingOrderOf(LauncherModsVM mods, LauncherModuleVM targetModule, int insertIndex, string tag) { if (insertIndex >= mods.Modules.IndexOf(targetModule)) { insertIndex--; } insertIndex = (int)MathF.Clamp(insertIndex, 0f, mods.Modules.Count - 1); var index = mods.Modules.IndexOf(targetModule); mods.Modules.RemoveAt(index); mods.Modules.Insert(insertIndex, targetModule); }