示例#1
0
        public async Task HandleAsync(
            ISession session,
            IClientPacket clientPacket)
        {
            string  ssoTicket = clientPacket.ReadString();
            IPlayer player    = await _playerController.GetPlayerBySsoAsync(ssoTicket);

            if (player != null)
            {
                session.Player = player;
                IPlayerSettings playerSettings =
                    await _playerController.GetPlayerSettingsByIdAsync(player.Id);

                if (playerSettings != null)
                {
                    session.PlayerSettings = playerSettings;
                }
                else
                {
                    await _playerController.AddPlayerSettingsAsync(player.Id);

                    session.PlayerSettings =
                        await _playerController.GetPlayerSettingsByIdAsync(player.Id);
                }

                await session.WriteAndFlushAsync(new AuthenticationOkComposer());

                await session.WriteAndFlushAsync(new HomeRoomComposer(1));

                await session.WriteAndFlushAsync(new FavouriteRoomsComposer());

                await session.WriteAndFlushAsync(new FigureSetIdsComposer());

                await session.WriteAndFlushAsync(new UserRightsComposer(session.Player.Rank));

                await session.WriteAndFlushAsync(new AvailabilityStatusComposer());

                await session.WriteAndFlushAsync(new BuildersClubMembershipComposer());

                await session.WriteAndFlushAsync(new CfhTopicsInitComposer());

                await session.WriteAndFlushAsync(new BadgeDefinitionsComposer());

                await session.WriteAndFlushAsync(new PlayerSettingsComposer());
            }
        }