Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        // 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);
        }