public void Handle(NetConnection sender, NetIncomingMessage message)
        {
            if (!(sender.Tag is Player))
            {
                return;
            }

            var player = (Player)sender.Tag;

            playerRepository.Delete(player.Client.PersistentId);
            clientRepository.Delete(player.Client.PersistentId);

            var characterDisconnectedMessageData = new CharacterDisconnectedMessageData();

            characterDisconnectedMessageData.Character = player.Character;
            outgoingMessageService.Send(characterDisconnectedMessageData, playerRepository.GetPlayersConnection(new List <Player>(playerRepository.Players.Values)));
        }
예제 #2
0
        public SNMessageData GetMessageData(short type)
        {
            ClientMessageTypes header  = (ClientMessageTypes)type;
            SNMessageData      message = null;

            switch (header)
            {
                #region Authentification
            case ClientMessageTypes.PlayerLoginSuccess:
                message = new PlayerLoginSuccessMessageData();
                break;

            case ClientMessageTypes.PlayerLoginError:
                message = new PlayerLoginErrorMessageData();
                break;

            case ClientMessageTypes.SendCharacters:
                message = new SendCharactersMessageData();
                break;

            case ClientMessageTypes.CharacterSelected:
                message = new CharacterSelectedMessageData();
                break;
                #endregion

                #region Entities
            case ClientMessageTypes.EntityPosition:
                message = new EntityPositionMessageData();
                break;

            case ClientMessageTypes.CharacterDisconnected:
                message = new CharacterDisconnectedMessageData();
                break;
                #endregion

            default:
                loggingService.Log($"Cannot build client message {header.ToString()}", LogMessageType.WARNING);
                break;
            }

            return(message);
        }