Пример #1
0
        public void Apply(PlayerLevelUpPossibilitiesChosen domainEvent)
        {
            var freeSkillPoints = FreeSkillPoints.Append(domainEvent.NewFreeSkillPoint);

            FreeSkillPoints       = freeSkillPoints;
            ChoosableSkillPoints -= 1;
        }
Пример #2
0
        public DomainResult ChooseSkill(SkillReadModel newSkill)
        {
            if (!FreeSkillPoints.Any())
            {
                return(DomainResult.Error(new NoLevelUpsAvailable()));
            }
            if (CurrentSkills.Any(s => s.SkillId == newSkill.SkillId))
            {
                return(DomainResult.Error(
                           new CanNotPickSkillTwice(CurrentSkills.Select(s => s.SkillId))));
            }

            foreach (var freeSkillPoint in FreeSkillPoints)
            {
                if (!HasPlayerFreeSkillForChosenSkill(newSkill, freeSkillPoint))
                {
                    return(DomainResult.Error(new SkillNotPickable(freeSkillPoint)));
                }
            }

            var newFreeSkills = GetMinimalSkillToRemove(FreeSkillPoints, newSkill);

            var domainEvent = new SkillChosen(PlayerId, newSkill, newFreeSkills);

            Apply(domainEvent);
            return(DomainResult.Ok(domainEvent));
        }
Пример #3
0
 public void Handle(PlayerLevelUpPossibilitiesChosen domainEvent)
 {
     FreeSkillPoints  = FreeSkillPoints.Append(domainEvent.NewFreeSkillPoint);
     ChoosableSkills -= 1;
 }