public static void CleanupTranslationFiles()
        {
            LoadedLanguage curLang = LanguageDatabase.activeLanguage;
            LoadedLanguage english = LanguageDatabase.defaultLanguage;

            if (curLang == english)
            {
                return;
            }
            IEnumerable <ModMetaData> activeModsInLoadOrder = ModsConfig.ActiveModsInLoadOrder;

            if (activeModsInLoadOrder.Count <ModMetaData>() != 1 || !activeModsInLoadOrder.First <ModMetaData>().IsCoreMod)
            {
                Messages.Message("MessageDisableModsBeforeCleaningTranslationFiles".Translate(), MessageTypeDefOf.RejectInput, false);
                return;
            }
            LongEventHandler.QueueLongEvent(delegate
            {
                if (curLang.anyKeyedReplacementsXmlParseError || curLang.anyDefInjectionsXmlParseError)
                {
                    string value = curLang.lastKeyedReplacementsXmlParseErrorInFile ?? curLang.lastDefInjectionsXmlParseErrorInFile;
                    Messages.Message("MessageCantCleanupTranslationFilesBeucaseOfXmlError".Translate(value), MessageTypeDefOf.RejectInput, false);
                    return;
                }
                english.LoadData();
                curLang.LoadData();
                Dialog_MessageBox dialog_MessageBox = Dialog_MessageBox.CreateConfirmation("ConfirmCleanupTranslationFiles".Translate(curLang.FriendlyNameNative), delegate
                {
                    LongEventHandler.QueueLongEvent(new Action(TranslationFilesCleaner.DoCleanupTranslationFiles), "CleaningTranslationFiles".Translate(), true, null);
                }, true, null);
                dialog_MessageBox.buttonAText = "ConfirmCleanupTranslationFiles_Confirm".Translate();
                Find.WindowStack.Add(dialog_MessageBox);
            }, null, false, null);
        }
Ejemplo n.º 2
0
        public static bool TryCreateDialogsForVersionMismatchWarnings(Action confirmedAction)
        {
            string text  = null;
            string text2 = null;

            if (!BackCompatibility.IsSaveCompatibleWith(ScribeMetaHeaderUtility.loadedGameVersion) && !ScribeMetaHeaderUtility.VersionsMatch())
            {
                text2 = "VersionMismatch".Translate();
                string text3 = (!ScribeMetaHeaderUtility.loadedGameVersion.NullOrEmpty()) ? ScribeMetaHeaderUtility.loadedGameVersion : ("(" + "UnknownLower".Translate() + ")");
                text = ((ScribeMetaHeaderUtility.lastMode != ScribeHeaderMode.Map) ? ((ScribeMetaHeaderUtility.lastMode != ScribeHeaderMode.World) ? "FileIncompatibleWarning".Translate(text3, VersionControl.CurrentVersionString) : "WorldFileVersionMismatch".Translate(text3, VersionControl.CurrentVersionString)) : "SaveGameIncompatibleWarningText".Translate(text3, VersionControl.CurrentVersionString));
            }
            bool   flag  = false;
            string text4 = default(string);
            string text5 = default(string);

            if (!ScribeMetaHeaderUtility.LoadedModsMatchesActiveMods(out text4, out text5))
            {
                flag = true;
                string text6 = "ModsMismatchWarningText".Translate(text4, text5);
                text = ((text != null) ? (text + "\n\n" + text6) : text6);
                if (text2 == null)
                {
                    text2 = "ModsMismatchWarningTitle".Translate();
                }
            }
            if (text != null)
            {
                string            text7  = text;
                string            title  = text2;
                Dialog_MessageBox dialog = Dialog_MessageBox.CreateConfirmation(text7, confirmedAction, false, title);
                dialog.buttonAText = "LoadAnyway".Translate();
                if (flag)
                {
                    dialog.buttonCText   = "ChangeLoadedMods".Translate();
                    dialog.buttonCAction = delegate
                    {
                        int num = ModLister.InstalledModsListHash(false);
                        ModsConfig.SetActiveToList(ScribeMetaHeaderUtility.loadedModIdsList);
                        ModsConfig.Save();
                        if (num == ModLister.InstalledModsListHash(false))
                        {
                            IEnumerable <string> items = from id in Enumerable.Range(0, ScribeMetaHeaderUtility.loadedModIdsList.Count)
                                                         where ModLister.GetModWithIdentifier(ScribeMetaHeaderUtility.loadedModIdsList[id]) == null
                                                         select ScribeMetaHeaderUtility.loadedModNamesList[id];
                            Messages.Message(string.Format("{0}: {1}", "MissingMods".Translate(), GenText.ToCommaList(items, true)), MessageTypeDefOf.RejectInput);
                            dialog.buttonCClose = false;
                        }
                        else
                        {
                            ModsConfig.RestartFromChangedMods();
                        }
                    };
                }
                Find.WindowStack.Add(dialog);
                return(true);
            }
            return(false);
        }
Ejemplo n.º 3
0
        public static bool TryCreateDialogsForVersionMismatchWarnings(Action confirmedAction)
        {
            string text  = null;
            string text2 = null;

            if (!BackCompatibility.IsSaveCompatibleWith(loadedGameVersion) && !VersionsMatch())
            {
                text2 = "VersionMismatch".Translate();
                string value = loadedGameVersion.NullOrEmpty() ? ("(" + "UnknownLower".TranslateSimple() + ")") : loadedGameVersion;
                text = ((lastMode == ScribeHeaderMode.Map) ? ((string)"SaveGameIncompatibleWarningText".Translate(value, VersionControl.CurrentVersionString)) : ((lastMode != ScribeHeaderMode.World) ? ((string)"FileIncompatibleWarning".Translate(value, VersionControl.CurrentVersionString)) : ((string)"WorldFileVersionMismatch".Translate(value, VersionControl.CurrentVersionString))));
            }
            bool flag = false;

            if (!LoadedModsMatchesActiveMods(out string loadedModsSummary, out string runningModsSummary))
            {
                flag = true;
                string text3 = "ModsMismatchWarningText".Translate(loadedModsSummary, runningModsSummary);
                text = ((text != null) ? (text + "\n\n" + text3) : text3);
                if (text2 == null)
                {
                    text2 = "ModsMismatchWarningTitle".Translate();
                }
            }
            if (text != null)
            {
                Dialog_MessageBox dialog = Dialog_MessageBox.CreateConfirmation(text, confirmedAction, destructive: false, text2);
                dialog.buttonAText = "LoadAnyway".Translate();
                if (flag)
                {
                    dialog.buttonCText   = "ChangeLoadedMods".Translate();
                    dialog.buttonCAction = delegate
                    {
                        if (Current.ProgramState == ProgramState.Entry)
                        {
                            ModsConfig.SetActiveToList(loadedModIdsList);
                        }
                        ModsConfig.SaveFromList(loadedModIdsList);
                        IEnumerable <string> enumerable = from id in Enumerable.Range(0, loadedModIdsList.Count)
                                                          where ModLister.GetModWithIdentifier(loadedModIdsList[id]) == null
                                                          select loadedModNamesList[id];
                        if (enumerable.Any())
                        {
                            Messages.Message(string.Format("{0}: {1}", "MissingMods".Translate(), enumerable.ToCommaList()), MessageTypeDefOf.RejectInput, historical: false);
                            dialog.buttonCClose = false;
                        }
                        ModsConfig.RestartFromChangedMods();
                    };
                }
                Find.WindowStack.Add(dialog);
                return(true);
            }
            return(false);
        }
Ejemplo n.º 4
0
        public static bool TryCreateDialogsForVersionMismatchWarnings(Action confirmedAction)
        {
            string text  = null;
            string text2 = null;

            if (!BackCompatibility.IsSaveCompatibleWith(ScribeMetaHeaderUtility.loadedGameVersion) && !ScribeMetaHeaderUtility.VersionsMatch())
            {
                text2 = "VersionMismatch".Translate();
                string value = (!ScribeMetaHeaderUtility.loadedGameVersion.NullOrEmpty()) ? ScribeMetaHeaderUtility.loadedGameVersion : ("(" + "UnknownLower".Translate() + ")");
                if (ScribeMetaHeaderUtility.lastMode == ScribeMetaHeaderUtility.ScribeHeaderMode.Map)
                {
                    text = "SaveGameIncompatibleWarningText".Translate(value, VersionControl.CurrentVersionString);
                }
                else if (ScribeMetaHeaderUtility.lastMode == ScribeMetaHeaderUtility.ScribeHeaderMode.World)
                {
                    text = "WorldFileVersionMismatch".Translate(value, VersionControl.CurrentVersionString);
                }
                else
                {
                    text = "FileIncompatibleWarning".Translate(value, VersionControl.CurrentVersionString);
                }
            }
            bool   flag = false;
            string value2;
            string value3;

            if (!ScribeMetaHeaderUtility.LoadedModsMatchesActiveMods(out value2, out value3))
            {
                flag = true;
                string text3 = "ModsMismatchWarningText".Translate(value2, value3);
                if (text == null)
                {
                    text = text3;
                }
                else
                {
                    text = text + "\n\n" + text3;
                }
                if (text2 == null)
                {
                    text2 = "ModsMismatchWarningTitle".Translate();
                }
            }
            if (text != null)
            {
                ScribeMetaHeaderUtility.< TryCreateDialogsForVersionMismatchWarnings > c__AnonStorey0 <TryCreateDialogsForVersionMismatchWarnings> c__AnonStorey = new ScribeMetaHeaderUtility.< TryCreateDialogsForVersionMismatchWarnings > c__AnonStorey0();
                ScribeMetaHeaderUtility.< TryCreateDialogsForVersionMismatchWarnings > c__AnonStorey0 arg_14A_0 = < TryCreateDialogsForVersionMismatchWarnings > c__AnonStorey;
                string text4 = text;
                string title = text2;
                arg_14A_0.dialog = Dialog_MessageBox.CreateConfirmation(text4, confirmedAction, false, title);
        public static void CleanupTranslationFiles()
        {
            LoadedLanguage curLang = LanguageDatabase.activeLanguage;
            LoadedLanguage english = LanguageDatabase.defaultLanguage;

            if (curLang == english)
            {
                return;
            }
            IEnumerable <ModMetaData> activeModsInLoadOrder = ModsConfig.ActiveModsInLoadOrder;

            if (!activeModsInLoadOrder.Any((ModMetaData x) => x.IsCoreMod) || activeModsInLoadOrder.Any((ModMetaData x) => !x.Official))
            {
                Messages.Message("MessageDisableModsBeforeCleaningTranslationFiles".Translate(), MessageTypeDefOf.RejectInput, historical: false);
                return;
            }
            if (LanguageDatabase.activeLanguage.AllDirectories.Any((Tuple <VirtualDirectory, ModContentPack, string> x) => x.Item1 is TarDirectory))
            {
                Messages.Message("MessageUnpackBeforeCleaningTranslationFiles".Translate(), MessageTypeDefOf.RejectInput, historical: false);
                return;
            }
            LongEventHandler.QueueLongEvent(delegate
            {
                if (curLang.anyKeyedReplacementsXmlParseError || curLang.anyDefInjectionsXmlParseError)
                {
                    string value = curLang.lastKeyedReplacementsXmlParseErrorInFile ?? curLang.lastDefInjectionsXmlParseErrorInFile;
                    Messages.Message("MessageCantCleanupTranslationFilesBeucaseOfXmlError".Translate(value), MessageTypeDefOf.RejectInput, historical: false);
                }
                else
                {
                    english.LoadData();
                    curLang.LoadData();
                    Dialog_MessageBox dialog_MessageBox = Dialog_MessageBox.CreateConfirmation("ConfirmCleanupTranslationFiles".Translate(curLang.FriendlyNameNative), delegate
                    {
                        LongEventHandler.QueueLongEvent(DoCleanupTranslationFiles, "CleaningTranslationFiles".Translate(), doAsynchronously: true, null);
                    }, destructive: true);
                    dialog_MessageBox.buttonAText = "ConfirmCleanupTranslationFiles_Confirm".Translate();
                    Find.WindowStack.Add(dialog_MessageBox);
                }
            }, null, doAsynchronously: false, null);
        }
        public override void DoWindowContents(Rect selectorInner)
        {
            Profiler.BeginSample("PackageEditorOnGUI");
            Text.Font = GameFont.Tiny;
            float  width = (selectorInner.width - 4f) / 2f;
            Rect   rect  = new Rect(0f, 0f, width, 24f);
            string str   = this.curMod.ToString();

            if (Widgets.ButtonText(rect, "Editing: " + str, true, false, true))
            {
                Messages.Message("Mod changing not implemented - it's always Core for now.", MessageTypeDefOf.RejectInput, false);
            }
            TooltipHandler.TipRegion(rect, "Change the mod being edited.");
            Rect   rect2 = new Rect(rect.xMax + 4f, 0f, width, 24f);
            string label = "No package loaded";

            if (this.curPackage != null)
            {
                label = this.curPackage.fileName;
            }
            if (Widgets.ButtonText(rect2, label, true, false, true))
            {
                Find.WindowStack.Add(new Dialog_PackageSelector(delegate(DefPackage pack)
                {
                    if (pack != this.curPackage)
                    {
                        this.curPackage = pack;
                    }
                }, this.curMod, this.relFolder));
            }
            TooltipHandler.TipRegion(rect2, "Open a Def package for editing.");
            WidgetRow widgetRow = new WidgetRow(0f, 28f, UIDirection.RightThenUp, 99999f, 4f);

            if (widgetRow.ButtonIcon(TexButton.NewFile, "Create a new Def package.", null))
            {
                string     name       = DefPackage.UnusedPackageName(this.relFolder, this.curMod);
                DefPackage defPackage = new DefPackage(name, this.relFolder);
                this.curMod.AddDefPackage(defPackage);
                this.curPackage = defPackage;
            }
            if (this.curPackage != null)
            {
                if (widgetRow.ButtonIcon(TexButton.Save, "Save the current Def package.", null))
                {
                    this.curPackage.SaveIn(this.curMod);
                }
                if (widgetRow.ButtonIcon(TexButton.RenameDev, "Rename the current Def package.", null))
                {
                    Find.WindowStack.Add(new Dialog_RenamePackage(this.curPackage));
                }
            }
            float num   = 56f;
            Rect  rect3 = new Rect(0f, num, selectorInner.width, selectorInner.height - num);
            Rect  rect4 = new Rect(0f, 0f, rect3.width - 16f, this.viewHeight);

            Widgets.DrawMenuSection(rect3);
            Widgets.BeginScrollView(rect3, ref this.scrollPosition, rect4, true);
            Rect rect5 = rect4.ContractedBy(4f);

            rect5.height = 9999f;
            Listing_Standard listing_Standard = new Listing_Standard();

            listing_Standard.Begin(rect5);
            Text.Font = GameFont.Tiny;
            if (this.curPackage == null)
            {
                listing_Standard.Label("(no package open)", -1f, null);
            }
            else
            {
                if (this.curPackage.defs.Count == 0)
                {
                    listing_Standard.Label("(package is empty)", -1f, null);
                }
                else
                {
                    Def deletingDef = null;
                    using (List <Def> .Enumerator enumerator = this.curPackage.GetEnumerator())
                    {
                        while (enumerator.MoveNext())
                        {
                            Def def = enumerator.Current;
                            if (listing_Standard.SelectableDef(def.defName, false, delegate
                            {
                                deletingDef = def;
                            }))
                            {
                                bool        flag        = false;
                                WindowStack windowStack = Find.WindowStack;
                                for (int i = 0; i < windowStack.Count; i++)
                                {
                                    EditWindow_DefEditor editWindow_DefEditor = windowStack[i] as EditWindow_DefEditor;
                                    if (editWindow_DefEditor != null && editWindow_DefEditor.def == def)
                                    {
                                        flag = true;
                                    }
                                }
                                if (!flag)
                                {
                                    Find.WindowStack.Add(new EditWindow_DefEditor(def));
                                }
                            }
                        }
                    }
                    if (deletingDef != null)
                    {
                        Find.WindowStack.Add(Dialog_MessageBox.CreateConfirmation("Really delete Def " + deletingDef.defName + "?", delegate
                        {
                            this.curPackage.RemoveDef(deletingDef);
                        }, true, null));
                    }
                }
                if (listing_Standard.ButtonImage(TexButton.Add, 24f, 24f))
                {
                    Def def2 = Activator.CreateInstance <TNewDef>();
                    def2.defName = "New" + typeof(TNewDef).Name;
                    this.curPackage.AddDef(def2);
                }
            }
            if (Event.current.type == EventType.Layout)
            {
                this.viewHeight = listing_Standard.CurHeight;
            }
            listing_Standard.End();
            Widgets.EndScrollView();
            Profiler.EndSample();
        }