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)); }
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}."); } }