예제 #1
0
 public InitializePlayerNameOnSpawnEventListener(IEntityWorldObjectCreatedEventSubscribable subscriptionService,
                                                 [NotNull] INameQueryService nameQueryService,
                                                 [NotNull] ILog logger)
     : base(subscriptionService)
 {
     NameQueryService = nameQueryService ?? throw new ArgumentNullException(nameof(nameQueryService));
     Logger           = logger ?? throw new ArgumentNullException(nameof(logger));
 }
 /// <inheritdoc />
 public CharacterSelectionCharacterButtonDataInitOnEntryChangedEventListener(
     [NotNull] ICharacterSelectionEntryDataChangeEventSubscribable subscriptionService,
     [NotNull] INameQueryService nameQueryService,
     [KeyFilter(UnityUIRegisterationKey.CharacterSelection)][NotNull] IReadOnlyCollection <IUILabeledButton> characterButtons)
     : base(subscriptionService)
 {
     NameQueryService = nameQueryService ?? throw new ArgumentNullException(nameof(nameQueryService));
     CharacterButtons = characterButtons ?? throw new ArgumentNullException(nameof(characterButtons));
 }
예제 #3
0
 public InitializeLocalPlayerGuildNameEventListener(IReadonlyLocalPlayerDetails playerDetails,
                                                    IGuildStatusChangedEventSubscribable subscriptionService,
                                                    [NotNull][KeyFilter(UnityUIRegisterationKey.GuildList)] IUIText guildNameText,
                                                    [NotNull] INameQueryService nameQueryService)
     : base(subscriptionService, playerDetails)
 {
     GuildNameText    = guildNameText ?? throw new ArgumentNullException(nameof(guildNameText));
     NameQueryService = nameQueryService ?? throw new ArgumentNullException(nameof(nameQueryService));
 }
예제 #4
0
 public GuildMemberInviteRequestModelHandler([JetBrains.Annotations.NotNull] ISocialService socialService,
                                             [JetBrains.Annotations.NotNull] ILogger <GuildMemberInviteRequestModelHandler> logger,
                                             [JetBrains.Annotations.NotNull] INameQueryService nameQueryService,
                                             [JetBrains.Annotations.NotNull] IEntityGuidMappable <PendingGuildInviteData> pendingInviteData)
 {
     SocialService     = socialService ?? throw new ArgumentNullException(nameof(socialService));
     Logger            = logger ?? throw new ArgumentNullException(nameof(logger));
     NameQueryService  = nameQueryService ?? throw new ArgumentNullException(nameof(nameQueryService));
     PendingInviteData = pendingInviteData ?? throw new ArgumentNullException(nameof(pendingInviteData));
 }
예제 #5
0
 public PostGuildInviteToChatBoxEventListener(IGuildMemberInviteEventEventSubscribable subscriptionService,
                                              INameQueryService nameQueryService,
                                              [NotNull] IEntityNameQueryable entityNameQueryable,
                                              [NotNull] IChatTextMessageRecievedEventPublisher textChatPublisher)
     : base(subscriptionService)
 {
     NameQueryService    = nameQueryService;
     EntityNameQueryable = entityNameQueryable ?? throw new ArgumentNullException(nameof(entityNameQueryable));
     TextChatPublisher   = textChatPublisher ?? throw new ArgumentNullException(nameof(textChatPublisher));
 }
        /// <inheritdoc />
        public void AddService(TEntityEnumType type, INameQueryService service)
        {
            if (type == null)
            {
                throw new ArgumentNullException(nameof(type));
            }

            //TODO: If a resolved service goes offline we may want to change or update this??
            //Not threadsafe and we just replace.
            QueryServices[type] = service ?? throw new ArgumentNullException(nameof(service));
        }
 /// <inheritdoc />
 public LocalPlayerSpawnedPlayerNameNameplateUpdateEventListener([NotNull] ILocalPlayerSpawnedEventSubscribable subscriptionService,
                                                                 [NotNull][KeyFilter(UnityUIRegisterationKey.PlayerUnitFrame)] IUIText playerNameTextField,
                                                                 [NotNull] INameQueryService nameQueryable)
     : base(subscriptionService)
 {
     if (subscriptionService == null)
     {
         throw new ArgumentNullException(nameof(subscriptionService));
     }
     PlayerNameTextField = playerNameTextField ?? throw new ArgumentNullException(nameof(playerNameTextField));
     NameQueryable       = nameQueryable ?? throw new ArgumentNullException(nameof(nameQueryable));
 }
예제 #8
0
        public PopupGuildInviteWindowEventListener(IGuildMemberInviteEventEventSubscribable subscriptionService,
                                                   [KeyFilter(UnityUIRegisterationKey.InvitedToGuildWindow)][NotNull] IUIGuildInviteWindow guildInviteWindow,
                                                   INameQueryService nameQueryService,
                                                   [NotNull] IEntityNameQueryable entityNameQueryable,
                                                   [NotNull] IRemoteSocialHubServer socialHub)
            : base(subscriptionService)
        {
            GuildInviteWindow   = guildInviteWindow ?? throw new ArgumentNullException(nameof(guildInviteWindow));
            NameQueryService    = nameQueryService;
            EntityNameQueryable = entityNameQueryable ?? throw new ArgumentNullException(nameof(entityNameQueryable));
            SocialHub           = socialHub ?? throw new ArgumentNullException(nameof(socialHub));

            //Here we rig up the decline and accept invite buttons
            guildInviteWindow.AcceptInviteButton.AddOnClickListener(() => SocialHub.SendGuildInviteEventResponseAsync(new PendingGuildInviteHandleRequest(true)));
            guildInviteWindow.DeclineInviteButton.AddOnClickListener(() => SocialHub.SendGuildInviteEventResponseAsync(new PendingGuildInviteHandleRequest(false)));
        }
예제 #9
0
        public async Task <IActionResult> TryAddFriend([FromRoute(Name = "name")][JetBrains.Annotations.NotNull] string characterFriendName,
                                                       [FromServices][JetBrains.Annotations.NotNull] ICharacterFriendRepository friendsRepository,
                                                       [FromServices][JetBrains.Annotations.NotNull] ISocialServiceToGameServiceClient socialServiceClient,
                                                       [FromServices] INameQueryService nameQueryService)
        {
            if (friendsRepository == null)
            {
                throw new ArgumentNullException(nameof(friendsRepository));
            }
            if (socialServiceClient == null)
            {
                throw new ArgumentNullException(nameof(socialServiceClient));
            }
            if (string.IsNullOrEmpty(characterFriendName))
            {
                throw new ArgumentException("Value cannot be null or empty.", nameof(characterFriendName));
            }

            //Find the character
            CharacterSessionDataResponse response = await socialServiceClient.GetCharacterSessionDataByAccount(ClaimsReader.GetAccountIdInt(User));

            if (response.ResultCode == CharacterSessionDataResponseCode.NoSessionAvailable)
            {
                return(BadRequest());
            }

            var nameReverseQueryResponse = await nameQueryService.RetrievePlayerGuidAsync(characterFriendName);

            //Handle known failure cases first.
            switch (nameReverseQueryResponse.ResultCode)
            {
            case NameQueryResponseCode.UnknownIdError:
                return(BuildFailedResponseModel(CharacterFriendAddResponseCode.CharacterNotFound));

            case NameQueryResponseCode.GeneralServerError:
                return(BuildFailedResponseModel(CharacterFriendAddResponseCode.GeneralServerError));
            }

            //If the player is trying to add himself, just say not found
            if (nameReverseQueryResponse.Result.EntityId == response.CharacterId)
            {
                return(BuildFailedResponseModel(CharacterFriendAddResponseCode.CharacterNotFound));
            }

            //Ok, reverse namequery is a success
            //now we must check some stuff

            //Already friends check
            if (await friendsRepository.IsFriendshipPresentAsync(response.CharacterId, nameReverseQueryResponse.Result.EntityId))
            {
                return(BuildFailedResponseModel(CharacterFriendAddResponseCode.AlreadyFriends));
            }

            if (await friendsRepository.TryCreateAsync(new CharacterFriendModel(response.CharacterId, nameReverseQueryResponse.Result.EntityId)))
            {
                //This is a success, let's tell them about who they added.
                return(BuildSuccessfulResponseModel(new CharacterFriendAddResponseModel(nameReverseQueryResponse.Result)));
            }
            else
            {
                return(BuildFailedResponseModel(CharacterFriendAddResponseCode.GeneralServerError));
            }
        }
 /// <inheritdoc />
 public CachedNameQueryServiceDecorator(INameQueryService nameQueryService)
 {
     NameQueryService = nameQueryService ?? throw new ArgumentNullException(nameof(nameQueryService));
 }
예제 #11
0
        /// <summary>
        /// Queries for a <see cref="EntityNameQueryResponse"/> from the provided <see cref="guid"/>.
        /// </summary>
        /// <param name="service">The name query service.</param>
        /// <param name="guid">The entity guid.</param>
        /// <returns>A query response.</returns>
        public static Task <EntityNameQueryResponse> QueryEntityNameAsync <TObjectGuidType>(this INameQueryService service, TObjectGuidType guid, CancellationToken token = default)
            where TObjectGuidType : BaseGuid
        {
            if (service == null)
            {
                throw new ArgumentNullException(nameof(service));
            }

            //We just simply forward this with the raw value.
            return(service.QueryEntityNameAsync(guid.RawValue, token));
        }
예제 #12
0
 /// <inheritdoc />
 public CacheableEntityNameQueryable([NotNull] INameQueryService nameServiceQueryable)
 {
     NameServiceQueryable = nameServiceQueryable ?? throw new ArgumentNullException(nameof(nameServiceQueryable));
 }