public IActionResult LoadoutInfo(Guid characterId, Guid loadoutId)
        {
            var character = _repository.GetCharacter(characterId);

            if (character == null)
            {
                return(NotFound());
            }

            if (!IsCharacterEditAuthorised(character))
            {
                return(Unauthorized());
            }

            var loadout = character.Loadouts.FirstOrDefault(l => l.Id == loadoutId);

            if (loadout == null)
            {
                return(NotFound());
            }

            var viewModel = _viewModelFactory.CreateNew <LoadoutInfoViewModel>(
                ArmourTypeInfoFactory.ArmourTypeInfo(character),
                ArmourMaterialInfoFactory.ArmourMaterialInfo()
                );

            return(Ok(viewModel));
        }
예제 #2
0
        public IEnumerable <string> Validate()
        {
            var startingXp = StartingXpGenerator.GetLoadoutStartingXp(_rank, _attribute, _merits,
                                                                      _extraMeritPoints, _loadout.IsMain);

            if (RemainingXp(startingXp) < 0)
            {
                yield return("Remaining XP less than zero.");
            }

            // armour type prerequisites
            var armourTypePrereqs = ArmourTypeInfoFactory.GetPrerequisites(_loadout.Armour.ArmourType);

            foreach (var armourTypePrereq in armourTypePrereqs)
            {
                if (!armourTypePrereq.Func(new Character
                {
                    Skill = _skill,
                    Attribute = _attribute
                }))
                {
                    yield return($"You do not meet the prerequisite {armourTypePrereq.Name} for {ArmourTypeInfoFactory.GetName(_loadout.Armour.ArmourType)}.");
                }
            }

            // allowed armour types for materials
            var allowedArmourTypes = ArmourMaterialInfoFactory.GetAllowedArmourTypes(_loadout.Armour.ArmourMaterial);

            if (!allowedArmourTypes.Contains(_loadout.Armour.ArmourType))
            {
                yield return
                    ($"Armour type {_loadout.Armour.ArmourType} is not allowed for armour material {_loadout.Armour.ArmourMaterial}.");
            }
        }