Holding GenerateHolding(INameGenerator generator, string provinceId) { Province province = provinces[provinceId]; Array holdingTypes = Enum.GetValues(typeof(HoldingType)); HoldingType holdingType = (HoldingType)holdingTypes.GetValue(random.Next(1, holdingTypes.Length)); string name = generator.GenerateName(); Holding holding = new Holding { Id = $"h_{name.Replace(" ", "_").ToLower()}", ProvinceId = province.Id, Name = name, Description = $"The {name} {holdingType.ToString().ToLower()}", // TODO: Better description Type = holdingType }; // TODO: Make sure this never happens and then remove this workaround while (holdings.Values.Any(h => h.Id == holding.Id)) { return(GenerateHolding(generator, province.Id)); } return(holding); }
public async Task <IActionResult> Edit(int id, [Bind("Id,TypeName")] HoldingType holdingType) { if (id != holdingType.Id) { return(NotFound()); } bool IsHoldingTypeExist = _context.HoldingType.Any (x => x.TypeName == holdingType.TypeName && x.Id != holdingType.Id); if (IsHoldingTypeExist == true) { ModelState.AddModelError("TypeName", "Holding Type already exists"); } if (ModelState.IsValid) { try { _context.Update(holdingType); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!HoldingTypeExists(holdingType.Id)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } return(View(holdingType)); }
/// <summary> /// Adds the specified holding type in a province. /// </summary> /// <param name="provinceId">Province identifier.</param> /// <param name="holdingType">Holding type.</param> public void AddHolding(string provinceId, HoldingType holdingType) { Holding emptySlot = holdings.Values.FirstOrDefault(h => h.ProvinceId == provinceId && h.Type == HoldingType.Empty); if (emptySlot != null) { emptySlot.Type = holdingType; } }
/// <summary> /// Builds the specified holding type in a province. /// </summary> /// <param name="provinceId">Province identifier.</param> /// <param name="holdingType">Holding type.</param> public void BuildHolding(string provinceId, HoldingType holdingType) { Province province = GetProvince(provinceId); if (ProvinceHasEmptyHoldingSlots(provinceId)) { world.AddHolding(provinceId, holdingType); GetFaction(province.FactionId).Wealth -= GetWorld().HoldingsPrice; } }
public async Task <IActionResult> Create([Bind("Id,TypeName")] HoldingType holdingType) { bool IsHoldingTypeExist = _context.HoldingType.Any (x => x.TypeName == holdingType.TypeName && x.Id != holdingType.Id); if (IsHoldingTypeExist == true) { ModelState.AddModelError("TypeName", "Holding Type already exists"); } if (ModelState.IsValid) { _context.Add(holdingType); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } return(View(holdingType)); }
void AiBuild(string factionId) { Faction faction = GetFaction(factionId); // TODO: Reduce all this duplicated code while (faction.Wealth >= GetWorld().HoldingsPrice) { List <Province> validSovereignProvinces = GetFactionProvinces(factionId).Where(r => r.State == ProvinceState.Sovereign && ProvinceHasEmptyHoldingSlots(r.Id)).ToList(); if (validSovereignProvinces.Count < 1) { break; } HoldingType type = Enum.GetValues(typeof(HoldingType)).Cast <HoldingType>().Where(x => x != HoldingType.Empty).GetRandomElement(); BuildHolding(validSovereignProvinces.GetRandomElement().Id, type); } while (faction.Wealth >= GetWorld().HoldingsPrice) { List <Province> validOccupiedProvinces = GetFactionProvinces(factionId).Where(r => r.State == ProvinceState.Occupied && ProvinceHasEmptyHoldingSlots(r.Id)).ToList(); if (validOccupiedProvinces.Count < 1) { break; } HoldingType type = Enum.GetValues(typeof(HoldingType)).Cast <HoldingType>().Where(x => x != HoldingType.Empty).GetRandomElement(); BuildHolding(validOccupiedProvinces.GetRandomElement().Id, type); } }