public bool IsMetBy(IProductionProject project, ICity city) { switch (Target) { case TargetType.Project: return(IsConditionMetByProject(project)); default: return(false); } }
/// <inheritdoc/> public int GetGoldCostToHurryProject(ICity city, IProductionProject project) { if (city == null) { throw new ArgumentNullException("city"); } else if (project == null) { throw new ArgumentNullException("project"); } return(Mathf.FloorToInt((project.ProductionToComplete - project.Progress) * Config.HurryCostPerProduction)); }
private ICity BuildCity(IProductionProject activeProject) { var mockCity = new Mock <ICity>(); mockCity.SetupAllProperties(); var newCity = mockCity.Object; newCity.ActiveProject = activeProject; AllCities.Add(newCity); return(newCity); }
private ICity BuildCity(IProductionProject project, params IBuilding[] buildings) { var mockCity = new Mock <ICity>(); mockCity.Setup(city => city.ActiveProject).Returns(project); var newCity = mockCity.Object; MockBuildingPossessionCanon.Setup(canon => canon.GetPossessionsOfOwner(newCity)).Returns(buildings); AllCities.Add(newCity); return(newCity); }
private bool IsConditionMetByProject(IProductionProject project) { if (ProjectRestriction == ProjectRestrictionCategory.Unit && project.UnitToConstruct != null) { return(IsConditionMetByUnit(project.UnitToConstruct)); } else if (ProjectRestriction == ProjectRestrictionCategory.Building && project.BuildingToConstruct != null) { return(IsConditionMetByBuilding(project.BuildingToConstruct)); } else { return(false); } }
public bool DoesModifierApply(IProductionProject project, ICity city) { if (Conditions == null || Conditions.Count == 0) { return(true); } foreach (var condition in Conditions) { if (JoinedTogetherBy == JoinType.And && !condition.IsMetBy(project, city)) { return(false); } else if (JoinedTogetherBy == JoinType.Or && condition.IsMetBy(project, city)) { return(true); } } return(JoinedTogetherBy == JoinType.And ? true : false); }
private ICity BuildCity( IHexCell location, ICivilization owner, IProductionProject activeProject, int population ) { var mockCity = new Mock <ICity>(); mockCity.Setup(city => city.ActiveProject).Returns(activeProject); mockCity.Setup(city => city.Population).Returns(population); var newCity = mockCity.Object; MockCityLocationCanon.Setup(canon => canon.GetPossessionsOfOwner(location)) .Returns(new List <ICity>() { newCity }); MockCityPossessionCanon.Setup(canon => canon.GetOwnerOfPossession(newCity)).Returns(owner); return(newCity); }
/// <inheritdoc/> public int GetProductionProgressPerTurnOnProject(ICity city, IProductionProject project) { if (city == null) { throw new ArgumentNullException("city"); } else if (project == null) { throw new ArgumentNullException("project"); } float productionModifier = 0f; foreach (var building in BuildingPossessionCanon.GetPossessionsOfOwner(city)) { if (building.Template.ProductionModifier.DoesModifierApply(project, city)) { productionModifier += building.Template.ProductionModifier.Value; } } var cityOwner = CityPossessionCanon.GetOwnerOfPossession(city); foreach (var policyBonuses in SocialPolicyCanon.GetPolicyBonusesForCiv(cityOwner)) { if (policyBonuses.ProductionModifier.DoesModifierApply(project, city)) { productionModifier += policyBonuses.ProductionModifier.Value; } } float totalProduction = GenerationLogic.GetTotalYieldForCity( city, new YieldSummary(production: productionModifier) )[YieldType.Production]; return(Mathf.RoundToInt(totalProduction)); }
public void MakeProductionRequest( IProductionProject project, ICity requestingCity ) { if (project.UnitToConstruct != null) { project.Execute(requestingCity); } else if (project.BuildingToConstruct != null && project.BuildingToConstruct.Type == BuildingType.Normal) { project.Execute(requestingCity); } else if (project.BuildingToConstruct != null) { ProductionRequestsByTemplate.AddElementToList( project.BuildingToConstruct, new ProductionRequest() { Project = project, RequestingCity = requestingCity, } ); } }