예제 #1
0
        public static void Init()
        {
            bool flag = !new FileInfo(GenFilePaths.KeyPrefsFilePath).Exists;
            Dictionary <string, KeyBindingData> dictionary = DirectXmlLoader.ItemFromXmlFile <Dictionary <string, KeyBindingData> >(GenFilePaths.KeyPrefsFilePath, true);

            KeyPrefs.data = new KeyPrefsData();
            KeyPrefs.unresolvedBindings = new Dictionary <string, KeyBindingData>();
            foreach (KeyValuePair <string, KeyBindingData> current in dictionary)
            {
                KeyBindingDef namedSilentFail = DefDatabase <KeyBindingDef> .GetNamedSilentFail(current.Key);

                if (namedSilentFail != null)
                {
                    KeyPrefs.data.keyPrefs[namedSilentFail] = current.Value;
                }
                else
                {
                    KeyPrefs.unresolvedBindings[current.Key] = current.Value;
                }
            }
            if (flag)
            {
                KeyPrefs.data.ResetToDefaults();
            }
            KeyPrefs.data.AddMissingDefaultBindings();
            KeyPrefs.data.ErrorCheck();
            if (flag)
            {
                KeyPrefs.Save();
            }
        }
예제 #2
0
        private void Init()
        {
            meta        = DirectXmlLoader.ItemFromXmlFile <ModMetaDataInternal>(RootDir.FullName + Path.DirectorySeparatorChar + "About" + Path.DirectorySeparatorChar + "About.xml");
            loadFolders = DirectXmlLoader.ItemFromXmlFile <ModLoadFolders>(RootDir.FullName + Path.DirectorySeparatorChar + "LoadFolders.xml");
            bool shouldLogIssues = ModLister.ShouldLogIssues;

            HadIncorrectlyFormattedVersionInMetadata = !meta.TryParseSupportedVersions(!OnSteamWorkshop && shouldLogIssues);
            if (meta.name.NullOrEmpty())
            {
                if (OnSteamWorkshop)
                {
                    meta.name = "Workshop mod " + FolderName;
                }
                else
                {
                    meta.name = FolderName;
                }
            }
            HadIncorrectlyFormattedPackageId = !meta.TryParsePackageId(Official, !OnSteamWorkshop && shouldLogIssues);
            packageIdLowerCase = meta.packageId.ToLower();
            meta.InitVersionedData();
            meta.ValidateDependencies_NewTmp(shouldLogIssues);
            string publishedFileIdPath = PublishedFileIdPath;

            if (File.Exists(PublishedFileIdPath) && ulong.TryParse(File.ReadAllText(publishedFileIdPath), out var result))
            {
                publishedFileIdInt = new PublishedFileId_t(result);
            }
        }
예제 #3
0
        static ModsConfig()
        {
            bool flag = false;

            ModsConfig.data = DirectXmlLoader.ItemFromXmlFile <ModsConfig.ModsConfigData>(GenFilePaths.ModsConfigFilePath, true);
            if (ModsConfig.data.buildNumber < VersionControl.CurrentBuild)
            {
                Log.Message(string.Concat(new object[]
                {
                    "Mods config data is from build ",
                    ModsConfig.data.buildNumber,
                    " while we are at build ",
                    VersionControl.CurrentBuild,
                    ". Resetting."
                }), false);
                ModsConfig.data = new ModsConfig.ModsConfigData();
                flag            = true;
            }
            ModsConfig.data.buildNumber = VersionControl.CurrentBuild;
            bool flag2 = File.Exists(GenFilePaths.ModsConfigFilePath);

            if (!flag2 || flag)
            {
                ModsConfig.data.activeMods.Add(ModContentPack.CoreModIdentifier);
                ModsConfig.Save();
            }
        }
예제 #4
0
        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();
            }
        }
예제 #5
0
        private void Init()
        {
            this.meta = DirectXmlLoader.ItemFromXmlFile <ModMetaData.ModMetaDataInternal>(string.Concat(new object[]
            {
                this.RootDir.FullName,
                Path.DirectorySeparatorChar,
                "About",
                Path.DirectorySeparatorChar,
                "About.xml"
            }), true);
            if (this.meta.name.NullOrEmpty())
            {
                if (this.OnSteamWorkshop)
                {
                    this.meta.name = "Workshop mod " + this.Identifier;
                }
                else
                {
                    this.meta.name = this.Identifier;
                }
            }
            if (!this.IsCoreMod && !this.OnSteamWorkshop && !VersionControl.IsWellFormattedVersionString(this.meta.targetVersion))
            {
                Log.ErrorOnce(string.Concat(new string[]
                {
                    "Mod ",
                    this.meta.name,
                    " has incorrectly formatted target version '",
                    this.meta.targetVersion,
                    "'. For the current version, write: <targetVersion>",
                    VersionControl.CurrentVersionString,
                    "</targetVersion>"
                }), this.Identifier.GetHashCode(), false);
            }
            LongEventHandler.ExecuteWhenFinished(delegate
            {
                string url = GenFilePaths.SafeURIForUnityWWWFromPath(this.PreviewImagePath);
                using (WWW www = new WWW(url))
                {
                    www.threadPriority = UnityEngine.ThreadPriority.High;
                    while (!www.isDone)
                    {
                        Thread.Sleep(1);
                    }
                    if (www.error == null)
                    {
                        this.previewImage = www.textureNonReadable;
                    }
                }
            });
            string publishedFileIdPath = this.PublishedFileIdPath;

            if (File.Exists(this.PublishedFileIdPath))
            {
                string s = File.ReadAllText(publishedFileIdPath);
                this.publishedFileIdInt = new PublishedFileId_t(ulong.Parse(s));
            }
        }
예제 #6
0
        public static void Init()
        {
            bool flag = !new FileInfo(GenFilePaths.PrefsFilePath).Exists;

            Prefs.data = new PrefsData();
            Prefs.data = DirectXmlLoader.ItemFromXmlFile <PrefsData>(GenFilePaths.PrefsFilePath, true);
            if (flag)
            {
                Prefs.data.langFolderName = LanguageDatabase.SystemLanguageFolderName();
            }
        }
예제 #7
0
        public static void Init()
        {
            bool num = !new FileInfo(GenFilePaths.PrefsFilePath).Exists;

            data = new PrefsData();
            data = DirectXmlLoader.ItemFromXmlFile <PrefsData>(GenFilePaths.PrefsFilePath);
            BackCompatibility.PrefsDataPostLoad(data);
            if (num)
            {
                data.langFolderName = LanguageDatabase.SystemLanguageFolderName();
                data.uiScale        = ResolutionUtility.GetRecommendedUIScale(data.screenWidth, data.screenHeight);
            }
            if (DevModePermanentlyDisabledUtility.Disabled)
            {
                DevMode = false;
            }
            Apply();
        }
예제 #8
0
        public static void Init()
        {
            bool flag = !new FileInfo(GenFilePaths.PrefsFilePath).Exists;

            Prefs.data = new PrefsData();
            Prefs.data = DirectXmlLoader.ItemFromXmlFile <PrefsData>(GenFilePaths.PrefsFilePath, true);
            if (flag)
            {
                Prefs.data.langFolderName = LanguageDatabase.SystemLanguageFolderName();
                if (UnityData.isDebugBuild && !DevModePermanentlyDisabledUtility.Disabled)
                {
                    Prefs.DevMode = true;
                }
            }
            if (DevModePermanentlyDisabledUtility.Disabled)
            {
                Prefs.DevMode = false;
            }
        }
예제 #9
0
        static ModsConfig()
        {
            bool flag = false;

            ModsConfig.data = DirectXmlLoader.ItemFromXmlFile <ModsConfigData>(GenFilePaths.ModsConfigFilePath, true);
            if (ModsConfig.data.buildNumber < VersionControl.CurrentBuild)
            {
                Log.Message("Mods config data is from build " + ModsConfig.data.buildNumber + " while we are at build " + VersionControl.CurrentBuild + ". Resetting.");
                ModsConfig.data = new ModsConfigData();
                flag            = true;
            }
            ModsConfig.data.buildNumber = VersionControl.CurrentBuild;
            if (File.Exists(GenFilePaths.ModsConfigFilePath) && !flag)
            {
                return;
            }
            ModsConfig.data.activeMods.Add(ModContentPack.CoreModIdentifier);
            ModsConfig.Save();
        }
예제 #10
0
        private void Init()
        {
            meta = DirectXmlLoader.ItemFromXmlFile <ModMetaDataInternal>(RootDir.FullName + Path.DirectorySeparatorChar + "About" + Path.DirectorySeparatorChar + "About.xml");
            if (meta.name.NullOrEmpty())
            {
                if (OnSteamWorkshop)
                {
                    meta.name = "Workshop mod " + Identifier;
                }
                else
                {
                    meta.name = Identifier;
                }
            }
            if (!IsCoreMod && !OnSteamWorkshop && !VersionControl.IsWellFormattedVersionString(meta.targetVersion))
            {
                Log.ErrorOnce("Mod " + meta.name + " has incorrectly formatted target version '" + meta.targetVersion + "'. For the current version, write: <targetVersion>" + VersionControl.CurrentVersionString + "</targetVersion>", Identifier.GetHashCode());
            }
            LongEventHandler.ExecuteWhenFinished(delegate
            {
                string url = GenFilePaths.SafeURIForUnityWWWFromPath(PreviewImagePath);
                using (WWW wWW = new WWW(url))
                {
                    wWW.threadPriority = UnityEngine.ThreadPriority.High;
                    while (!wWW.isDone)
                    {
                        Thread.Sleep(1);
                    }
                    if (wWW.error == null)
                    {
                        previewImage = wWW.textureNonReadable;
                    }
                }
            });
            string publishedFileIdPath = PublishedFileIdPath;

            if (File.Exists(PublishedFileIdPath))
            {
                string s = File.ReadAllText(publishedFileIdPath);
                publishedFileIdInt = new PublishedFileId_t(ulong.Parse(s));
            }
        }
 public void LoadMetadata()
 {
     if (info != null && infoIsRealMetadata)
     {
         return;
     }
     infoIsRealMetadata = true;
     foreach (ModContentPack runningMod in LoadedModManager.RunningMods)
     {
         foreach (string item in runningMod.foldersToLoadDescendingOrder)
         {
             string text = Path.Combine(item, "Languages");
             if (!new DirectoryInfo(text).Exists)
             {
                 continue;
             }
             foreach (VirtualDirectory directory in AbstractFilesystem.GetDirectories(text, "*", SearchOption.TopDirectoryOnly))
             {
                 if (directory.Name == folderName || directory.Name == legacyFolderName)
                 {
                     info = DirectXmlLoader.ItemFromXmlFile <LanguageInfo>(directory, "LanguageInfo.xml", resolveCrossRefs: false);
                     if (info.friendlyNameNative.NullOrEmpty() && directory.FileExists("FriendlyName.txt"))
                     {
                         info.friendlyNameNative = directory.ReadAllText("FriendlyName.txt");
                     }
                     if (info.friendlyNameNative.NullOrEmpty())
                     {
                         info.friendlyNameNative = folderName;
                     }
                     if (info.friendlyNameEnglish.NullOrEmpty())
                     {
                         info.friendlyNameEnglish = folderName;
                     }
                     return;
                 }
             }
         }
     }
 }
예제 #12
0
 public void TryLoadMetadataFrom(string folderPath)
 {
     if (this.info == null)
     {
         string filePath = Path.Combine(folderPath.ToString(), "LanguageInfo.xml");
         this.info = DirectXmlLoader.ItemFromXmlFile <LanguageInfo>(filePath, false);
         if (this.info.friendlyNameNative.NullOrEmpty())
         {
             FileInfo fileInfo = new FileInfo(Path.Combine(folderPath.ToString(), "FriendlyName.txt"));
             if (fileInfo.Exists)
             {
                 this.info.friendlyNameNative = GenFile.TextFromRawFile(fileInfo.ToString());
             }
         }
         if (this.info.friendlyNameNative.NullOrEmpty())
         {
             this.info.friendlyNameNative = this.folderName;
         }
         if (this.info.friendlyNameEnglish.NullOrEmpty())
         {
             this.info.friendlyNameEnglish = this.folderName;
         }
     }
 }
예제 #13
0
        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();
        }