// TODO: // player update messages: // 1. player list (for newcomer) // 2. new player (for other players) // 3. remove player (for other players) public void UpdatePlayers(Msg_SC_UpdatePlayers msg) { if (msg.Clear) { foreach (var p in mPlayers) { p.Dispose(); } mPlayers.Clear(); } Protocol.Player playerData = InstancePool.Get <Protocol.Player>(); for (int i = 0; i < msg.AddPlayersLength; ++i) { msg.GetAddPlayers(playerData, i); PlayerClient newPlayer = PlayerClient.New(playerData); mPlayers.Add(newPlayer); } for (int i = 0; i < msg.RemovePlayersLength; ++i) { PlayerClient removePlayer = Get(msg.GetRemovePlayers(i)); if (null != removePlayer) { removePlayer.Dispose(); mPlayers.Remove(removePlayer); } } }