示例#1
0
        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();
     }
 }