public void Handle(IPEndPoint sender, SNMessageData messageData) { var playerLoginMessageData = (PlayerLoginMessageData)messageData; Task.Run(() => { if (IsValidUser(playerLoginMessageData.Email, playerLoginMessageData.Password, out string persistentId)) { string token = tokenManager.GenerateToken(playerLoginMessageData.Email, persistentId); tokenRepository.Add(token); var msg = zoneServerNetPeer.CreateMessage(); var playerLoginSuccessMessageData = new PlayerLoginSuccessMessageData(); playerLoginSuccessMessageData.Token = token; playerLoginSuccessMessageData.Encode(msg); zoneServerNetPeer.SendUnconnectedMessage(msg, sender); } else { var msg = zoneServerNetPeer.CreateMessage(); var playerLoginErrorMessageData = new PlayerLoginErrorMessageData(); playerLoginErrorMessageData.Encode(msg); zoneServerNetPeer.SendUnconnectedMessage(msg, sender); } }); }
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); }