示例#1
0
        /// <inheritdoc />
        public void PerkLevelUp(IPerk perk)
        {
            if (perk is null)
            {
                throw new ArgumentNullException(nameof(perk));
            }

            var activePerkIsValid = Perks.Contains(perk);

            if (!activePerkIsValid)
            {
                throw new InvalidOperationException("Указанный перк не является активным для текущего актёра.");
            }

            var nextLevel = PerkHelper.GetNextLevel(perk.Scheme, perk.CurrentLevel);

            perk.CurrentLevel = nextLevel;

            UpdatePerks();

            DoPerkArchieved(perk);
        }