private void ReceivedModList(int connectionID, ModListNotifyMessage list)
        {
            if (info.IsConnected(connectionID))
            {
                if (info.IsHost(connectionID))
                {
                    CompileNetworkModList(list, hostMods);
                    receivedHostModList = true;
                }
                else
                {
                    CompileNetworkModList(list, clientMods);
                    receivedClientModList = true;
                }
                if (receivedHostModList && receivedClientModList)
                {
                    CombineModLists();
                    SendModList();
                }

                Unity.GameLink.ServerHostMods   = hostMods;
                Unity.GameLink.ServerClientMods = clientMods;
                Unity.GameLink.ServerComboMods  = combinedMods;
            }
        }
Пример #2
0
        private void SendModList(List <LocalModInfo> list)
        {
            ModListNotifyMessage msg = new ModListNotifyMessage();

            msg.entries = new ModListNotifyEntry[list.Count];
            for (int i = 0; i < list.Count; i++)
            {
                LocalModInfo lmod = list[i];
                msg.entries[i] = new ModListNotifyEntry()
                {
                    modName        = lmod.modName,
                    displayName    = lmod.displayName,
                    author         = lmod.author,
                    numericVersion = lmod.numericVersion,
                    displayVersion = lmod.displayVersion,
                };
            }

            NetworkTracker.ClientSendLobbyModsList(msg);
        }
        private void CompileNetworkModList(ModListNotifyMessage nlist, List <Mod> slist)
        {
            slist.Clear();
            nameMap.Clear();

            foreach (var nmod in nlist.entries)
            {
                int repeatIndex;
                if (nameMap.TryGetValue(nmod.modName, out repeatIndex))
                {
                    if (nmod.numericVersion > slist[repeatIndex].numericVersion)
                    {
                        slist[repeatIndex] = Transform(nmod);
                    }
                }
                else
                {
                    slist.Add(Transform(nmod));
                    nameMap[nmod.modName] = slist.Count - 1;
                }
            }
        }
Пример #4
0
 public static void ClientSendLobbyModsList(ModListNotifyMessage list)
 {
     Instance.ClientSendMessage(Msgs.LobbyModsListNotify, list);
 }