Example #1
0
        private void handleDataMessage(NetIncomingMessage msg)
        {
            //log.Info("Got data message: {0}", msg);

            MessageType type = (MessageType)msg.ReadByte();
            switch (type)
            {
                case MessageType.PlayerPosition:
                    // Batch player position message.
                    S_PlayerPositionMessage playerPositionMessage = new S_PlayerPositionMessage()
                    {
                        RUIList = new List<long>(),
                        PositionList = new List<Vector2>()
                    };
                    playerPositionMessage.Read(msg);
                    playerManager.UpdatePositions(playerPositionMessage.PlayerCount,
                        playerPositionMessage.RUIList, playerPositionMessage.PositionList);
                    break;
                case MessageType.PlayerJoin:
                    // A new player has joined, so add it to the local dictionary.
                    S_PlayerJoinMessage playerJoinMessage = new S_PlayerJoinMessage();
                    playerJoinMessage.Read(msg);
                    PlayerManager.Add(playerJoinMessage.PlayerRUI,
                        new Player(playerJoinMessage.PlayerRUI, Resources.playerTexture, playerJoinMessage.Color));
                    break;
                case MessageType.PlayerList:
                    S_PlayerListMessage playerListMessage = new S_PlayerListMessage();
                    playerListMessage.playerTexture = Resources.playerTexture;
                    playerListMessage.Read(msg);
                    log.Info("playersCount: {0}", playerListMessage.PlayerCount);
                    playerManager.AddAll(playerListMessage.Players);
                    // Find and set the local player from the players list.
                    if (!playerManager.Players.TryGetValue(client.UniqueIdentifier, out localPlayer))
                    {
                        // This should never happen.
                        log.Error("Unable to find local player in player list");
                        client.Disconnect("Error");
                    }
                    localPlayer.Sprite = new Sprite(Resources.playerTexture);
                    break;
                default:
                    log.Error("Unknown message type: {0}", type);
                    break;
            }
        }