コード例 #1
0
        public void izracunajPoeneIstrazivanja(IgraZvj igra)
        {
            Dictionary <Zvijezda, long> istrazivanjePoSustavuBaza = new Dictionary <Zvijezda, long>();

            foreach (Zvijezda zvj in igra.mapa.zvijezde)
            {
                istrazivanjePoSustavuBaza[zvj] = 0;
                foreach (Planet pl in zvj.planeti)
                {
                    if (pl.kolonija != null)
                    {
                        if (pl.kolonija.Igrac == this)
                        {
                            istrazivanjePoSustavuBaza[zvj] += (long)(pl.kolonija.Populacija * efekti["ISTRAZIVANJE_PO_STANOVNIKU"]);
                        }
                    }
                }
                istrazivanjePoSustavuBaza[zvj] = (long)Math.Floor(Math.Sqrt(istrazivanjePoSustavuBaza[zvj]));
            }

            istrazivanjeSustav = igra.mapa.zvijezde[0];
            foreach (Zvijezda zvjI in istrazivanjePoSustavuBaza.Keys)
            {
                istrazivanjePoSustavu[zvjI] = 0;
                foreach (Zvijezda zvjJ in istrazivanjePoSustavuBaza.Keys)
                {
                    istrazivanjePoSustavu[zvjI] += (long)(istrazivanjePoSustavuBaza[zvjJ] / (1 + zvjI.udaljenost(zvjJ) / efekti["ISTRAZIVANJE_KOM_UDALJENOST"]));
                }

                if (istrazivanjePoSustavu[zvjI] > istrazivanjePoSustavu[istrazivanjeSustav])
                {
                    istrazivanjeSustav = zvjI;
                }
            }
        }
コード例 #2
0
        public void izracunajEfekte(IgraZvj igra)
        {
            kolonije.Clear();
            foreach (Zvijezda zvj in igra.mapa.zvijezde)
            {
                foreach (Planet pl in zvj.planeti)
                {
                    if (pl.kolonija != null)
                    {
                        if (pl.kolonija.Igrac == this)
                        {
                            kolonije.Add(pl.kolonija);
                        }
                    }
                }
            }

            efekti.Clear();
            foreach (string kod in tehnologije.Keys)
            {
                efekti.Add(kod + "_LVL", tehnologije[kod].nivo);
            }
            foreach (string s in igra.osnovniEfekti.Keys)
            {
                efekti.Add(s, igra.osnovniEfekti[s].iznos(efekti));
            }
        }
コード例 #3
0
        public void staviNoveTehnologije(IgraZvj igra)
        {
            HashSet <Tehnologija.TechInfo> uProucavanju = new HashSet <Tehnologija.TechInfo>();

            foreach (Tehnologija teh in tehnologijeURazvoju)
            {
                uProucavanju.Add(teh.tip);
            }
            foreach (Tehnologija teh in tehnologijeUIstrazivanju)
            {
                uProucavanju.Add(teh.tip);
            }

            foreach (Tehnologija.TechInfo t in Tehnologija.TechInfo.tehnologijeRazvoj)
            {
                if (!uProucavanju.Contains(t))
                {
                    if (tehnologije[t.kod].istrazivo(efekti))
                    {
                        tehnologijeURazvoju.AddLast(tehnologije[t.kod]);
                    }
                }
            }

            foreach (Tehnologija.TechInfo t in Tehnologija.TechInfo.tehnologijeIstrazivanje)
            {
                if (!uProucavanju.Contains(t))
                {
                    if (tehnologije[t.kod].istrazivo(efekti))
                    {
                        tehnologijeUIstrazivanju.AddLast(tehnologije[t.kod]);
                    }
                }
            }
        }
コード例 #4
0
 public void NoviKrug(IgraZvj igra, long poeniRazvoja, long poeniIstrazivanja)
 {
     istraziTehnologije(igra, poeniRazvoja, poeniIstrazivanja);
     izracunajEfekte(igra);
     staviNoveTehnologije(igra);
     staviPredefiniraneDizajnove();
     staviNadogradjeneDizajnove();
     izracunajPoeneIstrazivanja(igra);
 }
コード例 #5
0
        private void istraziTehnologije(IgraZvj igra, long poeniRazvoja, long poeniIstrazivanja)
        {
            List <long> rasporedPoena = Tehnologija.RasporedPoena(poeniRazvoja, tehnologijeURazvoju.Count, koncentracijaPoenaRazvoja);
            int         i             = 0;
            long        ulog          = 0;

            foreach (Tehnologija teh in tehnologijeURazvoju)
            {
                long nivo = teh.nivo;
                ulog += rasporedPoena[i];
                ulog  = teh.uloziPoene(ulog, efekti);
                if (teh.nivo != nivo)
                {
                    poruke.AddLast(Poruka.NovaTehnologija(teh, false));
                }
                i++;
            }

            rasporedPoena = Tehnologija.RasporedPoena(poeniIstrazivanja, tehnologijeUIstrazivanju.Count, 0.5 + random.NextDouble());
            i             = 0;
            ulog          = 0;
            foreach (Tehnologija teh in tehnologijeUIstrazivanju)
            {
                long nivo = teh.nivo;
                ulog += rasporedPoena[i];
                ulog  = teh.uloziPoene(ulog, efekti);
                if (teh.nivo != nivo)
                {
                    poruke.AddLast(Poruka.NovaTehnologija(teh, true));
                }
                i++;
            }

            for (LinkedListNode <Tehnologija> t = tehnologijeURazvoju.First; t != null;)
            {
                if (t.Value.istrazivo(efekti))
                {
                    t = t.Next;
                }
                else
                {
                    LinkedListNode <Tehnologija> slijedeci = t.Next;
                    tehnologijeURazvoju.Remove(t);
                    t = slijedeci;
                }
            }

            for (LinkedListNode <Tehnologija> t = tehnologijeUIstrazivanju.First; t != null;)
            {
                if (t.Value.istrazivo(efekti))
                {
                    t = t.Next;
                }
                else
                {
                    LinkedListNode <Tehnologija> slijedeci = t.Next;
                    tehnologijeUIstrazivanju.Remove(t);
                    t = slijedeci;
                }
            }
        }