Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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
                    }));
                }
            }
        }