static ModsConfig() { bool flag = false; data = DirectXmlLoader.ItemFromXmlFile <ModsConfigData>(GenFilePaths.ModsConfigFilePath); if (data.version != null) { bool flag2 = false; int result; if (data.version.Contains(".")) { int num = VersionControl.MinorFromVersionString(data.version); int num2 = VersionControl.MajorFromVersionString(data.version); if (num2 != VersionControl.CurrentMajor || num != VersionControl.CurrentMinor) { flag2 = true; } } else if (data.version.Length > 0 && data.version.All(char.IsNumber) && int.TryParse(data.version, out result) && result <= 2009) { flag2 = true; } if (flag2) { Log.Message("Mods config data is from version " + data.version + " while we are running " + VersionControl.CurrentVersionStringWithRev + ". Resetting."); data = new ModsConfigData(); flag = true; } } if (!File.Exists(GenFilePaths.ModsConfigFilePath) || flag) { data.activeMods.Add(ModContentPack.CoreModIdentifier); Save(); } }
public static bool IsSaveCompatibleWith(string version) { if (VersionControl.BuildFromVersionString(version) == VersionControl.CurrentBuild) { return(true); } if (VersionControl.MajorFromVersionString(version) == 0 && VersionControl.CurrentMajor == 0) { int num = VersionControl.MinorFromVersionString(version); int currentMinor = VersionControl.CurrentMinor; for (int i = 0; i < BackCompatibility.SaveCompatibleMinorVersions.Length; i++) { if (BackCompatibility.SaveCompatibleMinorVersions[i].First == num && BackCompatibility.SaveCompatibleMinorVersions[i].Second == currentMinor) { return(true); } } return(false); } return(false); }
public IEnumerable <Thing> ThingsToSpawnAfterLoad() { Dictionary <ushort, ThingDef> thingDefsByShortHash = new Dictionary <ushort, ThingDef>(); foreach (ThingDef current in DefDatabase <ThingDef> .AllDefs) { if (thingDefsByShortHash.ContainsKey(current.shortHash)) { Log.Error(string.Concat(new object[] { "Hash collision between ", current, " and ", thingDefsByShortHash[current.shortHash], ": both have short hash ", current.shortHash }), false); } else { thingDefsByShortHash.Add(current.shortHash, current); } } int major = VersionControl.MajorFromVersionString(ScribeMetaHeaderUtility.loadedGameVersion); int minor = VersionControl.MinorFromVersionString(ScribeMetaHeaderUtility.loadedGameVersion); List <Thing> loadables = new List <Thing>(); MapSerializeUtility.LoadUshort(this.compressedData, this.map, delegate(IntVec3 c, ushort val) { if (val == 0) { return; } ThingDef thingDef = BackCompatibility.BackCompatibleThingDefWithShortHash_Force(val, major, minor); if (thingDef == null) { try { thingDef = thingDefsByShortHash[val]; } catch (KeyNotFoundException) { ThingDef thingDef2 = BackCompatibility.BackCompatibleThingDefWithShortHash(val); if (thingDef2 != null) { thingDef = thingDef2; thingDefsByShortHash.Add(val, thingDef2); } else { Log.Error("Map compressor decompression error: No thingDef with short hash " + val + ". Adding as null to dictionary.", false); thingDefsByShortHash.Add(val, null); } } } if (thingDef != null) { try { Thing thing = ThingMaker.MakeThing(thingDef, null); thing.SetPositionDirect(c); loadables.Add(thing); } catch (Exception arg) { Log.Error("Could not instantiate compressed thing: " + arg, false); } } }); return(loadables); }
public bool AppliesToLoadedGameVersion(bool allowInactiveScribe = false) { if (ScribeMetaHeaderUtility.loadedGameVersion.NullOrEmpty()) { return(false); } if (!allowInactiveScribe && Scribe.mode == LoadSaveMode.Inactive) { return(false); } return(AppliesToVersion(VersionControl.MajorFromVersionString(ScribeMetaHeaderUtility.loadedGameVersion), VersionControl.MinorFromVersionString(ScribeMetaHeaderUtility.loadedGameVersion))); }
static ModsConfig() { activeModsHashSet = new HashSet <string>(); activeModsInLoadOrderCached = new List <ModMetaData>(); bool flag = false; bool flag2 = false; data = DirectXmlLoader.ItemFromXmlFile <ModsConfigData>(GenFilePaths.ModsConfigFilePath); if (data.version != null) { bool flag3 = false; int result; if (data.version.Contains(".")) { int num = VersionControl.MinorFromVersionString(data.version); if (VersionControl.MajorFromVersionString(data.version) != VersionControl.CurrentMajor || num != VersionControl.CurrentMinor) { flag3 = true; } } else if (data.version.Length > 0 && data.version.All((char x) => char.IsNumber(x)) && int.TryParse(data.version, out result) && result <= 2009) { flag3 = true; } if (flag3) { Log.Message("Mods config data is from version " + data.version + " while we are running " + VersionControl.CurrentVersionStringWithRev + ". Resetting."); data = new ModsConfigData(); flag = true; } } for (int i = 0; i < data.activeMods.Count; i++) { string packageId = data.activeMods[i]; if (ModLister.GetModWithIdentifier(packageId) == null) { ModMetaData modMetaData = ModLister.AllInstalledMods.FirstOrDefault((ModMetaData m) => m.FolderName == packageId); if (modMetaData != null) { data.activeMods[i] = modMetaData.PackageId; flag2 = true; } if (TryGetPackageIdWithoutExtraSteamPostfix(packageId, out var nonSteamPackageId) && ModLister.GetModWithIdentifier(nonSteamPackageId) != null) { data.activeMods[i] = nonSteamPackageId; } } } HashSet <string> hashSet = new HashSet <string>(); foreach (ModMetaData allInstalledMod in ModLister.AllInstalledMods) { if (allInstalledMod.Active) { if (hashSet.Contains(allInstalledMod.PackageIdNonUnique)) { allInstalledMod.Active = false; Log.Warning("There was more than one enabled instance of mod with PackageID: " + allInstalledMod.PackageIdNonUnique + ". Disabling the duplicates."); continue; } hashSet.Add(allInstalledMod.PackageIdNonUnique); } if (!allInstalledMod.IsCoreMod && allInstalledMod.Official && IsExpansionNew(allInstalledMod.PackageId)) { SetActive(allInstalledMod.PackageId, active: true); AddKnownExpansion(allInstalledMod.PackageId); flag2 = true; } } if (!File.Exists(GenFilePaths.ModsConfigFilePath) || flag) { Reset(); } else if (flag2) { Save(); } RecacheActiveMods(); }
public static bool CheckSpawnBackCompatibleThingAfterLoading(Thing thing, Map map) { if (VersionControl.MajorFromVersionString(ScribeMetaHeaderUtility.loadedGameVersion) == 0 && VersionControl.MinorFromVersionString(ScribeMetaHeaderUtility.loadedGameVersion) <= 18 && thing.stackCount > thing.def.stackLimit && thing.stackCount != 1 && thing.def.stackLimit != 1) { tmpThingsToSpawnLater.Add(thing); return(true); } return(false); }