Exemplo n.º 1
0
        public void IzvrsiKolonizacije()
        {
            foreach (KeyValuePair <Zvijezda, Flota> flotaStac in floteStacionarne)
            {
                Zvijezda zvijezda = flotaStac.Key;
                Flota    flota    = flotaStac.Value;

                #region Kolonizacija
                foreach (Flota.Kolonizacija kolonizacija in flota.kolonizacije)
                {
                    zvijezda.Naseli(this);

                    Planet planet = zvijezda.planeti[kolonizacija.planet];
                    double maxDodatnaPopulacija = 0;
                    if (planet.kolonija == null)
                    {
                        Kolonija kolonija = new Kolonija(this, planet, 10, 0);
                        maxDodatnaPopulacija = kolonija.Efekti[Kolonija.PopulacijaMax];
                    }
                    else
                    {
                        maxDodatnaPopulacija = (planet.kolonija.Efekti[Kolonija.PopulacijaMax] - planet.kolonija.Populacija);
                    }

                    long populacijaBroda  = kolonizacija.brod.dizajn.populacija;
                    long radnaMjestaBroda = kolonizacija.brod.dizajn.radnaMjesta;
                    long brBrodova        = (long)(Math.Min(kolonizacija.brBrodova, Math.Ceiling(maxDodatnaPopulacija / populacijaBroda)));
                    if (planet.kolonija == null)
                    {
                        planet.kolonija = new Kolonija(
                            this,
                            planet,
                            populacijaBroda * brBrodova,
                            radnaMjestaBroda * brBrodova);
                        poruke.AddLast(Poruka.NovaKolonija(planet.kolonija));
                    }
                    else
                    {
                        planet.kolonija.dodajKolonizator(
                            populacijaBroda * brBrodova,
                            radnaMjestaBroda * brBrodova);
                    }

                    flota.ukloniBrod(kolonizacija.brod.dizajn, brBrodova);
                }
                flota.kolonizacije.Clear();
                #endregion

                if (flota.brodovi.Count == 0)
                {
                    floteStacionarne.PendRemove(zvijezda);
                }
            }
            floteStacionarne.ApplyRemove();
        }