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