public void HandleModList(ByteReader data) { Multiplayer.session.mods.remoteRwVersion = data.ReadString(); Multiplayer.session.mods.remoteModNames = data.ReadPrefixedStrings(); Multiplayer.session.mods.remoteModIds = data.ReadPrefixedStrings(); Multiplayer.session.mods.remoteWorkshopModIds = data.ReadPrefixedULongs(); var modConfigsCompressed = data.ReadPrefixedBytes(); Multiplayer.session.mods.remoteModConfigs = SimpleJson.DeserializeObject <Dictionary <string, string> >(GZipStream.UncompressString(modConfigsCompressed)); Multiplayer.session.mods.defInfo = Multiplayer.localDefInfos; var modsMatch = ModManagement.ModsMatch(Multiplayer.session.mods.remoteModIds); var modConfigsMatch = ModManagement.CheckModConfigsMatch(Multiplayer.session.mods.remoteModConfigs); if (!modsMatch || !modConfigsMatch) { if (!modConfigsMatch) { Log.Message($"MP Connect: client mod configs don't match server: {ModManagement.GetMismatchedModConfigs(Multiplayer.session.mods.remoteModConfigs).ToCommaList()}"); } Find.WindowStack.windows.Clear(); Find.WindowStack.Add(new ModsMismatchWindow( Multiplayer.session.mods, SendClientDefs )); return; } SendClientDefs(); }
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(); } }