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")}"));
        }
示例#2
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();
        }