// Отстреляться по вражеской армии public void FireTo(Army targetArmy) { // Определить сколько у нашего меха пушек и какого калибра Design designAttacker = GetDesign(); if (designAttacker.guns < 1) { return; } // Нечем стрелять, нет пушек // Огонь из всех орудий! for (int i = 1; i <= designAttacker.guns; i++) { // получить список живых мехов вражеской армии var listOfTargets = targetArmy.GetLiveBattleMechs(); if (listOfTargets.Count == 0) { break; } // цели кончились var rn = new Random(); int target = rn.Next(listOfTargets.Count); Design designTarget = listOfTargets[target].GetDesign(); if (designAttacker.caliber >= designTarget.shield) { listOfTargets[target].Kill(); // Цель уничтожена! } else { // Броня не пробиваема! } } }
public void SaveArmy(Army army) { if (army.rid == 0) { context.Armies.Add(army); } else { Army dbEntry = context.Armies.Find(army.rid); if (dbEntry != null) { dbEntry.name = army.name; dbEntry.ridcountry = army.ridcountry; dbEntry.ridgamer = army.ridgamer; } } context.SaveChanges(); }
public ActionResult CreateMech(int designesDropDown, int qnt) { int manufactureQnt = qnt; Game game = Session["Game"] as Game; Country country = game.selectedCountry; int userId = WebSecurity.GetUserId(User.Identity.Name); Gamer gamer = gamerRepository.Gamers.FirstOrDefault(x => x.type == "human" && x.UserId == userId); Gamer owner = gamerRepository.Gamers.FirstOrDefault(x => x.rid == country.ridgamer && x.UserId == userId); Boolean our = false; if (gamer.rid == owner.rid) { our = true; } // Дизайн заказанный к производству Design design = designRepository.Designs.FirstOrDefault(x => x.rid == designesDropDown && x.UserId == userId); // Проверить есть ли у игрока-человека в этой стране армия Army army = armyRepository.Armies.FirstOrDefault(x => x.ridcountry == country.rid && x.ridgamer == gamer.rid && x.UserId == userId); // Если армии нет - создать if (army == null) { army = new Army { name = (gamer.name + " in " + country.nameEng).Trim(), ridcountry = country.rid, //ridgamer = country.ridgamer, ridgamer = gamer.rid, UserId = userId }; armyRepository.SaveArmy(army); } // увеличиваем количество мехов в таблице Battlemech for (int qi = 1; qi <= manufactureQnt; qi++) { // Если хватает ресурсов if (country.mineral >= design.weight) { Battlemech battlemech = new Battlemech { riddesign = design.rid, ridarmy = army.rid, name = "Mech-" + design.name, qnt = 1, UserId = userId }; battlemechRepository.SaveBattlemech(battlemech); country.mineral = country.mineral - design.weight; } else { break; } } countryRepository.SaveCountry(country); ModelState.Clear(); Factory factory = new Factory { designes = designRepository.Designs.Where(x => x.UserId == userId && x.ridgamer == gamer.rid).ToList(), qnt = 0, ours = our }; return View(factory); }
public ActionResult Bunker(int? sendAllTo, List<int?> sendOneTo) { logger.Info("BunkerController: SendMechs"); Game game = Session["Game"] as Game; int userId = WebSecurity.GetUserId(User.Identity.Name); Gamer gamer = gamerRepository.Gamers.FirstOrDefault(x => x.type == "human" && x.UserId == userId); // Выбрать всех мехов, что сидят в этой стране List<Battlemech> listOfMechs = armyRepository.Armies.Where(x => x.ridcountry == game.selectedCountry.rid && x.ridgamer == gamer.rid && x.UserId == userId) .Join(battlemechRepository.Battlemechs.Where(x => x.UserId == userId), a => a.rid, b => b.ridarmy, (a, b) => b).ToList(); if (sendAllTo != null) { // Проверить, есть ли у игрока армия в стране куда отправляются мехи Country toCountry = countryRepository.Countries.FirstOrDefault(x => x.rid == sendAllTo && x.UserId == userId); Army toArmy = armyRepository.Armies.FirstOrDefault(x => x.ridcountry == toCountry.rid && x.ridgamer == gamer.rid && x.UserId == userId); // Если армии нет - создать if (toArmy == null) { toArmy = new Army { name = (gamer.name + " in " + toCountry.nameEng).Trim(), ridcountry = toCountry.rid, //ridgamer = country.ridgamer, ridgamer = gamer.rid, UserId = userId }; armyRepository.SaveArmy(toArmy); } // Отправить всех мехов по указанному адресу foreach (Battlemech mech in listOfMechs) { mech.ridarmy = toArmy.rid; battlemechRepository.SaveBattlemech(mech); } } else { int i = -1; foreach (var sendTo in sendOneTo) { i++; if (sendTo == null) { continue; } // Этого оставляем дома // Остальных рассылаем согласно назначениям // Проверить, есть ли у игрока армия в стране куда отправляются мехи Country toCountry = countryRepository.Countries.FirstOrDefault(x => x.rid == sendTo && x.UserId == userId); Army toArmy = armyRepository.Armies.FirstOrDefault(x => x.ridcountry == toCountry.rid && x.ridgamer == gamer.rid && x.UserId == userId); // Если армии нет - создать if (toArmy == null) { toArmy = new Army { name = (gamer.name + " in " + toCountry.nameEng).Trim(), ridcountry = toCountry.rid, //ridgamer = country.ridgamer, ridgamer = gamer.rid, UserId = userId }; armyRepository.SaveArmy(toArmy); } // Отправить меха по указанному адресу // TODO: Сомнительное решение - нужно переделать так, чтобы получать связку значений (rid-mech,rid-country) listOfMechs[i].ridarmy = toArmy.rid; battlemechRepository.SaveBattlemech(listOfMechs[i]); } } ModelState.Clear(); Bunker bunker = new Bunker(); // Выбрать все страны кроме выделенной bunker.listOfCountries = countryRepository.Countries.Where(x => x.rid != game.selectedCountry.rid && x.UserId == userId).ToList(); // Выбрать всех мехов, что сидят в этой стране bunker.listOfMechs = armyRepository.Armies.Where(x => x.ridcountry == game.selectedCountry.rid && x.ridgamer == gamer.rid && x.UserId == userId) .Join(battlemechRepository.Battlemechs.Where(x => x.UserId == userId), a => a.rid, b => b.ridarmy, (a, b) => b).ToList(); return View(bunker); }