コード例 #1
0
        private async Task <SkillCategory> GetValidatedSkillCategory(MagusTtkSkillDefinitionDto skillDefinition, IReadOnlyRepository <SkillCategory> skillCategoryRepo, CancellationToken cancellationToken = default)
        {
            if (skillDefinition == null)
            {
                throw new ArgumentNullException(nameof(skillDefinition));
            }
            if (skillCategoryRepo == null)
            {
                throw new ArgumentNullException(nameof(skillCategoryRepo));
            }

            // ha nem lenne CategoryCode-ja
            if (string.IsNullOrWhiteSpace(skillDefinition.CategoryCode))
            {
                throw new ArgumentException($"CategoryCode of skill definition '{skillDefinition.Code}' is empty.");
            }

            // ha nem létező SkillCategory-ra hivatkozna a skill
            if (!await skillCategoryRepo.TryGetByCode(skillDefinition.CategoryCode, out var skillCategory, cancellationToken))
            {
                throw new ArgumentException($"Skill category not found with code '{skillDefinition.CategoryCode}' referenced by skill definition '{skillDefinition.Code}'.");
            }

            return(skillCategory);
        }
コード例 #2
0
        private async Task <string[]> GetValidatedSkillAbilityBase(MagusTtkSkillDefinitionDto skillDefinition, IReadOnlyRepository <AbilityDefinition> abilityRepo, CancellationToken cancellationToken = default)
        {
            if (skillDefinition == null)
            {
                throw new ArgumentNullException(nameof(skillDefinition));
            }
            if (abilityRepo == null)
            {
                throw new ArgumentNullException(nameof(abilityRepo));
            }

            // ha nem lenne egy ability-hez sem hozzárendelve a skill (elvileg nincsen TTK-ban ilyen)
            if ((skillDefinition.AbilityBase == null) || (skillDefinition.AbilityBase.Length == 0))
            {
                // és nincs megjelölve, hogy a skill specializációjától függne
                if (!skillDefinition.AbilityBaseDependsOnSpecialization)
                {
                    throw new ArgumentException($"AbilityBase of skill definition '{skillDefinition.Code}' is empty.");
                }
            }

            if (skillDefinition.AbilityBase != null)
            {
                foreach (var abilityCode in skillDefinition.AbilityBase)
                {
                    // ha nem létező ability-re hivatkozna a skill
                    if (!await abilityRepo.TryGetByCode(abilityCode, out var abilityDefinition, cancellationToken))
                    {
                        throw new ArgumentException($"Ability not found with code '{abilityCode}' referenced by skill definition '{skillDefinition.Code}'.");
                    }
                }
            }

            return(skillDefinition.AbilityBase);
        }
コード例 #3
0
        private string[] GetValidatedSkillSpecializations(MagusTtkSkillDefinitionDto skillDefinition)
        {
            if (skillDefinition == null)
            {
                throw new ArgumentNullException(nameof(skillDefinition));
            }

            if (skillDefinition.Specializations != null)
            {
                foreach (var spec in skillDefinition.Specializations)
                {
                    if (string.IsNullOrWhiteSpace(spec))
                    {
                        throw new ArgumentException($"Empty specialization referenced by skill definition '{skillDefinition.Code}'.");
                    }
                }
            }

            return(skillDefinition.Specializations);
        }