コード例 #1
0
        public async Task <List <SeregInfoDTO> > GetOtthoniEgysegsFromOneUserAsync(Orszag currentOrszag)
        {
            try
            {
                var otthoniEgysegek = currentOrszag.OtthoniCsapats?.SingleOrDefault(T => T.Celpont == null)?.Egysegs.GroupBy(e => e.Discriminator);

                var seregInfoList = new List <SeregInfoDTO>();

                if (otthoniEgysegek != null)
                {
                    foreach (var egysegek in otthoniEgysegek)
                    {
                        var egysegekDTO = _mapper.Map <List <EgysegDTO> >(egysegek.ToList());
                        seregInfoList.Add(new SeregInfoDTO()
                        {
                            Ar        = egysegekDTO.Sum(e => e.Ar),
                            Mennyiseg = egysegekDTO.Count,
                            Tamadas   = egysegekDTO.Sum(e => e.Tamadas),
                            Vedekezes = egysegek.Sum(e => e.Vedekezes),
                            Tipus     = Enum.Parse <EgysegTipus>(egysegek.Key)
                        });
                    }
                }
                return(seregInfoList);
            }
            catch (Exception e)
            {
                throw e;
            }
        }
コード例 #2
0
ファイル: EpuletService.cs プロジェクト: feheragnes/UnderSea
        public async Task <List <EpuletInfoDTO> > GetFelepultEpuletsFromOneUserAsync(Orszag currentOrszag)
        {
            List <Epulet> felepultEpulets = currentOrszag.Epulets.Where(x => x.Felepult == true).ToList();

            long aramlasIranyitoMennyiseg = 0;
            long zatonyvarMennyiseg       = 0;

            felepultEpulets.ForEach(x =>
            {
                if (x.GetType() == typeof(AramlasIranyito))
                {
                    aramlasIranyitoMennyiseg++;
                }
                if (x.GetType() == typeof(ZatonyVar))
                {
                    zatonyvarMennyiseg++;
                }
            });

            List <EpuletInfoDTO> felepultDtoList = new List <EpuletInfoDTO>();

            felepultDtoList.Add(new EpuletInfoDTO(EpuletTipus.AramlasIranyito, 1000, aramlasIranyitoMennyiseg));
            felepultDtoList.Add(new EpuletInfoDTO(EpuletTipus.ZatonyVar, 1000, zatonyvarMennyiseg));

            return(felepultDtoList);
        }
コード例 #3
0
ファイル: OrszagService.cs プロジェクト: feheragnes/UnderSea
 private async Task <long> GetVedekezesBonusz(Orszag orszag)
 {
     return(await _context.VedekezesNovelos
            .Include(x => x.Fejlesztes).ThenInclude(x => x.Orszag)
            .Where(x => x.Fejlesztes.Orszag.Id == orszag.Id)
            .Where(x => x.Fejlesztes.Kifejlesztve == true)
            .SumAsync(x => x.Ertek));
 }
コード例 #4
0
ファイル: EpuletService.cs プロジェクト: feheragnes/UnderSea
        public async Task <Epulet> GetEpuletByIdAsync(Guid id, Guid userId)
        {
            Orszag currentOrszag = await _commonService.GetCurrentOrszag(userId);

            List <Epulet> currentEpulets = currentOrszag.Epulets.ToList();

            return(currentEpulets.Find(x => x.Id == id));
        }
コード例 #5
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);
        }
コード例 #6
0
ファイル: OrszagService.cs プロジェクト: feheragnes/UnderSea
        private async Task <IList <string> > GetEllensegesOrszags(Orszag orszag)
        {
            var list = new List <string>();
            await _context.Orszags.Where(x => x.Id != orszag.Id).ForEachAsync(x =>
            {
                list.Add(x.Nev);
            });

            return(list);
        }
コード例 #7
0
        private void Ellatmany(Orszag orszag)
        {
            var ellatmany = 0;

            foreach (var item in orszag.OrszagEgysegek)
            {
                ellatmany += item.Darab * item.Egyseg.Ellatmany;
            }

            orszag.Krumpli -= ellatmany;
        }
コード例 #8
0
        private void Zsold(Orszag orszag)
        {
            var zsold = 0;

            foreach (var item in orszag.OrszagEgysegek)
            {
                zsold += item.Darab * item.Egyseg.Zsold;
            }


            orszag.Arany -= zsold;
        }
コード例 #9
0
        public override List <string> getData()
        {
            List <string> data = base.getData();

            data.Add(Orszag.ToString());
            data.Add(Iranyitoszam.ToString());
            data.Add(Varos.ToString());
            data.Add(Utca.ToString());
            data.Add(Hazszam.ToString());
            data.Add(Emelet.ToString());
            return(data);
        }
コード例 #10
0
ファイル: OrszagService.cs プロジェクト: feheragnes/UnderSea
 private async Task <long> GetGyongyTermeles(Orszag orszag)
 {
     return(Convert.ToInt64(Convert.ToDouble(await _context.NepessegTermelos
                                             .Include(x => x.Epulet).ThenInclude(x => x.Orszag)
                                             .Where(x => x.Epulet.Orszag.Id == orszag.Id)
                                             .Where(x => x.Epulet.Felepult == true)
                                             .SumAsync(x => x.Ertek) * 1)
                            * (Convert.ToDouble(await _context.AdoNovelos
                                                .Include(x => x.Fejlesztes).ThenInclude(x => x.Orszag)
                                                .Where(x => x.Fejlesztes.Orszag.Id == orszag.Id)
                                                .Where(x => x.Fejlesztes.Kifejlesztve == true)
                                                .SumAsync(x => x.Ertek) / 100.0) + 1)));
 }
コード例 #11
0
        public async Task AddFejlesztesAsync(FejlesztesInfoDTO fejlesztes, Guid userId)
        {
            Orszag currentOrszag = await _commonService.GetCurrentOrszag(userId);

            string fejlesztesTipus = Enum.GetName(typeof(FejlesztesTipus), fejlesztes.Tipus);;

            if (currentOrszag?.Fejleszteses.Where(x => x.Kifejlesztve == false)?.Count() != 0)
            {
                throw new InvalidOperationException("Another PowerUp is under development");
            }
            if (currentOrszag?.Fejleszteses.Where(x => x.GetType().Name == fejlesztesTipus)?.Count() != 0)
            {
                throw new InvalidOperationException("You already have the chosen PowerUp");
            }



            switch (fejlesztes.Tipus)
            {
            case FejlesztesTipus.Alkimia:
                currentOrszag.Fejleszteses.Add(new Alkimia());
                break;

            case FejlesztesTipus.IszapKombajn:
                currentOrszag.Fejleszteses.Add(new IszapKombajn());
                break;

            case FejlesztesTipus.IszapTraktor:
                currentOrszag.Fejleszteses.Add(new IszapTraktor());
                break;

            case FejlesztesTipus.KorallFal:
                currentOrszag.Fejleszteses.Add(new KorallFal());
                break;

            case FejlesztesTipus.SzonarAgyu:
                currentOrszag.Fejleszteses.Add(new SzonarAgyu());
                break;

            case FejlesztesTipus.VizalattiHarmuveszet:
                currentOrszag.Fejleszteses.Add(new VizalattiHarcmuveszet());
                break;

            default:
                throw new ArgumentException("Invalid fejlesztes type");
            }

            _context.SaveChanges();
        }
コード例 #12
0
        private void Adozas(Orszag orszag)
        {
            var tanya   = orszag.OrszagEpuletek.SingleOrDefault(o => o.Epulet.Name == "Tanya");
            var alkimia = orszag.OrszagFejlesztesek.SingleOrDefault(o => o.Fejlesztes.Name == "Alkímia");

            if (alkimia != null)
            {
                //1 tanya: 50 ember, 1 ember:  25 arany /kör, alkimia 30%-al több arany
                orszag.Arany += Convert.ToInt32((tanya == null ? 0 : tanya.Darab) * 50 * 25 * 1.3);
            }
            else
            {
                orszag.Arany += Convert.ToInt32((tanya == null ? 0 : tanya.Darab) * 50 * 25);
            }
        }
コード例 #13
0
        public async Task <List <FejlesztesInfoDTO> > GetFinishedFejlesztesesAsync(Guid userId)
        {
            Orszag currentOrszag = await _commonService.GetCurrentOrszag(userId);

            List <Fejlesztes>        keszFejleszteses = currentOrszag.Fejleszteses.Where(x => x.Kifejlesztve == true).ToList();
            List <FejlesztesInfoDTO> keszDTOList      = new List <FejlesztesInfoDTO>();


            keszFejleszteses.ForEach(x =>
            {
                keszDTOList.Add(new FejlesztesInfoDTO((FejlesztesTipus)Enum.Parse(typeof(FejlesztesTipus), x.GetType().Name), false, x.AktualisKor));
            });

            return(keszDTOList);
        }
コード例 #14
0
        public async Task <List <FejlesztesInfoDTO> > GetFejlesztesInfoDTOs(Guid userId)
        {
            Orszag currentOrszag = await _commonService.GetCurrentOrszag(userId);

            List <Fejlesztes> userFejleszteses = currentOrszag.Fejleszteses.ToList();

            List <FejlesztesInfoDTO> returnDtoList = new List <FejlesztesInfoDTO>();

            userFejleszteses.ForEach(x =>
            {
                returnDtoList.Add(new FejlesztesInfoDTO((FejlesztesTipus)Enum.Parse(typeof(FejlesztesTipus), x.GetType().Name), x.Kifejlesztve, x.AktualisKor));
            });

            return(returnDtoList);
        }
コード例 #15
0
        public async Task <List <EgysegInfoDTO> > GetEgysegInfoDTOs(Guid userId)
        {
            Orszag currentOrszag = await _commonService.GetCurrentOrszag(userId);

            var egysegInfoDtos = new List <EgysegInfoDTO>();
            await _context.EgysegInfos.ForEachAsync(x =>
            {
                egysegInfoDtos.Add(_mapper.Map <EgysegInfoDTO>(x));
            });

            currentOrszag?.OtthoniCsapats
            .FirstOrDefault(x => x.Celpont == null)
            ?.Egysegs.ToList()
            .ForEach(x => egysegInfoDtos
                     .FirstOrDefault(y => y.Tipus == Enum.Parse <EgysegTipus>(x.GetType().Name))
                     .Mennyiseg++);
            return(egysegInfoDtos);
        }
コード例 #16
0
        public async Task <List <EgysegDTO> > GetAllEgysegsFromOneUserAsync(Guid userId)
        {
            Orszag currentOrszag = await _commonService.GetCurrentOrszag(userId);

            List <Csapat> otthoniCsapats = new List <Csapat>(currentOrszag.OtthoniCsapats);
            List <Egyseg> egysegList     = new List <Egyseg>();

            otthoniCsapats.ForEach(x =>
            {
                foreach (var egyseg in x.Egysegs)
                {
                    egysegList.Add(egyseg);
                }
            });

            var egysegDtoList = _mapper.Map <List <Egyseg>, List <EgysegDTO> >(egysegList);

            return(egysegDtoList);
        }
コード例 #17
0
        private void Krumpli(Orszag orszag)
        {
            var tanya   = orszag.OrszagEpuletek.SingleOrDefault(o => o.Epulet.Name == "Tanya");
            var traktor = orszag.OrszagFejlesztesek.SingleOrDefault(o => o.Fejlesztes.Name == "Traktor");
            var kombajn = orszag.OrszagFejlesztesek.SingleOrDefault(o => o.Fejlesztes.Name == "Kombájn");

            //1 tanya: 200 krumpli/kör, traktor 10%-al több krumpli, kombájn 15%-al több
            var szorzo = 1.0;


            if (traktor != null)
            {
                szorzo = szorzo * 1.1;
            }

            if (kombajn != null)
            {
                szorzo = szorzo * 1.15;
            }
            orszag.Krumpli += Convert.ToInt32((tanya == null ? 0 : tanya.Darab) * 200 * szorzo);
        }
コード例 #18
0
ファイル: OrszagService.cs プロジェクト: feheragnes/UnderSea
        public async Task <OrszagDTO> Map(Orszag orszag)
        {
            var orszagdto = new OrszagDTO
            {
                Id                   = orszag.Id,
                Gyongy               = orszag.Gyongy,
                Nev                  = orszag.Nev,
                Korall               = orszag.Korall,
                Helyezes             = await GetHelyezes(orszag),
                GyongyTermeles       = await GetGyongyTermeles(orszag),
                KorallTermeles       = await GetKorallTermeles(orszag),
                EpuloAramlasIranyito = await _epuletService.GetEpuloAramlasiranyitoCout(orszag),
                EpuloZatonyVar       = await _epuletService.GetEpuloZatonyvarCount(orszag),
                SeregInfoDTOs        = await GetSeregInfoDTOs(orszag),
                EpuletInfoDTOs       = await GetEpuletInfoDTOs(orszag),
                TamadoBonusz         = await GetTamadasBonusz(orszag),
                VedekezoBonusz       = await GetVedekezesBonusz(orszag)
            };

            return(orszagdto);
        }
コード例 #19
0
ファイル: OrszagService.cs プロジェクト: feheragnes/UnderSea
        public async Task <Orszag> InitOrszag(string orszagNev)
        {
            var orszag = new Orszag {
                Nev = orszagNev, Korall = 0, Gyongy = 1000
            };

            orszag.Epulets.Add(new AramlasIranyito()
            {
                Felepult = true
            });
            orszag.OtthoniCsapats.Add(new Csapat()
            {
                Kimenetel = HarcEredmenyTipus.Otthon
            });
            if (_context.Orszags.FirstOrDefault(x => x.Nev.ToUpper() == orszagNev.ToUpper()) == null)
            {
                await _context.Orszags.AddAsync(orszag);

                return(orszag);
            }
            throw new ArgumentException("Country already exists");
        }
コード例 #20
0
        private void Pontszam(Orszag orszag)
        {
            var tanya = orszag.OrszagEpuletek.SingleOrDefault(oe => oe.Epulet.Name == "Tanya");

            var tanyaszam = tanya == null ? 0 : tanya.Darab;

            var barakk = orszag.OrszagEpuletek.SingleOrDefault(oe => oe.Epulet.Name == "Barakk");

            var barakkszam = barakk == null ? 0 : barakk.Darab;

            var lovasijasz = orszag.OrszagEgysegek.Where(oe => oe.Egyseg.Name == "Lovas" || oe.Egyseg.Name == "Íjász").Sum(o => o.Darab);

            var elit = orszag.OrszagEgysegek.Where(oe => oe.Egyseg.Name == "Elit").Sum(o => o.Darab);

            var tudomany = orszag.OrszagFejlesztesek.Count();

            orszag.Pontszam =
                tanyaszam * 50                  // emberek száma*1
                + (tanyaszam + barakkszam) * 50 //épületek száma*50
                + lovasijasz * 5                //lovas, ijasz darab* 5
                + tudomany * 100                //fejlesztes * 100
            ;
        }
コード例 #21
0
ファイル: EpuletService.cs プロジェクト: feheragnes/UnderSea
        public async Task <List <EpuletInfoDTO> > GetAllEpuletsFromOneUserAsync(Guid userId)
        {
            Orszag currentOrszag = await _commonService.GetCurrentOrszag(userId);

            return(_mapper.Map <List <EpuletInfoDTO> > (currentOrszag.Epulets.ToList()));
        }
コード例 #22
0
ファイル: EpuletService.cs プロジェクト: feheragnes/UnderSea
 public async Task <long> GetEpuloZatonyvarCount(Orszag currentOrszag)
 {
     return(currentOrszag.Epulets.ToList().FindAll(x => x.Felepult == false && x is ZatonyVar).Count());
 }
コード例 #23
0
ファイル: EpuletService.cs プロジェクト: feheragnes/UnderSea
 public async Task <long> GetEpuloAramlasiranyitoCout(Orszag currentOrszag)
 {
     return(currentOrszag.Epulets.ToList().FindAll(x => x.Felepult == false && x is AramlasIranyito).Count());
 }
コード例 #24
0
        public async Task <ActionResult <long> > GetActiveFejlesztesNumber()
        {
            Orszag currentOrszag = await _commonService.GetCurrentOrszag(UserId);

            return(await _fejlesztesService.GetActiveFejlesztesCount(currentOrszag));
        }
コード例 #25
0
ファイル: OrszagService.cs プロジェクト: feheragnes/UnderSea
 private async Task <IList <EpuletInfoDTO> > GetEpuletInfoDTOs(Orszag orszag)
 {
     return(await _epuletService.GetFelepultEpuletsFromOneUserAsync(orszag));
 }
コード例 #26
0
ファイル: OrszagService.cs プロジェクト: feheragnes/UnderSea
 private async Task <IList <SeregInfoDTO> > GetSeregInfoDTOs(Orszag orszag)
 {
     return(await _egysegService.GetOtthoniEgysegsFromOneUserAsync(orszag));
 }
コード例 #27
0
        public async Task <ActionResult <List <EpuletInfoViewModel> > > GetUserEpulets()
        {
            Orszag currentOrszag = await _commonService.GetCurrentOrszag(UserId);

            return(_mapper.Map <List <EpuletInfoViewModel> > (await _epuletService.GetFelepultEpuletsFromOneUserAsync(currentOrszag)));
        }
コード例 #28
0
        public async Task <IActionResult> GetUserEgysegs()
        {
            Orszag userOrszag = await _commonService.GetCurrentOrszag(UserId);

            return(Ok(_egysegService.GetOtthoniEgysegsFromOneUserAsync(userOrszag)));
        }
コード例 #29
0
        public async Task <ActionResult <List <SeregInfoDTO> > > GetOtthonMaradtCsapatFromOneUser()
        {
            Orszag currentOrszag = await _commonService.GetCurrentOrszag(UserId);

            return(await _egysegService.GetOtthoniEgysegsFromOneUserAsync(currentOrszag));
        }
コード例 #30
0
ファイル: OrszagService.cs プロジェクト: feheragnes/UnderSea
        private async Task <long> GetHelyezes(Orszag orszag)
        {
            var sorted = await _globalService.GetRanglista();

            return((sorted.IndexOf(sorted.FirstOrDefault(x => x.Orszag == orszag.Nev))) + 1);
        }