public void RebuildFactorioModlist() { IList <ModListJson.ModListJsonItem> prevModList = tryGetPreviousFactorioModlist(); ModListJson.ModListJsonItem dummyDisabledItem = new ModListJson.ModListJsonItem() { enabled = ModListJson.ModListJsonTruthy.YES }; // if mod is already in mod-list.json, take its state from there // if not, set to enabled ModListJson modList = new ModListJson { mods = RegistryManager.registry.Installed(false) .Keys.Select( modName => new ModListJson.ModListJsonItem() { name = modName, enabled = (prevModList.FirstOrDefault(p => p.name == modName) ?? dummyDisabledItem).enabled }).ToList() }; File.WriteAllText(Path.Combine(Mods(), "mod-list.json"), JsonConvert.SerializeObject(modList)); }
public static CfanJson createCfanJsonFromModListJson(string file, string name, string title, ModVersion version, string author, string description = "") { ModListJson modList = JsonConvert.DeserializeObject <ModListJson>(File.ReadAllText(file, Encoding.UTF8)); CfanJson cfanJson = createEmptyMetaCfanJson(name, title, version, author, description); cfanJson.modInfo.dependencies = modList.mods.Where(p => p.enabled == ModListJson.ModListJsonTruthy.YES) .Select(p => new ModDependency(p.name)) .ToArray(); cfanJson.suggests = modList.mods.Where(p => p.enabled == ModListJson.ModListJsonTruthy.NO).Select(p => new ModDependency(p.name)).ToArray(); return(cfanJson); }
private IList <ModListJson.ModListJsonItem> tryGetPreviousFactorioModlist() { try { ModListJson prevModListJson = JsonConvert.DeserializeObject <ModListJson>(File.ReadAllText(Path.Combine(Mods(), "mod-list.json"))); if (prevModListJson?.mods != null) { return(prevModListJson.mods); } } catch (Exception e) { log.Error("Couldn't read mod-list.json", e); } return(new List <ModListJson.ModListJsonItem>()); }