public void HandleRegisterGame(RegisterGameClientRequest request) { try { LobbyPlayerInfo playerInfo = SessionManager.OnPlayerConnect(this, request); if (playerInfo != null) { Log.Print(LogType.Lobby, string.Format(Config.Messages.LoginSuccess, this.UserName)); RegisterGameClientResponse response = new RegisterGameClientResponse { AuthInfo = request.AuthInfo, SessionInfo = request.SessionInfo, ResponseId = request.RequestId }; Send(response); SendLobbyServerReadyNotification(); } else { SendErrorResponse(new RegisterGameClientResponse(), request.RequestId, Config.Messages.LoginFailed); } } catch (Exception e) { SendErrorResponse(new RegisterGameClientResponse(), request.RequestId, e); } }
public async Task OnMessage(LobbyServerConnection connection, object requestData) { RegisterGameClientRequest request = (RegisterGameClientRequest)requestData; PlayerData.Player p = PlayerData.GetPlayer(request.SessionInfo.Handle); connection.SessionToken = request.SessionInfo.SessionToken; //connection.PlayerInfo = SessionManager.Get(connection.SessionToken); //connection.PlayerInfo.SetHandle(p.UserName); //connection.PlayerInfo.SetAccountId(p.AccountId); //connection.PlayerInfo.SetBannerID(p.SelectedBackgroundBannerID); //connection.PlayerInfo.SetEmblemID(p.SelectedForegroundBannerID); //connection.PlayerInfo.SetRibbonID(p.SelectedRibbonID); //connection.PlayerInfo.SetTitleID(p.SelectedTitleID); //connection.PlayerInfo.SetCharacterType(p.LastSelectedCharacter); // Send RegisterGameClientResponse await Send_RegisterGameClientResponse(connection, request); // Sent LobbyServerReadyNotification await Send_LobbyServerReadyNotification(connection); // Send "{username} has connected" to global chat await Send_ChatConnectedNotification(connection); }
private static RegisterGameClientResponse RegisterGameClient(RegisterGameClientRequest request) { RegisterGameClientResponse response = new RegisterGameClientResponse(); response.SessionInfo = request.SessionInfo; response.SessionInfo.ConnectionAddress = "127.0.0.1"; response.SessionInfo.LanguageCode = "EN"; response.AuthInfo = request.AuthInfo; response.AuthInfo.AccountId = request.SessionInfo.AccountId; // Override AuthInfo.AccountId with SessionInfo.AccountID, The account id from SessionInfo is set in the DirectoryServer and has the accountid value from database for the client username response.DevServerConnectionUrl = "127.0.0.1"; // What is this? response.AuthInfo.AccountStatus = null; response.Status = new LobbyStatusNotification { AllowRelogin = false, ClientAccessLevel = ClientAccessLevel.Full, ConnectionQueueInfo = null, ErrorReportRate = TimeSpan.FromMinutes(3), GameplayOverrides = null, HasPurchasedGame = true, HighestPurchasedGamePack = 0, LocalizedFailure = null, PacificNow = DateTime.UtcNow, // TODO: Originally had "0001-01-01T00:00:00" ServerLockState = ServerLockState.Unlocked, ServerMessageOverrides = new ServerMessageOverrides().FillDummyData(), TimeOffset = TimeSpan.Zero, UtcNow = DateTime.UtcNow, // TODO: Originally had "0001-01-01T00:00:00" RequestId = 0, ResponseId = 0, }; response.LocalizedFailure = null; response.RequestId = 0; response.ResponseId = request.RequestId; return(response); }
public static LobbyPlayerInfo OnPlayerConnect(LobbyServerProtocol client, RegisterGameClientRequest clientRequest) { long sessionToken = GeneratedSessionToken++; Database.Account user = Database.Account.GetByUserName(clientRequest.AuthInfo.Handle); client.AccountId = user.AccountId; client.SessionToken = sessionToken; client.UserName = user.UserName; client.SelectedGameType = user.LastSelectedGameType; client.SelectedSubTypeMask = 0; LobbyPlayerInfo playerInfo = new LobbyPlayerInfo { AccountId = user.AccountId, BannerID = user.BannerID, BotCanTaunt = false, BotsMasqueradeAsHumans = false, CharacterInfo = CharacterManager.GetCharacterInfo(user.AccountId, user.LastCharacter), ControllingPlayerId = 0, EffectiveClientAccessLevel = ClientAccessLevel.Full, EmblemID = user.EmblemID, Handle = user.UserName, IsGameOwner = true, IsLoadTestBot = false, IsNPCBot = false, PlayerId = 0, ReadyState = ReadyState.Unknown, ReplacedWithBots = false, RibbonID = user.RibbonID, TitleID = user.TitleID, TitleLevel = 1 }; ActivePlayers.Add(user.AccountId, playerInfo); SessionTokenAccountIDCache.Add(sessionToken, playerInfo.AccountId); ActiveConnections.Add(user.AccountId, client); return(playerInfo); }
public async Task OnMessage(ClientConnection connection, object requestData) { RegisterGameClientRequest request = (RegisterGameClientRequest)requestData; PlayerData.Player p = PlayerData.GetPlayer(request.SessionInfo.Handle); connection.AccountId = p.AccountId; connection.UserName = p.UserName; connection.SelectedTitleID = p.SelectedTitleID; connection.SelectedBackgroundBannerID = p.SelectedBackgroundBannerID; connection.SelectedForegroundBannerID = p.SelectedForegroundBannerID; connection.SelectedRibbonID = p.SelectedTitleID; connection.SelectedCharacter = p.LastSelectedCharacter; // Send RegisterGameClientResponse await Send_RegisterGameClientResponse(connection, request); // Sent LobbyServerReadyNotification await Send_LobbyServerReadyNotification(connection); // Send "{username} has connected" to global chat await Send_ChatConnectedNotification(connection); }
private async Task Send_RegisterGameClientResponse(LobbyServerConnection connection, RegisterGameClientRequest request) { Log.Print(LogType.Debug, "Sending Send_RegisterGameClientResponse"); var response = RegisterGameClient(request); await connection.SendMessage(response); }
private async Task Send_RegisterGameClientResponse(ClientConnection connection, RegisterGameClientRequest request) { var response = RegisterGameClient(request); await connection.SendMessage(response); }
/// <summary> /// When the player starts the game and connects to lobby /// </summary> /// <param name="client"></param> /// <param name="request"></param> /// <returns></returns> public async static Task OnPlayerConnectToLobby(LobbyServerConnection client, RegisterGameClientRequest request) { await new RegisterGameClientRequestHandler().OnMessage(client, request); //Log.Print(LogType.Lobby, $"{client.PlayerInfo.GetHandle()} ID {client.PlayerInfo.GetAccountId()}, Token {client.SessionToken} connected to the server"); }