Exemplo n.º 1
0
        public async Task <Unit> Handle(ShowMySkillCommand command, CancellationToken cancellationToken)
        {
            var playerId = command.PlayerId;
            var player   = await _playerDomainService.Get(playerId);

            if (player == null)
            {
                return(Unit.Value);
            }

            var skillModels = new List <SkillModel>();

            var playerSkills = await _playerSkillDomainService.GetAll(player.Id);

            var baseSkills = await _skillDomainService.GetAllBaseSkills();

            foreach (var baseSkill in baseSkills)
            {
                if (playerSkills.Count(x => x.SkillId == baseSkill.Id) == 0)
                {
                    var playerSkill = new PlayerSkillEntity
                    {
                        Exp       = 0,
                        Level     = 0,
                        PlayerId  = playerId,
                        SkillId   = baseSkill.Id,
                        SkillName = baseSkill.Name
                    };
                    await _playerSkillDomainService.Add(playerSkill);

                    playerSkills.Add(playerSkill);
                }
            }


            var ids = playerSkills?.Select(x => x.SkillId);

            var skills = (await _skillDomainService.GetAll()).Where(x => ids.Contains(x.Id));

            foreach (var playerSkill in playerSkills)
            {
                var skill = skills.FirstOrDefault(x => x.Id == playerSkill.SkillId);
                if (skill != null)
                {
                    var skillModel = _mapper.Map <SkillModel>(skill);
                    skillModel.ObjectSkillId = playerSkill.Id;
                    skillModel.Level         = playerSkill.Level;
                    skillModel.Exp           = playerSkill.Exp;
                    skillModels.Add(skillModel);
                }
            }

            await _mudProvider.ShowMySkill(playerId, skillModels);

            return(Unit.Value);
        }