public void OnFNLobbyMasterKnowledgeTransfer(ILobbyMaster previousLobbyMaster) { LobbyPlayers.Clear(); LobbyPlayersMap.Clear(); LobbyTeams.Clear(); for (int i = 0; i < previousLobbyMaster.LobbyPlayers.Count; ++i) { IClientMockPlayer player = previousLobbyMaster.LobbyPlayers[i]; LobbyPlayers.Add(player); LobbyPlayersMap.Add(player.NetworkId, player); } IEnumerator iter = previousLobbyMaster.LobbyTeams.GetEnumerator(); iter.Reset(); while (iter.MoveNext()) { if (iter.Current != null) { KeyValuePair <int, List <IClientMockPlayer> > kv = (KeyValuePair <int, List <IClientMockPlayer> >)iter.Current; LobbyTeams.Add(kv.Key, kv.Value); } else { break; } } foreach (KeyValuePair <int, List <IClientMockPlayer> > kv in previousLobbyMaster.LobbyTeams) { LobbyTeams.Add(kv.Key, kv.Value); } }
public void OnFNLobbyMasterKnowledgeTransfer(ILobbyMaster previousLobbyMaster) { LobbyPlayers.Clear(); LobbyPlayersMap.Clear(); LobbyTeams.Clear(); for (int i = 0; i < previousLobbyMaster.LobbyPlayers.Count; ++i) { LobbyPlayer player = GrabPlayer(previousLobbyMaster.LobbyPlayers[i]); LobbyPlayers.Add(player); LobbyPlayersMap.Add(player.NetworkId, player); } IEnumerator iterTeams = previousLobbyMaster.LobbyTeams.GetEnumerator(); iterTeams.Reset(); while (iterTeams.MoveNext()) { if (iterTeams.Current != null) { KeyValuePair <int, List <IClientMockPlayer> > kv = (KeyValuePair <int, List <IClientMockPlayer> >)iterTeams.Current; List <IClientMockPlayer> players = new List <IClientMockPlayer>(); for (int i = 0; i < kv.Value.Count; ++i) { players.Add(GrabPlayer(kv.Value[i])); } LobbyTeams.Add(kv.Key, players); } else { break; } } IEnumerator iterPlayersMap = previousLobbyMaster.LobbyPlayersMap.GetEnumerator(); iterPlayersMap.Reset(); while (iterPlayersMap.MoveNext()) { if (iterPlayersMap.Current != null) { KeyValuePair <uint, IClientMockPlayer> kv = (KeyValuePair <uint, IClientMockPlayer>)iterPlayersMap.Current; if (LobbyPlayersMap.ContainsKey(kv.Key)) { LobbyPlayersMap[kv.Key] = GrabPlayer(kv.Value); } else { LobbyPlayersMap.Add(kv.Key, GrabPlayer(kv.Value)); } } else { break; } } }
/// <summary> /// Set the lobby master /// </summary> /// <param name="lobbyMaster">The next lobby master</param> public void SetLobbyMaster(ILobbyMaster lobbyMaster) { //Ignore setting the same lobby twice if (lobbyMaster == _masterLobby) { return; } if (lobbyMaster != null) { if (_masterLobby != null) { //We update the lobby with the previous one's information because it may be more up to date lobbyMaster.OnFNLobbyMasterKnowledgeTransfer(_masterLobby); _masterLobby = lobbyMaster; } else { _masterLobby = lobbyMaster; } } }