public async Task OnMessage(LobbyServerConnection connection, object requestData)
        {
            var request  = (GroupInviteRequest)requestData;
            var response = new GroupInviteResponse()
            {
                ResponseId = request.RequestId, FriendHandle = request.FriendHandle
            };

            connection.SendMessage(response);

            LobbyServerConnection user = LobbyServer.GetPlayerByHandle(request.FriendHandle);
            await user.SendMessage(new GroupConfirmationRequest()
            {
                //LeaderFullHandle = connection.PlayerInfo.GetHandle(),
                //LeaderName = connection.PlayerInfo.GetHandle(),
                ConfirmationNumber = 1234,
                ExpirationTime     = TimeSpan.FromMinutes(1),
                GroupId            = 508, // TODO
                //JoinerAccountId = connection.PlayerInfo.GetAccountId(),
                //JoinerName = connection.PlayerInfo.GetHandle(),
                RequestId  = 0,
                ResponseId = 0,
                Type       = GroupConfirmationRequest.JoinType.Unicode000E
            });
        }
Esempio n. 2
0
        public async Task OnMessage(LobbyServerConnection connection, object requestData)
        {
            var request  = (PurchaseBannerBackgroundRequest)requestData;
            var response = new PurchaseBannerBackgroundResponse()
            {
                CurrencyType       = request.CurrencyType,
                BannerBackgroundId = request.BannerBackgroundId,
                Result             = PurchaseResult.Success,
                ResponseId         = request.RequestId
            };
            await connection.SendMessage(response);

            var update = new InventoryComponentUpdateNotification()
            {
                InventoryComponent = new InventoryComponent()
                {
                    Items = new List <InventoryItem>()
                    {
                        new InventoryItem(request.BannerBackgroundId), new InventoryItem(515, 3)
                    }
                },
                RequestId = 0,
            };
            await connection.SendMessage(update);
        }
        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);
        }
Esempio n. 4
0
        public async Task OnMessage(LobbyServerConnection connection, object requestData)
        {
            ChatNotification notification = (ChatNotification)requestData;
            //notification.SenderAccountId = connection.PlayerInfo.GetAccountId();
            //notification.SenderHandle = connection.PlayerInfo.GetHandle();

            await LobbyServer.sendChatAsync(notification, connection);
        }
 public async Task OnMessage(LobbyServerConnection connection, object requestData)
 {
     CrashReportArchiveNameResponse response = new CrashReportArchiveNameResponse()
     {
         ArchiveName = DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss") + ".txt",
         ResponseId  = ((CrashReportArchiveNameRequest)requestData).RequestId
     };
     await connection.SendMessage(response);
 }
Esempio n. 6
0
        public async static Task AddFriend(LobbyServerConnection connection, FriendUpdateRequest request)
        {
            LobbyServerConnection friend = LobbyServer.GetPlayerByHandle(request.FriendHandle);
            var friendRequest            = new FriendUpdateRequest()
            {
                //FriendHandle = connection.PlayerInfo.GetHandle(),
                //FriendAccountId = connection.PlayerInfo.GetAccountId(),
                FriendOperation = FriendOperation.Add,
                RequestId       = 0,
                ResponseId      = 0
            };
            await friend.SendMessage(friendRequest);

            // Send a "RequestSent" status to the person that wants to add a new friend
            await connection.SendMessage(new FriendStatusNotification()
            {
                FriendList = new Framework.Network.Static.FriendList()
                {
                    Friends = new Dictionary <long, Framework.Network.Static.FriendInfo>()
                    {
                        {
                            0,
                            new Framework.Network.Static.FriendInfo()
                            {
                                FriendHandle    = request.FriendHandle,
                                FriendAccountId = request.FriendAccountId,
                                FriendStatus    = Framework.Constants.Enums.FriendStatus.RequestSent,
                            }
                        }
                    },
                    IsDelta = true// set this to true to the request to tell the client to not overwrite current friend list
                }
            });

            // Send a "RequestReceived" status to the person
            await connection.SendMessage(new FriendStatusNotification()
            {
                FriendList = new Framework.Network.Static.FriendList()
                {
                    Friends = new Dictionary <long, Framework.Network.Static.FriendInfo>()
                    {
                        {
                            0,
                            new Framework.Network.Static.FriendInfo()
                            {
                                //FriendHandle = connection.PlayerInfo.GetHandle(),
                                //FriendAccountId = connection.PlayerInfo.GetAccountId(),
                                FriendStatus = Framework.Constants.Enums.FriendStatus.RequestReceived,
                            }
                        }
                    },
                    IsDelta = true // set that this request doesnt have to overwrite friendlist
                }
            });

            // TODO: SEND FRIENDSTATUSNOTIFICATION WITH STATUS REQUESTSENT
        }
Esempio n. 7
0
 public async Task OnMessage(LobbyServerConnection connection, object requestData)
 {
     var response = new PlayerMatchDataResponse()
     {
         MatchData  = new List <PersistedCharacterMatchData>(),
         ResponseId = ((PlayerMatchDataRequest)requestData).RequestId
     };
     await connection.SendMessage(response);
 }
Esempio n. 8
0
        public void Notify(LobbyServerConnection client)
        {
            MatchmakingQueueStatusNotification notification = new MatchmakingQueueStatusNotification()
            {
                MatchmakingQueueInfo = QueueInfo
            };

            _ = client.SendMessage(notification);
        }
 public async Task OnMessage(LobbyServerConnection connection, object requestData)
 {
     var response = new PurchaseLoadoutSlotResponse()
     {
         Character  = ((PurchaseLoadoutSlotRequest)requestData).Character,
         ResponseId = ((PurchaseLoadoutSlotRequest)requestData).RequestId
     };
     /*I think there are more things to do here*/
     await connection.SendMessage(response);
 }
Esempio n. 10
0
        public async Task OnMessage(LobbyServerConnection connection, object requestData)
        {
            var request = (JoinMatchmakingQueueRequest)requestData;
            await connection.SendMessage(new JoinMatchmakingQueueResponse()
            {
                ResponseId = request.RequestId
            });

            LobbyQueueManager.AddPlayerToQueue(connection);
        }
        public async Task OnMessage(LobbyServerConnection connection, object requestData)
        {
            var request = (LeaveMatchmakingQueueRequest)requestData;

            LobbyQueueManager.RemovePlayerFromQueue(connection);
            await connection.SendMessage(new LeaveMatchmakingQueueResponse()
            {
                ResponseId = request.RequestId
            });
        }
 public Task OnMessage(LobbyServerConnection connection, object requestData)
 {
     /*
      * ClientFeedbackReport feedback = (ClientFeedbackReport)requestData;
      * if (feedback.Reason == ClientFeedbackReport.FeedbackReason.Suggestion)
      *  Log.Print(LogType.Lobby, $"{connection.PlayerInfo.GetHandle()} sent a suggestion: {feedback.Message}");
      * else if (feedback.Reason == ClientFeedbackReport.FeedbackReason.Bug)
      *  Log.Print(LogType.Lobby, $"{connection.PlayerInfo.GetHandle()} sent a bug report: {feedback.Message}");
      */
     return(Task.CompletedTask);
 }
Esempio n. 13
0
        public async Task OnMessage(LobbyServerConnection connection, object requestData)
        {
            SetGameSubTypeRequest request = (SetGameSubTypeRequest)requestData;
            //connection.PlayerInfo.SetGameType(request.gameType);
            //connection.PlayerInfo.SetSubTypeMask(request.SubTypeMask);

            await connection.SendMessage(new SetGameSubTypeResponse()
            {
                ResponseId = request.RequestId
            });
        }
 public async Task OnMessage(LobbyServerConnection connection, object requestData)
 {
     var request = (PurchaseBannerForegroundRequest)requestData;
     var response = new PurchaseBannerForegroundResponse()
     {
         CurrencyType = request.CurrencyType,
         BannerForegroundId = request.BannerForegroundId,
         Result = PurchaseResult.Success,
         ResponseId = request.RequestId
     };
     await connection.SendMessage(response);
 }
 public async Task OnMessage(LobbyServerConnection connection, object requestData)
 {
     var request  = (PurchaseChatEmojiRequest)requestData;
     var response = new PurchaseChatEmojiResponse()
     {
         Result       = PurchaseResult.Success,
         CurrencyType = request.CurrencyType,
         EmojiID      = request.EmojiID,
         ResponseId   = request.RequestId
     };
     await connection.SendMessage(response);
 }
Esempio n. 16
0
 public async Task OnMessage(LobbyServerConnection connection, object requestData)
 {
     var request  = (PurchaseTauntRequest)requestData;
     var response = new PurchaseTauntResponse()
     {
         Result        = PurchaseResult.Success,
         CurrencyType  = request.CurrencyType,
         CharacterType = request.CharacterType,
         TauntId       = request.TauntId,
         ResponseId    = request.RequestId
     };
     await connection.SendMessage(response);
 }
        public async Task OnMessage(LobbyServerConnection connection, object requestData)
        {
            PlayerUpdateStatusRequest request = (PlayerUpdateStatusRequest)requestData;

            connection.StatusString = request.StatusString;
            var response = new PlayerUpdateStatusResponse()
            {
                AccountId    = request.AccountId,
                StatusString = request.StatusString,
                ResponseId   = request.RequestId
            };
            await connection.SendMessage(response);
        }
Esempio n. 18
0
        public async Task OnMessage(LobbyServerConnection connection, object requestData)
        {
            var request = (FriendUpdateRequest)requestData;

            switch (request.FriendOperation)
            {
            case FriendOperation.Accept:
                FriendListUtils.AcceptFriend(connection, request);
                break;

            case FriendOperation.Add:
                await FriendListUtils.AddFriend(connection, request);

                break;

            case FriendOperation.Block:
                FriendListUtils.BlockFriend(connection, request);
                break;

            case FriendOperation.Note:
                FriendListUtils.NoteFriend(connection, request);
                break;

            case FriendOperation.Reject:
                FriendListUtils.RejectFriend(connection, request);
                break;

            case FriendOperation.Remove:
                FriendListUtils.RemoveFriend(connection, request);
                break;

            case FriendOperation.Unblock:
                FriendListUtils.UnblockFriend(connection, request);
                break;

            case FriendOperation.Unknown:
                break;
            }

            var response = new FriendUpdateResponse()
            {
                FriendAccountId = request.FriendAccountId,
                FriendHandle    = request.FriendHandle,
                FriendOperation = request.FriendOperation,
                ResponseId      = request.RequestId
            };

            await connection.SendMessage(response);
        }
Esempio n. 19
0
        public static AccountComponent GetAccountComponent(LobbyServerConnection connection)
        {
            //TODO this looks awful
            AccountComponent accountComponent = new AccountComponent()
            {
                //LastCharacter = connection.PlayerInfo.GetCharacterType(),
                LastRemoteCharacters = new List <CharacterType>(),
                UIStates             = new Dictionary <AccountComponent.UIStateIdentifier, int> {
                    { AccountComponent.UIStateIdentifier.HasViewedFluxHighlight, 1 }, { AccountComponent.UIStateIdentifier.HasViewedGGHighlight, 1 }
                },
                //UnlockedTitleIDs = GetUnlockedTitleIDs(connection.PlayerInfo.GetAccountId()),
                //UnlockedBannerIDs = GetUnlockedTitleIDs(connection.PlayerInfo.GetAccountId()),
                //UnlockedEmojiIDs = GetUnlockedTitleIDs(connection.PlayerInfo.GetAccountId()),
                //UnlockedOverconIDs = GetUnlockedTitleIDs(connection.PlayerInfo.GetAccountId()),
            };

            return(accountComponent);
        }
Esempio n. 20
0
        public void AddPlayer(LobbyServerConnection client)
        {
            //Log.Print(LogType.Lobby, $"Player {client.PlayerInfo.GetHandle()} joined {GameType.ToString()} Queue");

            Players.Add(client);
            QueueInfo.QueuedPlayers++;

            LobbyMatchmakingQueueInfo info = QueueInfo.Clone();

            info.QueueStatus = Framework.Constants.Enums.QueueStatus.Success;


            MatchmakingQueueAssignmentNotification assignmentNotification = new MatchmakingQueueAssignmentNotification()
            {
                Reason = "",
                MatchmakingQueueInfo = info
            };

            _ = client.SendMessage(assignmentNotification);

            Update();
        }
Esempio n. 21
0
        public static PersistedAccountData GetAccountData(LobbyServerConnection connection)
        {
            PersistedAccountData accountData = new PersistedAccountData()
            {
                //AccountId = connection.PlayerInfo.GetAccountId(),
                AccountComponent = GetAccountComponent(connection),
                //BankComponent = GetBankData(connection.PlayerInfo.GetAccountId()),
                CharacterData = GetCharacterData(),
                CreateDate    = DateTime.Now.AddHours(-1),
                //Handle = connection.PlayerInfo.GetHandle(),
                QuestComponent = new QuestComponent()
                {
                    ActiveSeason = 9
                },                                                          // Provide a SeasonExperience to set Season Level on client
                SchemaVersion = new SchemaVersion <AccountSchemaChange>(0x1FFFF),
                UpdateDate    = DateTime.Now,
                //UserName = connection.PlayerInfo.GetHandle(),
                InventoryComponent = new InventoryComponent(true)
            };

            return(accountData);
        }
 private LobbyServerReadyNotification LobbyServerReady(LobbyServerConnection connection)
 {
     // search here
     return(new LobbyServerReadyNotification
     {
         AccountData = PlayerUtils.GetAccountData(connection),
         AlertMissionData = new LobbyAlertMissionDataNotification(),
         CharacterDataList = DummyLobbyData.CreateCharacterDataList(),
         CommerceURL = "http://127.0.0.1/AtlasCommerce",
         EnvironmentType = EnvironmentType.External,
         FactionCompetitionStatus = new FactionCompetitionNotification(),
         FriendStatus = null,//new FriendStatusNotification {FriendList = FriendData.GetFriendList(connection.AccountId)},
         GroupInfo = new LobbyPlayerGroupInfo
         {
             SelectedQueueType = GameType.PvP,
             //MemberDisplayName = connection.PlayerInfo.GetHandle(),
             //ChararacterInfo = DummyLobbyData.CreateLobbyCharacterInfo(CharacterType.Archer),
             Members = new List <UpdateGroupMemberData>()
         },
         SeasonChapterQuests =
             new LobbySeasonQuestDataNotification
         {
             SeasonChapterQuests = new Dictionary <int, SeasonChapterQuests>()
         },
         ServerQueueConfiguration = DummyLobbyData.CreateServerQueueConfiguration(),
         Status = new LobbyStatusNotification
         {
             AllowRelogin = false,
             ServerLockState = ServerLockState.Unlocked,
             ServerMessageOverrides = null,//new ServerMessageOverrides(),
             ClientAccessLevel = ClientAccessLevel.Full,
             HasPurchasedGame = true,
             GameplayOverrides = DummyLobbyData.CreateLobbyGameplayOverrides(),
             UtcNow = DateTime.UtcNow,
             PacificNow = DateTime.Now, // TODO: Should be pacific time
             ErrorReportRate = TimeSpan.FromMinutes(3)
         }
     });
 }
Esempio n. 23
0
 public QueueSlot()
 {
     Empty  = true;
     IsBot  = false;
     Client = null;
 }
Esempio n. 24
0
 public Task OnMessage(LobbyServerConnection connection, object requestData)
 {
     return(Task.CompletedTask);
 }
 private async Task Send_LobbyServerReadyNotification(LobbyServerConnection connection)
 {
     LobbyServerReadyNotification lobbyServerReady = LobbyServerReady(connection);
     await connection.SendMessage(lobbyServerReady);
 }
Esempio n. 26
0
 public static void RejectFriend(LobbyServerConnection connection, FriendUpdateRequest request)
 {
 }
Esempio n. 27
0
        public async Task OnMessage(LobbyServerConnection connection, object requestData)
        {
            PlayerInfoUpdateRequest request = (PlayerInfoUpdateRequest)requestData;

            //if (request.GameType != null)
            //    connection.PlayerInfo.SetGameType(request.GameType.Value);


            // Change ReadyState
            if (request.PlayerInfoUpdate.ContextualReadyState != null)
            {
                if (request.PlayerInfoUpdate.ContextualReadyState.Value.ReadyState == ReadyState.Ready)
                {
                    //LobbyQueueManager.HandleReady(connection);
                    Log.Print(LogType.Debug, "HANDLE CHANGE READYSTATE");
                    LobbyQueueManager.AddPlayerToQueue(connection);
                }
                else
                {
                    Log.Print(LogType.Warning, "Contextual Ready state unhandled (PlayerInfoUpdateRequestHandler)");
                }
            }

            // Change Selected Freelancer
            else if (request.PlayerInfoUpdate.CharacterType != null)
            {
                //connection.PlayerInfo.SetCharacterType(request.PlayerInfoUpdate.CharacterType.Value);
                //PlayerData.SaveSelectedCharacter(connection.PlayerInfo.GetAccountId(), (int)connection.PlayerInfo.GetCharacterType());

                var accountDataUpdate = new PlayerAccountDataUpdateNotification
                {
                    AccountData = PlayerUtils.GetAccountData(connection)
                };

                await connection.SendMessage(accountDataUpdate);

                var response = new PlayerInfoUpdateResponse
                {
                    //CharacterInfo = connection.PlayerInfo.GetLobbyPlayerInfo().CharacterInfo,
                    OriginalPlayerInfoUpdate = request.PlayerInfoUpdate,
                    ResponseId = request.RequestId
                };
                await connection.SendMessage(response);

                return;
            }

            //Change Skin
            else if (request.PlayerInfoUpdate.CharacterSkin != null)
            {
                //connection.PlayerInfo.SetSkin(request.PlayerInfoUpdate.CharacterSkin.Value);
            }
            //Chnage Catalyst
            else if (request.PlayerInfoUpdate.CharacterCards != null)
            {
                //connection.PlayerInfo.SetCards(request.PlayerInfoUpdate.CharacterCards.Value);
            }
            // Chnage Mods
            else if (request.PlayerInfoUpdate.CharacterMods != null)
            {
                //connection.PlayerInfo.SetMods(request.PlayerInfoUpdate.CharacterMods.Value);
            }
            // Change Vfx
            else if (request.PlayerInfoUpdate.CharacterAbilityVfxSwaps != null)
            {
                //connection.PlayerInfo.SetAbilityVfxSwaps(request.PlayerInfoUpdate.CharacterAbilityVfxSwaps.Value);
            }
            // Chnage Loadout
            else if (request.PlayerInfoUpdate.CharacterLoadoutChanges != null)
            {
                Log.Print(LogType.Warning, "Changes in loadout not implemented yet(PlayerInfoUpdateRequestHandler.cs)");
            }
        }
Esempio n. 28
0
 public void RemovePlayer(LobbyServerConnection client)
 {
     Log.Print(LogType.Debug, $"Removing player {client} from {GameType.ToString()} Queue");
     Players.Remove(client);
     QueueInfo.QueuedPlayers--;
 }
 private async Task Send_ChatConnectedNotification(LobbyServerConnection connection)
 {
     //ChatNotification connectedMessage = new ChatNotification() { Text = $"{connection.PlayerInfo.GetHandle()} has connected", ConsoleMessageType = ConsoleMessageType.SystemMessage };
     //await LobbyServer.sendChatToAll(connectedMessage);
 }
 private async Task Send_RegisterGameClientResponse(LobbyServerConnection connection, RegisterGameClientRequest request)
 {
     Log.Print(LogType.Debug, "Sending Send_RegisterGameClientResponse");
     var response = RegisterGameClient(request);
     await connection.SendMessage(response);
 }