private bool Csata(Hadsereg hadsereg, Orszag celorszag, Orszag sajatorszag, List <Egyseg> lehetsegesEgysegek) { var tamadoszorzo = 1.0; var vedoszorzo = 1.0; //fejlesztések //sajatorzsag if (sajatorszag.OrszagFejlesztesek.Any(of => of.Fejlesztes.Id == 4)) //operaton rebirth { tamadoszorzo *= 1.2; } if (sajatorszag.OrszagFejlesztesek.Any(of => of.Fejlesztes.Id == 5)) //taktika { tamadoszorzo *= 1.1; } //celorszag if (celorszag.OrszagFejlesztesek.Any(of => of.Fejlesztes.Id == 3)) //operaton rebirth { vedoszorzo *= 1.2; } if (celorszag.OrszagFejlesztesek.Any(of => of.Fejlesztes.Id == 5)) //taktika { vedoszorzo *= 1.1; } //a hadseregek tamadoertekenek szamitasa var tamadoertek = hadsereg.HadseregEgysegek.Aggregate(0, (a, b) => a + b.Darab * b.Egyseg.Tamadas); tamadoertek = Convert.ToInt32(tamadoertek * tamadoszorzo); //celorszag vedoerteke var vedoegysegek = lehetsegesEgysegek.Select(e => new { Vedekezes = e.Vedekezes, JelenlegVan = celorszag.OrszagEgysegek.Where(oe => oe.Egyseg.Id == e.Id).Sum(oe => oe.Darab) //összesegység - celorszag.SajatHadseregek.Sum(h => h.HadseregEgysegek.SingleOrDefault(he => he.Egyseg.Id == e.Id).Darab) //jelenleg hadseregben, tehát nem véd }); var vedoertek = vedoegysegek.Aggregate(0, (a, b) => a + b.JelenlegVan * b.Vedekezes); vedoertek = Convert.ToInt32(vedoertek * vedoszorzo); var gyozelem = new bool(); ////harc //győzelem if (tamadoertek > vedoertek) { gyozelem = true; } else //vereség { gyozelem = false; } return(gyozelem); }
public async Task <ActionResult> Ujhadsereg(HaboruHadseregListViewModel model) { using (var db = new ApplicationDbContext()) { var userId = HttpContext.User.Identity.GetUserId(); var orszag = await db.Orszagok .Include(o => o.User) .Include(o => o.OrszagEgysegek.Select(oe => oe.Egyseg)) .Include(o => o.SajatHadseregek.Select(sh => sh.HadseregEgysegek.Select(he => he.Egyseg))) .Include(o => o.SajatHadseregek.Select(sh => sh.CelOrszag)) .SingleOrDefaultAsync(o => o.User.Id == userId); var lehetsegesEgysegek = db.Egysegek.ToList(); var jelenlegiEgysegek = lehetsegesEgysegek.Select(e => new HaboruEgysegListViewModel { Id = e.Id, Name = e.Name, Tamadas = e.Tamadas, Vedekezes = e.Vedekezes, OsszesenVan = orszag.OrszagEgysegek.Where(oe => oe.Egyseg.Id == e.Id).Sum(oe => oe.Darab) }).ToList(); foreach (var item in jelenlegiEgysegek) { var hadseregben = orszag.SajatHadseregek.Sum(sh => sh.HadseregEgysegek.SingleOrDefault(he => he.Egyseg.Id == item.Id).Darab); item.JelenlegVan = item.OsszesenVan - hadseregben; } if (db.Orszagok.Any(o => o.Id == model.CelOrszagId)) { foreach (var item in model.HadseregEgysegek) { if (jelenlegiEgysegek.Single(je => je.Id == item.Id).JelenlegVan < item.Darab) { ModelState.AddModelError("", "Nincs elég egység!"); } } } else { ModelState.AddModelError("", "Nincs ilyen ország!"); } if (ModelState.IsValid) { var ujhadsereg = new Hadsereg { CelOrszag = db.Orszagok.SingleOrDefault(o => o.Id == model.CelOrszagId), HadseregEgysegek = model.HadseregEgysegek.Select(he => new HadseregEgyseg { Egyseg = lehetsegesEgysegek.Single(le => le.Id == he.Id), Darab = he.Darab }).ToList() }; orszag.SajatHadseregek.Add(ujhadsereg); await db.SaveChangesAsync(); model.Id = ujhadsereg.Id; model.CelOrszag = ujhadsereg.CelOrszag.Name; return(Json(new { Success = true, UjHadsereg = model })); } else { return(Json(new { Success = false })); } } }