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; } }
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; } } }
public static void ClientSendLobbyModsList(ModListNotifyMessage list) { Instance.ClientSendMessage(Msgs.LobbyModsListNotify, list); }