コード例 #1
0
            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);
                }
            }
コード例 #2
0
        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;
                }
            }
        }
コード例 #3
0
        /// <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;
                }
            }
        }