diff --git a/Languages b/Languages index 50e1dc7c..b9e8d304 160000 --- a/Languages +++ b/Languages @@ -1 +1 @@ -Subproject commit 50e1dc7c995070232970cb5e54ca88598a0e74e2 +Subproject commit b9e8d304af3a60003bf18227b6798d94c7f81e91 diff --git a/Source/Client/Settings/MpSettings.cs b/Source/Client/Settings/MpSettings.cs index 2e2e4173..e9b8ff5a 100644 --- a/Source/Client/Settings/MpSettings.cs +++ b/Source/Client/Settings/MpSettings.cs @@ -33,6 +33,7 @@ public class MpSettings : ModSettings public bool hideOtherPlayersInColonistBar = false; public bool hideOtherPlayersQuests = false; + public string mostRecentVersionWelcomed = ""; internal static readonly ColorRGBClient[] DefaultPlayerColors = { @@ -82,6 +83,8 @@ public override void ExposeData() Scribe_Deep.Look(ref serverSettingsClient, "serverSettings"); serverSettingsClient ??= new ServerSettingsClient(); + + Scribe_Values.Look(ref mostRecentVersionWelcomed, "playerWelcomedToThisVersion", ""); } } diff --git a/Source/Client/UI/MainMenuAnimation.cs b/Source/Client/UI/MainMenuAnimation.cs index c1810c71..13fa577d 100644 --- a/Source/Client/UI/MainMenuAnimation.cs +++ b/Source/Client/UI/MainMenuAnimation.cs @@ -1,9 +1,10 @@ -using System; -using System.Collections.Generic; -using System.Linq; using HarmonyLib; using Multiplayer.Client.Util; using RimWorld; +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; using UnityEngine; using Verse; using Random = System.Random; @@ -436,4 +437,6 @@ static void Postfix(ref bool __result) __result = false; } } + + } diff --git a/Source/Client/Windows/ServerBrowser.cs b/Source/Client/Windows/ServerBrowser.cs index 8ce3edbf..ebc64868 100644 --- a/Source/Client/Windows/ServerBrowser.cs +++ b/Source/Client/Windows/ServerBrowser.cs @@ -19,6 +19,40 @@ namespace Multiplayer.Client { + public static class WelcomeMessage + { + public static bool welcomedThisSession = false; + + public static string version => "MpWelcomeVersion".Translate(); + + + public static string Title() + { + string title = "MpWelcomeTitle".Translate(version) ; + return title; + } + public static TaggedString Message() + { + TaggedString message = "MpWelcomeMessage".Translate() + "\n\n"; + + int issueCount = 1; + string knownIssueKey = "MpKnownIssue"; + + //while (LanguageDatabase.activeLanguage.HaveTextForKey(knownIssueKey + issueCount)) + foreach (var thing in LanguageDatabase.activeLanguage.keyedReplacements.Where(kvp => kvp.Key.StartsWith(knownIssueKey))) + { + message += "- " + (thing.Key).Translate() + "\n"; + issueCount++; + } + + message += "\n\n" + "MpWelcomeCompleteList".Translate(); + message += "\n\n" + "MpWelcomePrepatcher".Translate(); + message += "\n\n" + "MpWelcomeDiscord".Translate(); + + return message; + } + } + public class ServerBrowser : Window { private LanListener lanListener; @@ -41,6 +75,19 @@ enum Tabs Lan, Direct, Steam, Host } + public override void PostOpen() + { + if ((Multiplayer.settings.mostRecentVersionWelcomed == WelcomeMessage.version && Multiplayer.settings.mostRecentVersionWelcomed != "testing" )|| WelcomeMessage.welcomedThisSession) return; + Find.WindowStack.Add(new Dialog_MessageBox(WelcomeMessage.Message(), title: WelcomeMessage.Title(), buttonBAction: () => + { + Multiplayer.settings.mostRecentVersionWelcomed = WelcomeMessage.version; + Multiplayer.settings.Write(); + }, buttonBText: "MpWelcomeNeverShowButton".Translate())); + WelcomeMessage.welcomedThisSession = true; + } + + + public override void DoWindowContents(Rect inRect) { DrawInfoButtons();