public City Upgrade(City city, BuildingUpgradeCost upgradeCost) { if (upgradeCost == null) { city.Warehouse.MaxSilverStorageCapacity = (int)Math.Ceiling(city.Warehouse.MaxSilverStorageCapacity * 1.5); city.Warehouse.MaxStoneStorageCapacity = (int)Math.Ceiling(city.Warehouse.MaxStoneStorageCapacity * 1.5); city.Warehouse.MaxWoodStorageCapacity = (int)Math.Ceiling(city.Warehouse.MaxWoodStorageCapacity * 1.5); city.Warehouse.UpgradeCost = upgradeCost; city.Warehouse.Stage += 1; city.Warehouse.BuildingCostId = null; } else if (upgradeCost.BuildingStage != city.Warehouse.Stage) { throw new InvalidBuildingStageModificationException(); } else { city.Warehouse.MaxSilverStorageCapacity = (int)Math.Ceiling(city.Warehouse.MaxSilverStorageCapacity * 1.5); city.Warehouse.MaxStoneStorageCapacity = (int)Math.Ceiling(city.Warehouse.MaxStoneStorageCapacity * 1.5); city.Warehouse.MaxWoodStorageCapacity = (int)Math.Ceiling(city.Warehouse.MaxWoodStorageCapacity * 1.5); city.Warehouse.UpgradeCost = upgradeCost; city.Warehouse.Stage += 1; city.Warehouse.BuildingCostId = upgradeCost.Id; } return(city); }
public static BuildingUpgradeCost ModifyValues(this BuildingUpgradeCost previousCost, UpgradeCostCreationRequest newCost) { previousCost.UpgradeCost.Wood = newCost.UpgradeCost.Wood; previousCost.UpgradeCost.Silver = newCost.UpgradeCost.Silver; previousCost.UpgradeCost.Stone = newCost.UpgradeCost.Stone; previousCost.UpgradeCost.Population = newCost.UpgradeCost.Population; // previousCost.UpgradeTime = TimeSpan.FromSeconds(newCost.UpgradeTimeInSeconds); return(previousCost); }
public City Downgrade(City city, BuildingUpgradeCost upgradeCost) { if (upgradeCost.BuildingStage != city.Barrack.Stage) { throw new InvalidBuildingStageModificationException(); } city.Barrack.UpgradeCost = upgradeCost; city.Barrack.Stage -= 1; city.Barrack.BuildingCostId = upgradeCost.Id; return(city); }
public City Downgrade(City city, BuildingUpgradeCost upgradeCost) { if (upgradeCost.BuildingStage != city.StoneProduction.Stage) { throw new InvalidBuildingStageModificationException(); } city.StoneProduction.ProductionAmount = (int)Math.Ceiling(city.StoneProduction.ProductionAmount / 1.2); city.StoneProduction.UpgradeCost = upgradeCost; city.StoneProduction.Stage -= 1; city.StoneProduction.BuildingCostId = upgradeCost.Id; return(city); }
public City Downgrade(City city, BuildingUpgradeCost upgradeCost) { if (upgradeCost.BuildingStage != city.Farm.Stage) { throw new InvalidBuildingStageModificationException(); } city.Farm.MaxPopulation -= 200; city.Farm.UpgradeCost = upgradeCost; city.Farm.Stage -= 1; city.Farm.BuildingCostId = upgradeCost.Id; return(city); }
public City Downgrade(City city, BuildingUpgradeCost upgradeCost) { if (upgradeCost.BuildingStage != city.CityHall.Stage) { throw new InvalidBuildingStageModificationException(); } city.CityHall.UpgradeTimeReductionPercent -= 5; city.CityHall.UpgradeCost = upgradeCost; city.CityHall.Stage -= 1; city.CityHall.BuildingCostId = upgradeCost.Id; return(city); }
public City Downgrade(City city, BuildingUpgradeCost upgradeCost) { if (upgradeCost.BuildingStage != city.CityWall.Stage) { throw new InvalidBuildingStageModificationException(); } city.CityWall.DefensePoints -= 200; city.CityWall.UpgradeCost = upgradeCost; city.CityWall.Stage -= 1; city.CityWall.BuildingCostId = upgradeCost.Id; return(city); }
public City Upgrade(City city, BuildingUpgradeCost upgradeCost) { if (upgradeCost == null) { city.Barrack.UpgradeCost = upgradeCost; city.Barrack.Stage += 1; city.Barrack.BuildingCostId = null; } else if (upgradeCost.BuildingStage - 2 != city.Barrack.Stage) { throw new InvalidBuildingStageModificationException(); } else { city.Barrack.UpgradeCost = upgradeCost; city.Barrack.Stage += 1; city.Barrack.BuildingCostId = upgradeCost.Id; } return(city); }
public City Upgrade(City city, BuildingUpgradeCost upgradeCost) { if (upgradeCost == null) { city.CityWall.DefensePoints += 200; city.CityWall.UpgradeCost = upgradeCost; city.CityWall.Stage += 1; city.CityWall.BuildingCostId = null; } else if (upgradeCost.BuildingStage != city.CityWall.Stage) { throw new InvalidBuildingStageModificationException(); } else { city.CityWall.DefensePoints += 200; city.CityWall.UpgradeCost = upgradeCost; city.CityWall.Stage += 1; city.CityWall.BuildingCostId = upgradeCost.Id; } return(city); }
public City Upgrade(City city, BuildingUpgradeCost upgradeCost) { if (upgradeCost == null) { city.StoneProduction.ProductionAmount = (int)Math.Ceiling(city.StoneProduction.ProductionAmount * 1.2); city.StoneProduction.UpgradeCost = upgradeCost; city.StoneProduction.Stage += 1; city.StoneProduction.BuildingCostId = null; } else if (upgradeCost.BuildingStage != city.StoneProduction.Stage) { throw new InvalidBuildingStageModificationException(); } else { city.StoneProduction.ProductionAmount = (int)Math.Ceiling(city.StoneProduction.ProductionAmount * 1.2); city.StoneProduction.UpgradeCost = upgradeCost; city.StoneProduction.Stage += 1; city.StoneProduction.BuildingCostId = upgradeCost.Id; } return(city); }
public City Upgrade(City city, BuildingUpgradeCost upgradeCost) { if (upgradeCost == null) { city.Farm.MaxPopulation += 200; city.Farm.UpgradeCost = upgradeCost; city.Farm.Stage += 1; city.Farm.BuildingCostId = null; } else if (upgradeCost.BuildingStage != city.Farm.Stage) { throw new InvalidBuildingStageModificationException(); } else { city.Farm.MaxPopulation += 200; city.Farm.UpgradeCost = upgradeCost; city.Farm.Stage += 1; city.Farm.BuildingCostId = upgradeCost.Id; } return(city); }
public City Upgrade(City city, BuildingUpgradeCost upgradeCost) { if (upgradeCost == null) { city.CityHall.UpgradeTimeReductionPercent += 5; city.CityHall.UpgradeCost = upgradeCost; city.CityHall.Stage += 1; city.CityHall.BuildingCostId = null; } else if (upgradeCost.BuildingStage != city.CityHall.Stage) { throw new InvalidBuildingStageModificationException(); } else { city.CityHall.UpgradeTimeReductionPercent += 5; city.CityHall.UpgradeCost = upgradeCost; city.CityHall.Stage += 1; city.CityHall.BuildingCostId = upgradeCost.Id; } return(city); }
public async Task CreateAsync(BuildingUpgradeCost upgradeCost) { await _db.BuildingUpgradeCosts.AddAsync(upgradeCost); var previousMaxStage = await _db.MaxBuildingStages .FirstOrDefaultAsync(cost => cost.BuildingName.Equals(upgradeCost.BuildingName)); if (previousMaxStage != null) { previousMaxStage.MaxStage += 1; switch (upgradeCost.BuildingName) { case "CityWall": var cityhalls = await _db.CityHalls .Where(x => x.BuildingCostId == null) .ToListAsync(); foreach (var cityHall in cityhalls) { cityHall.BuildingCostId = upgradeCost.Id; cityHall.UpgradeCost = upgradeCost; } break; case "Lumber": var lumbers = await _db.ResourceProductions .Where(x => x.BuildingCostId == null && x.BuildingName.Equals("Lumber")) .ToListAsync(); foreach (var lumber in lumbers) { lumber.BuildingCostId = upgradeCost.Id; lumber.UpgradeCost = upgradeCost; } break; case "Farm": var farms = await _db.Farms .Where(x => x.BuildingCostId == null) .ToListAsync(); foreach (var farm in farms) { farm.BuildingCostId = upgradeCost.Id; farm.UpgradeCost = upgradeCost; } break; case "Barrack": var barracks = await _db.Barracks .Where(x => x.BuildingCostId == null) .ToListAsync(); foreach (var barrack in barracks) { barrack.BuildingCostId = upgradeCost.Id; barrack.UpgradeCost = upgradeCost; } break; case "Warehouse": var warehouses = await _db.Warehouses .Where(x => x.BuildingCostId == null) .ToListAsync(); foreach (var warehouse in warehouses) { warehouse.BuildingCostId = upgradeCost.Id; warehouse.UpgradeCost = upgradeCost; } break; case "CityHall": var cityHalls = await _db.CityHalls .Where(x => x.BuildingCostId == null) .ToListAsync(); foreach (var cityHall in cityHalls) { cityHall.BuildingCostId = upgradeCost.Id; cityHall.UpgradeCost = upgradeCost; } break; case "SilverMine": var silverMines = await _db.ResourceProductions .Where(x => x.BuildingCostId == null && x.BuildingName.Equals("SilverMine")) .ToListAsync(); foreach (var silverMine in silverMines) { silverMine.BuildingCostId = upgradeCost.Id; silverMine.UpgradeCost = upgradeCost; } break; case "StoneMine": var stoneMines = await _db.ResourceProductions .Where(x => x.BuildingCostId == null && x.BuildingName.Equals("StoneMine")) .ToListAsync(); foreach (var stoneMine in stoneMines) { stoneMine.BuildingCostId = upgradeCost.Id; stoneMine.UpgradeCost = upgradeCost; } break; default: break; } } else { previousMaxStage = new MaxBuildingStage { BuildingName = upgradeCost.BuildingName, MaxStage = 1 }; await _db.MaxBuildingStages.AddAsync(previousMaxStage); } }
private async Task <City> CreateCity(ApplicationUser user) { //Get the upgrade costs which will be used to create the buildings BuildingUpgradeCost warehouseCost = await _unitOfWork.UpgradeCosts.FindUpgradeCost("Warehouse", 1); BuildingUpgradeCost silverMineCost = await _unitOfWork.UpgradeCosts.FindUpgradeCost("SilverMine", 1); BuildingUpgradeCost stoneMineCost = await _unitOfWork.UpgradeCosts.FindUpgradeCost("StoneMine", 1); BuildingUpgradeCost lumberCost = await _unitOfWork.UpgradeCosts.FindUpgradeCost("Lumber", 1); BuildingUpgradeCost farmCost = await _unitOfWork.UpgradeCosts.FindUpgradeCost("Farm", 1); BuildingUpgradeCost cityWallCost = await _unitOfWork.UpgradeCosts.FindUpgradeCost("CityWall", 1); BuildingUpgradeCost cityhallCost = await _unitOfWork.UpgradeCosts.FindUpgradeCost("CityHall", 1); BuildingUpgradeCost barrackCost = await _unitOfWork.UpgradeCosts.FindUpgradeCost("Barrack", 1); //Create the buildings Warehouse warehouse = Warehouse.Create(warehouseCost); ResourceProduction silverMine = ResourceProduction.CreateResourceProductionBuilding(silverMineCost); silverMine.ResourceType = ResourceType.silver; ResourceProduction stoneMine = ResourceProduction.CreateResourceProductionBuilding(stoneMineCost); stoneMine.ResourceType = ResourceType.stone; ResourceProduction lumber = ResourceProduction.CreateResourceProductionBuilding(lumberCost); lumber.ResourceType = ResourceType.wood; Farm farm = Farm.Create(farmCost); CityWall cityWall = CityWall.Create(cityWallCost); CityHall cityHall = CityHall.Create(cityhallCost); Barrack barrack = Barrack.Create(barrackCost); //Add the buildings to the city City city = new City { CityName = $"{user.UserName}'s city", Resources = new Resources { Wood = 1000, Stone = 1000, Silver = 1000, Population = 100 }, UserId = user.Id, User = user, SilverProductionId = silverMine.Id, SilverProduction = silverMine, StoneProductionId = stoneMine.Id, StoneProduction = stoneMine, WoodProductionId = lumber.Id, WoodProduction = lumber, BarrackId = barrack.Id, Barrack = barrack, FarmId = farm.Id, Farm = farm, CityWallId = cityWall.Id, CityWall = cityWall, CityHallId = cityHall.Id, CityHall = cityHall, WarehouseId = warehouse.Id, Warehouse = warehouse }; return(city); }