Beispiel #1
0
        //[AuthorizeJwt(GuardianApplicationRole.ZoneServer)] //TODO: Eventually we'll need to auth these zoneservers.
        public async Task <IActionResult> UpdatePlayerAvatar([FromBody][NotNull] ZoneServerAvatarPedestalInteractionCharacterRequest requestModel,
                                                             [FromServices][NotNull] IGameObjectBehaviourDataServiceClient <AvatarPedestalInstanceModel> avatarPedestalModel,
                                                             [FromServices][NotNull] ICharacterAppearanceRepository characterAppearanceRepository)
        {
            if (avatarPedestalModel == null)
            {
                throw new ArgumentNullException(nameof(avatarPedestalModel));
            }
            if (characterAppearanceRepository == null)
            {
                throw new ArgumentNullException(nameof(characterAppearanceRepository));
            }

            //If this fails we have problems that can be mitigated.
            CharacterAppearanceModel appearanceModel = await characterAppearanceRepository.RetrieveAsync(requestModel.CharacterGuid.EntityId);

            try
            {
                var behaviourInstanceResponse = await avatarPedestalModel.GetBehaviourInstance(requestModel.AvatarPedestalId);

                if (behaviourInstanceResponse.isSuccessful)
                {
                    //we can properly change.
                    appearanceModel.AvatarModelId = behaviourInstanceResponse.Result.AvatarModelId;
                    await characterAppearanceRepository.UpdateAsync(requestModel.CharacterGuid.EntityId, appearanceModel);

                    //return BadRequest($"Cannot query data for Avatar Pedestal: {requestModel.AvatarPedestalId} Reason: {behaviourInstanceResponse.ResultCode.ToString()}");
                }
            }
            catch (Exception e)
            {
                if (Logger.IsEnabled(LogLevel.Error))
                {
                    Logger.LogError($"Encountered exception: {e.Message} in {nameof(UpdatePlayerAvatar)}.\n\nStack: {e.StackTrace}");
                }
            }

            //No matter what we should return the current.
            return(Json(new AvatarPedestalChangeResponse((int)appearanceModel.AvatarModelId)));
        }
Beispiel #2
0
 public async Task <AvatarPedestalChangeResponse> UpdatePlayerAvatar(ZoneServerAvatarPedestalInteractionCharacterRequest request)
 {
     return(await(await GetService().ConfigureAwaitFalse()).UpdatePlayerAvatar(request).ConfigureAwaitFalse());
 }