Beispiel #1
0
        public static List <ModConfig> GetSyncableConfigContents(IEnumerable <string> modIds)
        {
            var list = new List <ModConfig>();

            foreach (var modId in modIds)
            {
                if (ignoredConfigsModIds.Contains(modId))
                {
                    continue;
                }

                var mod = LoadedModManager.RunningModsListForReading.FirstOrDefault(m => m.PackageIdPlayerFacing.ToLowerInvariant() == modId);
                if (mod == null)
                {
                    continue;
                }

                foreach (var modInstance in LoadedModManager.runningModClasses.Values)
                {
                    if (modInstance.modSettings == null)
                    {
                        continue;
                    }
                    if (!mod.assemblies.loadedAssemblies.Contains(modInstance.GetType().Assembly))
                    {
                        continue;
                    }

                    var instanceName = modInstance.GetType().Name;

                    // This path may point to configs downloaded from the server
                    var file = LoadedModManager.GetSettingsFilename(mod.FolderName, instanceName);

                    if (File.Exists(file))
                    {
                        list.Add(GetConfigCatchError(file, modId, instanceName));
                    }
                }
            }

            // Special case for HugsLib
            if (modIds.Contains(HugsLibId) && GetInstalledMod(HugsLibId) is { Active : true })