Ejemplo n.º 1
0
        public static string GetUrlAutoResFIelds(Village vill, BuildingTask task)
        {
            List <Models.ResourceModels.Building> buildings; //potential buildings to be upgraded next :)

            switch (task.ResourceType)
            {
            case ResTypeEnum.AllResources:
                buildings = vill.Build.Buildings.Where(x => x.Type == Classificator.BuildingEnum.Woodcutter || x.Type == Classificator.BuildingEnum.ClayPit || x.Type == Classificator.BuildingEnum.IronMine || x.Type == Classificator.BuildingEnum.Cropland).ToList();
                break;

            case ResTypeEnum.ExcludeCrop:
                buildings = vill.Build.Buildings.Where(x => x.Type == Classificator.BuildingEnum.Woodcutter || x.Type == Classificator.BuildingEnum.ClayPit || x.Type == Classificator.BuildingEnum.IronMine).ToList();
                break;

            case ResTypeEnum.OnlyCrop:
                buildings = vill.Build.Buildings.Where(x => x.Type == Classificator.BuildingEnum.Cropland).ToList();
                break;

            default:
                return(null);
            }
            buildings = buildings.Where(x => x.Level < task.Level).ToList(); //only select res fields that are below desired level
            foreach (var b in buildings.ToList())
            {
                if (b.Level == task.Level - 1 && b.UnderConstruction)
                {
                    buildings.Remove(b);                                                   //its already being upgraded to selected lvl
                }
            }

            Models.ResourceModels.Building buildingToUpgrade = null;
            switch (task.BuildingStrategy)
            {
            case BuildingStrategyEnum.BasedOnLevel:
                buildingToUpgrade = FindLowestLevelBuilding(buildings);
                break;

            case BuildingStrategyEnum.BasedOnProduction:
                buildingToUpgrade = GetLowestProduction(buildings, vill);
                break;

            case BuildingStrategyEnum.BasedOnRes:
                buildingToUpgrade = GetLowestRes(buildings, vill);
                break;
            }
            if (buildingToUpgrade == null)
            {
                vill.Build.Tasks.Remove(task);
                return(null);
            }
            task.BuildingId = buildingToUpgrade.Id;
            task.Building   = buildingToUpgrade.Type;

            return(buildingToUpgrade.Id.ToString());
        }
Ejemplo n.º 2
0
 private static Models.ResourceModels.Building FindLowestLevelBuilding(List <Models.ResourceModels.Building> buildings)
 {
     if (buildings.Count == 0)
     {
         return(null);
     }
     Models.ResourceModels.Building lowestBuilding = buildings[0];
     for (int i = 1; i < buildings.Count; i++)
     {
         if (lowestBuilding.Level > buildings[i].Level)
         {
             lowestBuilding = buildings[i];
         }
     }
     return(lowestBuilding);
 }