private static void ShowModList(SessionModInfo mods)
        {
            var activeMods = LoadedModManager.RunningModsListForReading.Join(m => "+ " + m.Name, "\n");
            var serverMods = mods.remoteModNames.Join(name => (ModLister.AllInstalledMods.Any(m => m.Name == name) ? "+ " : "- ") + name, delimiter: "\n");

            Find.WindowStack.Add(new TwoTextAreas_Window($"RimWorld {mods.remoteRwVersion}\nServer mod list:\n\n{serverMods}", $"RimWorld {VersionControl.CurrentVersionString}\nActive mod list:\n\n{activeMods}"));
        }
 public ModsMismatchWindow(SessionModInfo mods, Action continueConnecting)
     : base("MpWrongDefs".Translate(), "MpWrongDefsInfo".Translate())
 {
     this.mods = mods;
     this.continueConnecting = continueConnecting;
     returnToServerBrowser   = true;
     modsMatch       = ModManagement.ModsMatch(mods.remoteModIds);
     modConfigsMatch = ModManagement.CheckModConfigsMatch(mods.remoteModConfigs);
     if (modsMatch)
     {
         reason = "MpWrongModConfigs".Translate();
         desc   = "MpWrongModConfigsInfo".Translate();
     }
 }
 public DefMismatchWindow(SessionModInfo mods) : base("MpWrongDefs".Translate(), "MpWrongDefsInfo".Translate())
 {
     this.mods             = mods;
     returnToServerBrowser = true;
 }
        private static void ShowConfigsList(SessionModInfo mods)
        {
            var mismatchedModConfigs = ModManagement.GetMismatchedModConfigs(mods.remoteModConfigs);

            Find.WindowStack.Add(new DebugTextWindow($"Mismatched mod configs:\n\n{mismatchedModConfigs.Join(file => "+ " + file, "\n")}"));
        }