示例#1
0
        public FazaIgre slijedecaFaza()
        {
            switch (fazaIgre)
            {
            case FazaIgre.NoviKrug:
                for (trenutniIgracIndex++; trenutniIgracIndex < igraci.Count; trenutniIgracIndex++)
                {
                    if (igraci[trenutniIgracIndex].tip != Igrac.Tip.COVJEK)
                    {
                        igraci[trenutniIgracIndex].Upravljac.OdigrajKrug(this);
                    }
                    else
                    {
                        return(FazaIgre.NoviKrug);
                    }
                }

                pocetakKrajaKruga();
                fazaIgre = FazaIgre.Bitke;
                return(fazaIgre);

            case FazaIgre.Bitke:
                zavrsiKrug();
                trenutniIgracIndex = 0;
                fazaIgre           = FazaIgre.NoviKrug;
                return(fazaIgre);
            }

            while (true)
            {
                trenutniIgracIndex++;
                if (trenutniIgracIndex >= igraci.Count)
                {
                    zavrsiKrug();
                    trenutniIgracIndex = 0;
                }

                if (igraci[trenutniIgracIndex].tip != Igrac.Tip.COVJEK)
                {
                    igraci[trenutniIgracIndex].Upravljac.OdigrajKrug(this);
                }
                else
                {
                    return(FazaIgre.NoviKrug);
                }
            }
        }
示例#2
0
        private void backgroundTurnProcessor_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            FazaIgre faza = (FazaIgre)e.Result;

            switch (faza)
            {
            case FazaIgre.NoviKrug:
                noviKrugPogled();

                bool imaPoruka        = false;
                var  filtriranePoruke = igrac.FiltriranePoruke();

                foreach (Poruka.Tip tip in filtriranePoruke.Keys)
                {
                    if (igrac.filtarPoruka[tip] && filtriranePoruke[tip].Count > 0)
                    {
                        imaPoruka = true;
                    }
                }

                zakljucajSucelje(false);

                if (imaPoruka)
                {
                    novostiMenu_Click(this, null);
                }
                break;

            case FazaIgre.Bitke:

                while (igra.SlijedeciKonflikt() != null)
                {
                    Konflikt konflikt = igra.SlijedeciKonflikt();

                    if (konflikt.Faza == StanjeKonflikta.SvemirskiSukob)
                    {
                        using (var formBitka = new FormBorba(konflikt.ZapocniBorbu(), konflikt.Lokacija))
                            formBitka.ShowDialog();
                    }
                }

                backgroundTurnProcessor.RunWorkerAsync();
                break;
            }
        }
示例#3
0
        public IgraZvj(List <Igrac.ZaStvoriti> igraci, Mapa.GraditeljMape mapa, PocetnaPopulacija pocetnaPop)
        {
            this.igraci        = new List <Igrac>();
            this.mapa          = mapa.mapa;
            trenutniIgracIndex = 0;
            fazaIgre           = FazaIgre.NoviKrug;
            brKruga            = 0;
            tempPoeniRazvoja   = new long[igraci.Count];
            tempPoeniIstraz    = new long[igraci.Count];
            konflikti          = new Queue <Konflikt>();
            osnovniEfekti      = PodaciAlat.ucitajBazuEfekata();

            foreach (Igrac.ZaStvoriti igrac in igraci)
            {
                if (igrac.tip == Igrac.Tip.COVJEK)
                {
                    this.igraci.Add(igrac.stvoriIgraca(this.igraci.Count));
                }
            }

            foreach (Igrac.ZaStvoriti igrac in igraci)
            {
                if (igrac.tip == Igrac.Tip.RACUNALO)
                {
                    this.igraci.Add(igrac.stvoriRacunalnogIgraca(this.igraci.Count));
                }
            }

            Vadjenje <Zvijezda> pocetnePozicije = new Vadjenje <Zvijezda>();

            foreach (Zvijezda pl in mapa.pocetnePozicije)
            {
                pocetnePozicije.dodaj(pl);
            }

            for (int i = 0; i < igraci.Count; i++)
            {
                this.igraci[i].izracunajEfekte(this);
                postaviIgraca(this.igraci[i], pocetnePozicije.izvadi(), pocetnaPop);
                this.igraci[i].staviNoveTehnologije(this);
                this.igraci[i].izracunajPoeneIstrazivanja(this);
                this.igraci[i].staviPredefiniraneDizajnove();
            }

            foreach (Zvijezda zvj in this.mapa.zvijezde)
            {
                foreach (Planet pl in zvj.planeti)
                {
                    if (pl.kolonija != null)
                    {
                        pl.kolonija.resetirajEfekte();
                    }
                }
                zvj.IzracunajEfekte();

                //	Za potrebe debugiranja

                /* for (int i = 0; i < igraci.Count; i++)
                 *      this.igraci[i].posjeceneZvjezde.Add(zvj); */
            }
        }