public bool CanBuildUnit(IHexCell location, IUnitTemplate template, ICivilization owner) { var canPlace = UnitPositionCanon.CanPlaceUnitTemplateAtLocation(template, location, owner); var hasForeignUnits = DoesCellHaveUnitsForeignTo(location, owner);; return(canPlace && !hasForeignUnits); }
public bool IsTemplateValidForCity(IUnitTemplate template, ICity city) { var cityLocation = CityLocationCanon.GetOwnerOfPossession(city); var cityOwner = CityPossessionCanon.GetOwnerOfPossession(city); if (!UnitPositionCanon.CanPlaceUnitTemplateAtLocation(template, cityLocation, cityOwner)) { return(false); } foreach (var resource in template.RequiredResources) { if (FreeResourcesLogic.GetFreeCopiesOfResourceForCiv(resource, cityOwner) <= 0) { return(false); } } return(true); }