示例#1
0
        private void provjeriDizajn()
        {
            Dizajn dizajn = dizajner.dizajn;
            bool   valid  = true;

            if (dizajner.slobodnaNosivost < 0)
            {
                valid = false;
            }
            if (dizajn.ime == null)
            {
                valid = false;
            }
            else if (dizajn.ime.Trim().Length == 0)
            {
                valid = false;
            }

            if (!valid && btnSpremi.Enabled == true)
            {
                btnSpremi.Enabled = false;
            }
            if (valid && btnSpremi.Enabled == false)
            {
                btnSpremi.Enabled = true;
            }
        }
示例#2
0
        private void btnSpremi_Click(object sender, EventArgs e)
        {
            HashSet <Sazetak> postojeciDizajnovi = new HashSet <Sazetak>();

            foreach (DizajnZgrada dizajnZgrada in igrac.dizajnoviBrodova)
            {
                postojeciDizajnovi.Add(dizajnZgrada.dizajn.stil);
            }

            if (postojeciDizajnovi.Contains(dizajner.dizajn.stil))
            {
                MessageBox.Show(jezik["opIstiDizajnTekst"].tekst(), jezik["opIstiDizajnNaslov"].tekst(), MessageBoxButtons.OK, MessageBoxIcon.Stop);
                return;
            }

            if (String.IsNullOrEmpty(txtNaziv.Text.Trim()))
            {
                MessageBox.Show(jezik["opNazivDizajnaTekst"].tekst(), jezik["opNazivDizajnaNaslov"].tekst(), MessageBoxButtons.OK, MessageBoxIcon.Stop);
                return;
            }
            else
            {
                dizajner.dizajnIme = txtNaziv.Text.Trim();
            }

            this.Dizajn = dizajner.dizajn;
            //igrac.dodajDizajn(dizajner.dizajn);
            //dizajner.reset(igrac);

            DialogResult = DialogResult.OK;
            Close();
        }
示例#3
0
 public PorukaBrod(Zvijezda zvijezda, Dizajn dizajn, long kolicina)
     : base(Tip.Brod)
 {
     this.dizajn   = dizajn;
     this.kolicina = kolicina;
     this.zvijezda = zvijezda;
 }
示例#4
0
        public new static Poruka Ucitaj(PodaciCitac ulaz, Dictionary <int, Zvijezda> zvijezdeID, Dictionary <int, Dizajn> dizajnID)
        {
            Zvijezda zvj      = zvijezdeID[ulaz.podatakInt(PohIzvor)];
            Dizajn   dizajn   = dizajnID[ulaz.podatakInt(PohDizajn)];
            long     kolicina = ulaz.podatakLong(PohKolicina);

            return(new PorukaBrod(zvj, dizajn, kolicina));
        }
示例#5
0
        private void lstvDizajnovi_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (lstvDizajnovi.SelectedItems.Count == 0)
            {
                return;
            }
            Dizajn dizajn = (Dizajn)lstvDizajnovi.SelectedItems[0].Tag;

            picSlikaDizajna.Image = dizajn.slika;

            List <string> opisDizajna = new List <string>();

            opisDizajna.Add(dizajn.ime);
            opisDizajna.Add(dizajn.trup.naziv);
            opisDizajna.Add("");

            Dictionary <string, ITekst> jezik = Postavke.Jezik[Kontekst.FormFlote];

            foreach (InfoStranice stranica in Enum.GetValues(typeof(InfoStranice)))
            {
                Trace.WriteLine(stranica.ToString());

                if (stranica == InfoStranice.SpecijalnaOprema)
                {
                    foreach (SpecijalnaOprema so in dizajn.specijalnaOprema.Keys)
                    {
                        specijalnaOpremaZaOpis = so;
                        opisDizajna.AddRange(opis(stranica, dizajn, false));
                        opisDizajna.Add("");
                    }
                }
                else
                {
                    opisDizajna.AddRange(opis(stranica, dizajn, false));
                    opisDizajna.Add("");
                }

                if (stranica == InfoStranice.SekundarnaMisija)
                {
                    opisDizajna.Add(jezik["opisOklop"].tekst() + ":");
                    opisDizajna.Add("");
                    opisDizajna.Add(dizajn.oklop.naziv);
                    opisDizajna.Add(jezik["opisOklopIzd"].tekst() + ": " + dizajn.izdrzljivostOklopa);
                    opisDizajna.Add("");
                }
            }

            txtDizajnInfo.Lines = opisDizajna.ToArray();

            if (dizajn.brojBrodova == 0)
            {
                btnUkloniDizajn.Enabled = true;
            }
            else
            {
                btnUkloniDizajn.Enabled = false;
            }
        }
示例#6
0
        public void ukloniBrod(Dizajn dizajn, long kolicina)
        {
            brodovi[dizajn].ukloni(kolicina);

            if (brodovi[dizajn].kolicina <= 0)
            {
                brodovi.Remove(dizajn);
            }
        }
示例#7
0
        public void SetData(IList <Borac> grupaBoraca, bool prikazPrikrivanja)
        {
            this.dizajn      = grupaBoraca[0].Dizajn;
            this.bojaIgraca  = grupaBoraca[0].Igrac.boja;
            this.grupaBoraca = grupaBoraca;

            picPrikrivanje.Visible = prikazPrikrivanja;

            RefreshData();
        }
示例#8
0
        public void dodajBrod(Dizajn dizajn, long kolicina, Zvijezda zvijezda)
        {
            if (!floteStacionarne.ContainsKey(zvijezda))
            {
                floteStacionarne.Add(zvijezda, new Flota(zvijezda.x, zvijezda.y, noviIdFlote()));
            }

            floteStacionarne[zvijezda].dodajBrod(new Brod(dizajn, kolicina));
            dizajn.brojBrodova += kolicina;
        }
示例#9
0
        public Borac(Dizajn dizajn, Igrac igrac, double izdrzljivostOklopa)
        {
            this.Dizajn             = dizajn;
            this.Igrac              = igrac;
            this.IzdrzljivostOklopa = izdrzljivostOklopa;
            this.IzdrzljivostStita  = dizajn.izdrzljivostStita;

            this.Pozicija       = Pozicije.PocetnaPozicija;
            this.CiljnaPozicija = Dizajn.pozeljnaPozicija;
        }
示例#10
0
        public void dodajDizajn(Dizajn dizajn)
        {
            foreach (DizajnZgrada dizajnZ in dizajnoviBrodova)
            {
                if (dizajnZ.dizajn.nadogradnja != dizajn && dizajnZ.dizajn.stil.Equals(dizajn.stil))
                {
                    return;
                }
            }

            dizajnoviBrodova.Add(new DizajnZgrada(dizajn));
        }
示例#11
0
        private void dodajDizajn(Dizajn dizajn)
        {
            ListViewItem item = new ListViewItem(dizajn.ime);

            item.SubItems.Add(Fje.PrefiksFormater(dizajn.brojBrodova));
            item.Tag = dizajn;

            lstvDizajnovi.SmallImageList.Images.Add(dizajn.ikona);
            item.ImageIndex = lstvDizajnovi.SmallImageList.Images.Count - 1;

            lstvDizajnovi.Items.Add(item);
        }
示例#12
0
        private void paljba(Strana strana, Dizajn.Zbir <Oruzje> zbir, PopisMeta popisMeta, int pozicijaNapadaca)
        {
            Borac  meta = null;
            double vjerotanostPogotka = 1;

            Pozicije.EfektUdaljenosti efektUdaljenosti = null;
            Oruzje oruzje = zbir.komponenta;

            for (int i = 0; i < zbir.kolicina; i++)
            {
                if (meta == null)
                {
                    if (!popisMeta.jePrazan())
                    {
                        meta             = popisMeta.DajSlijedeci(zbir.komponenta.ciljanje, random.NextDouble());
                        efektUdaljenosti = Pozicije.EfektUdaljenosti.Izracunaj(Math.Abs(pozicijaNapadaca - Math.Round(meta.Pozicija)));

                        double ometanje = Math.Max(meta.Dizajn.ometanje - strana.SnagaSenzora((int)Math.Round(-meta.Pozicija)), 0);
                        vjerotanostPogotka = Vjerojatnost(oruzje.preciznost + efektUdaljenosti.Preciznost, meta.Dizajn.pokretljivost) * Math.Pow(sigmoidBase, ometanje);
                    }
                    else
                    {
                        break;
                    }
                }

                if (vjerotanostPogotka > random.NextDouble())
                {
                    Dizajn dizajnMete = meta.Dizajn;
                    double vatrenaMoc = oruzje.vatrenaMoc;

                    if (meta.IzdrzljivostStita > 0)
                    {
                        double ulaznaSteta      = Upijanje(vatrenaMoc, dizajnMete.debljinaStita);
                        double ublazavanjeStete = Math.Max(0, dizajnMete.ublazavanjeSteteStita * Math.Sqrt(meta.IzdrzljivostStita / dizajnMete.izdrzljivostStita) - oruzje.penetracijaStita);

                        double steta = Math.Min(meta.IzdrzljivostStita, Upijanje(ulaznaSteta, ublazavanjeStete));
                        meta.IzdrzljivostStita -= steta;
                        vatrenaMoc             -= steta;
                    }

                    meta.IzdrzljivostOklopa -= Upijanje(vatrenaMoc, dizajnMete.ublazavanjeSteteOklopa);

                    if (meta.IzdrzljivostOklopa <= 0)
                    {
                        popisMeta.Ukloni(meta);
                        meta = null;
                    }
                }
            }
        }
示例#13
0
        private void staviNadogradjeneDizajnove()
        {
            HashSet <Dizajn> nadogradiviOdPrije = new HashSet <Dizajn>();
            List <Dizajn>    noviDizajnovi      = new List <Dizajn>();

            foreach (DizajnZgrada dizajnZgrada in dizajnoviBrodova)
            {
                if (dizajnZgrada.dizajn.nadogradnja != null)
                {
                    nadogradiviOdPrije.Add(dizajnZgrada.dizajn);
                }
                else
                {
                    dizajnZgrada.dizajn.traziNadogradnju(efekti);
                    if (dizajnZgrada.dizajn.nadogradnja != null)
                    {
                        noviDizajnovi.Add(dizajnZgrada.dizajn.nadogradnja);
                    }
                }
            }

            foreach (Dizajn dizajn in nadogradiviOdPrije)
            {
                dizajn.traziNadogradnju(efekti);
            }

            foreach (Dizajn dizajn in noviDizajnovi)
            {
                dodajDizajn(dizajn);
            }

            HashSet <Dizajn>    uGradnji       = nadogradiDizajnoveUGradnji();
            List <DizajnZgrada> bezZastarjelih = new List <DizajnZgrada>();

            foreach (DizajnZgrada dizajnZgrada in dizajnoviBrodova)
            {
                Dizajn dizajn = dizajnZgrada.dizajn;
                if (dizajn.nadogradnja == null || dizajn.brojBrodova > 0 || uGradnji.Contains(dizajn))
                {
                    bezZastarjelih.Add(dizajnZgrada);
                }
            }

            dizajnoviBrodova = bezZastarjelih;
        }
示例#14
0
        public void reset(Igrac igrac)
        {
            oklop     = Oklop.OklopInfo.NajboljiOklop(igrac.efekti);
            potisnici = Potisnici.PotisnikInfo.NajboljiPotisnici(igrac.efekti);
            oruzja    = Oruzje.OruzjeInfo.DostupnaOruzja(igrac.efekti);
            senzor    = Senzor.SenzorInfo.NajboljiSenzor(igrac.efekti);
            trupovi   = Trup.TrupInfo.DostupniTrupovi(igrac.efekti);

            komponente = new Dictionary <Trup, Komponente>();
            foreach (Trup trup in trupovi)
            {
                komponente.Add(trup, new Komponente(igrac, trup));
            }

            _dizajn          = null;
            odabranTrup      = odabranTrup ?? trupovi[0];
            promjenjenDizajn = true;
        }
示例#15
0
        private void osvjeziNDstatistike()
        {
            Dizajn dizajn = dizajner.dizajn;
            Dictionary <string, ITekst> jezik = Postavke.Jezik[Kontekst.FormFlote];

            lblNDnosivost.Text      = jezik["lblNDnosivost"].tekst() + ": " + Fje.PrefiksFormater(dizajner.odabranTrup.Nosivost);
            lblNDoklop.Text         = jezik["lblNDoklop"].tekst() + " (" + dizajn.oklop.naziv + "): " + Fje.PrefiksFormater(dizajn.izdrzljivostOklopa);
            lblNDpokretljivost.Text = jezik["lblNDpokretljivost"].tekst() + " (" + dizajn.potisnici.naziv + "): " + Fje.PrefiksFormater(dizajn.pokretljivost);
            lblNDsenzori.Text       = jezik["lblNDsenzori"].tekst() + " (" + dizajn.senzor.naziv + "): " + Fje.PrefiksFormater(dizajn.snagaSenzora);
            picNDSlika.Image        = dizajner.odabranTrup.slika;
            lblNDcijena.Text        = jezik["lblNDcijena"].tekst() + ": " + Fje.PrefiksFormater(dizajn.cijena);

            if (dizajn.primarnoOruzje != null)
            {
                cbNDprimMisija.Items[cbNDprimMisija.SelectedIndex] = new TagTekst <Oruzje>(dizajn.primarnoOruzje.komponenta, Fje.PrefiksFormater(dizajn.primarnoOruzje.kolicina) + " x " + dizajn.primarnoOruzje.komponenta.naziv);
            }
            else if (cbNDprimMisija.SelectedItem != null)
            {
                TagTekst <Oruzje> tagOruzje = (TagTekst <Oruzje>)cbNDprimMisija.SelectedItem;
                if (tagOruzje.tag != null)
                {
                    tagOruzje.tekst = tagOruzje.tag.naziv;
                    cbNDprimMisija.Items[cbNDprimMisija.SelectedIndex] = tagOruzje;
                }
            }

            if (dizajn.sekundarnoOruzje != null)
            {
                cbNDsekMisija.Items[cbNDsekMisija.SelectedIndex] = new TagTekst <Oruzje>(dizajn.sekundarnoOruzje.komponenta, Fje.PrefiksFormater(dizajn.sekundarnoOruzje.kolicina) + " x " + dizajn.sekundarnoOruzje.komponenta.naziv);
            }
            else if (cbNDsekMisija.SelectedItem != null)
            {
                TagTekst <Oruzje> tagOruzje = (TagTekst <Oruzje>)cbNDsekMisija.SelectedItem;
                if (tagOruzje.tag != null)
                {
                    tagOruzje.tekst = tagOruzje.tag.naziv;
                    cbNDsekMisija.Items[cbNDsekMisija.SelectedIndex] = tagOruzje;
                }
            }

            lblNDslobodno.Text = jezik["lblNDslobodno"].tekst() + ": " + Fje.PrefiksFormater(dizajner.slobodnaNosivost);
            ispisiOpis(prethodniNDinfo, dizajn);
            provjeriDizajn();
        }
示例#16
0
        public void dodajBrod(Brod brod)
        {
            Dizajn dizajn = brod.dizajn;

            if (brodovi.ContainsKey(dizajn))
            {
                brodovi[dizajn].dodaj(brod);
            }
            else
            {
                brodovi.Add(dizajn, brod);
            }

            if (dizajn.primarnoOruzje != null)
            {
                misije.Add(dizajn.primarnoOruzje.komponenta.misija);
            }
            if (dizajn.sekundarnoOruzje != null)
            {
                misije.Add(dizajn.sekundarnoOruzje.komponenta.misija);
            }
        }
示例#17
0
        private void fazaPaljbe(Strana strana)
        {
            PopisMeta popisMeta = new PopisMeta();

            foreach (var drugaStrana in strane.Values)
            {
                if (drugaStrana != strana)
                {
                    foreach (var borac in drugaStrana.Borci)
                    {
                        if (borac.Vidljiv[strana.Igrac.id])
                        {
                            popisMeta.Dodaj(borac);
                        }
                    }
                }
            }

            foreach (Borac borac in strana.Borci)
            {
                Dizajn dizajn = borac.Dizajn;

                if (dizajn.primarnoOruzje != null && dizajn.primarnaMisija == Misija.Tip.DirektnoOruzje)
                {
                    paljba(strana, borac.Dizajn.primarnoOruzje, popisMeta, (int)Math.Round(borac.Pozicija));
                }

                if (dizajn.sekundarnoOruzje != null && dizajn.sekundarnaMisija == Misija.Tip.DirektnoOruzje)
                {
                    paljba(strana, borac.Dizajn.sekundarnoOruzje, popisMeta, (int)Math.Round(borac.Pozicija));
                }

                if (popisMeta.jePrazan())
                {
                    break;
                }
            }
        }
示例#18
0
        private void osvjeziStatistike()
        {
            Dizajn dizajn = dizajner.dizajn;

            btnPrimMisija.Text = (dizajn.primarnoOruzje != null)
                                ? Fje.PrefiksFormater(dizajn.primarnoOruzje.kolicina) + " x " + dizajn.primarnoOruzje.komponenta.naziv
                                : jezik["bezMisije"].tekst();

            btnSekMisija.Text = (dizajn.sekundarnoOruzje != null)
                                ? Fje.PrefiksFormater(dizajn.sekundarnoOruzje.kolicina) + " x " + dizajn.sekundarnoOruzje.komponenta.naziv
                                : jezik["bezMisije"].tekst();

            btnStit.Text = (dizajn.stit != null)
                                ? dizajn.stit.naziv
                                : jezik["bezStita"].tekst();

            lblOklop.Text         = jezik["lblNDoklop"].tekst() + ": " + Fje.PrefiksFormater(dizajn.izdrzljivostOklopa);
            lblOmetanje.Text      = jezik["lblOmetanje"].tekst() + ": " + dizajn.ometanje;
            lblPokretljivost.Text = jezik["lblNDpokretljivost"].tekst() + ": " + Fje.PrefiksFormater(dizajn.pokretljivost);
            lblPrikrivanje.Text   = jezik["lblPrikrivanje"].tekst() + ": " + dizajn.prikrivenost;
            lblReaktor.Text       = jezik["lblReaktor"].tekst() + ": " + (dizajn.koefSnageReaktora * 100).ToString("0") + "%";
            lblSenzori.Text       = jezik["lblNDsenzori"].tekst() + ": " + Fje.PrefiksFormater(dizajn.snagaSenzora);

            lblCijena.Text   = jezik["lblNDcijena"].tekst() + ": " + Fje.PrefiksFormater(dizajn.cijena);
            lblSlobodno.Text = jezik["lblNDslobodno"].tekst() + ": " + Fje.PrefiksFormater(dizajner.slobodnaNosivost) + " / " + Fje.PrefiksFormater(dizajn.nosivost);

            if (dizajner.dizajnMZPogon)
            {
                Dictionary <string, double> varijable = new Dictionary <string, double>();
                varijable.Add("BRZINA", dizajner.dizajn.MZbrzina);
                chMZpogon.Text = jezik["chNDMZpogon"].tekst(varijable);
            }
            else
            {
                chMZpogon.Text = jezik["chNDMZpogonNema"].tekst();
            }
        }
示例#19
0
 public Brod this[Dizajn dizajn]
 {
     get { return(brodovi[dizajn]); }
 }
示例#20
0
        public FormFlote(Igrac igrac)
        {
            InitializeComponent();
            btnNDZadrziInfo.Text                   = "";
            lstvDizajnovi.SmallImageList           = new ImageList();
            lstvDizajnovi.SmallImageList.ImageSize = new Size(60, 40);
            this.igrac = igrac;
            tabvCtrlFlote.TabPages.Remove(tabNoviDizajn);

            Dictionary <string, ITekst> jezik = Postavke.Jezik[Kontekst.FormFlote];

            nazivInfoStranice.Add(InfoStranice.MZPogon, jezik["infoMZPogon"].tekst());
            nazivInfoStranice.Add(InfoStranice.Pokretljivost, jezik["infoPokret"].tekst());
            nazivInfoStranice.Add(InfoStranice.PrimarnaMisija, jezik["infoPrimMisija"].tekst());
            nazivInfoStranice.Add(InfoStranice.Reaktor, jezik["infoReaktor"].tekst());
            nazivInfoStranice.Add(InfoStranice.SekundarnaMisija, jezik["infoSekMisija"].tekst());
            nazivInfoStranice.Add(InfoStranice.Senzori, jezik["infoSenzori"].tekst());
            nazivInfoStranice.Add(InfoStranice.SpecijalnaOprema, jezik["infoSpecOprema"].tekst());
            nazivInfoStranice.Add(InfoStranice.Stit, jezik["infoStit"].tekst());
            nazivInfoStranice.Add(InfoStranice.Taktika, jezik["infoTaktika"].tekst());

            #region Dizajnovi
            {
                foreach (DizajnZgrada dizajnZgrada in igrac.dizajnoviBrodova)
                {
                    Dizajn dizajn = dizajnZgrada.dizajn;
                    dodajDizajn(dizajn);
                }
            }
            #endregion

            #region Novi dizajn
            {
                dizajner = new Dizajner(igrac);

                foreach (Trup trup in dizajner.trupovi)
                {
                    cbNDvelicina.Items.Add(trup);
                }

                cbNDprimMisija.Items.Add(new TagTekst <Oruzje>(null, jezik["bezMisije"].tekst()));
                cbNDsekMisija.Items.Add(new TagTekst <Oruzje>(null, jezik["bezMisije"].tekst()));
                foreach (Misija.Tip misija in dizajner.oruzja.Keys)
                {
                    if (dizajner.oruzja[misija].Count == 0)
                    {
                        continue;
                    }
                    cbNDprimMisija.Items.Add(new TagTekst <Oruzje>(null, SeparatorNDGrupa));
                    cbNDsekMisija.Items.Add(new TagTekst <Oruzje>(null, SeparatorNDGrupa));

                    foreach (Oruzje oruzje in dizajner.oruzja[misija])
                    {
                        cbNDprimMisija.Items.Add(new TagTekst <Oruzje>(oruzje, oruzje.info.naziv));
                        cbNDsekMisija.Items.Add(new TagTekst <Oruzje>(oruzje, oruzje.info.naziv));
                    }
                }

                cbNDstit.Items.Add(new TagTekst <int>(-1, jezik["bezStita"].tekst()));
                int i = 0;
                foreach (Stit stit in dizajner.trupKomponente.stitovi)
                {
                    cbNDstit.Items.Add(new TagTekst <int>(i, stit.info.naziv));
                    i++;
                }

                /*foreach (Pozicije taktika in Pozicije.Taktike.Keys)
                 *      cbNDtaktika.Items.Add(new TagTekst<Pozicije>(taktika, taktika.naziv));
                 */
                i = 0;
                foreach (SpecijalnaOprema so in dizajner.trupKomponente.specijalnaOprema)
                {
                    ListViewItem item = new ListViewItem("");
                    item.SubItems.Add(so.naziv);
                    item.SubItems.Add(so.velicina.ToString());
                    item.Tag = i;
                    lstvNDspecOprema.Items.Add(item);
                    i++;
                }

                foreach (InfoStranice strana in Enum.GetValues(typeof(InfoStranice)))
                {
                    cbNDinfoStrana.Items.Add(new TagTekst <InfoStranice>(strana, nazivInfoStranice[strana]));
                }

                cbNDvelicina.SelectedIndex   = 0;
                cbNDprimMisija.SelectedIndex = 0;
                cbNDsekMisija.SelectedIndex  = 0;
                cbNDstit.SelectedIndex       = 0;
                //cbNDtaktika.SelectedIndex = 0;
                hscrUdioMisija.Value = 33;
            }
            #endregion

            btnSpremi.Text        = jezik["btnSpremi"].tekst();
            btnNoviDizajn.Text    = jezik["tabNoviDizajn"].tekst();
            btnUkloniDizajn.Text  = jezik["btnUkloniDizajn"].tekst();
            chBrojBrodova.Text    = jezik["chBrojBrodova"].tekst();
            chDizajnNaziv.Text    = jezik["chDizajnNaziv"].tekst();
            chSpecOpNaziv.Text    = jezik["chSpecOpNaziv"].tekst();
            chSpecOpVelicina.Text = jezik["chSpecOpVelicina"].tekst();
            //chNDMZpogon.Text = jezik["chNDMZpogon"].tekst();
            lblDizajn.Text     = jezik["lblDizajn"].tekst() + ":";
            lblNaziv.Text      = jezik["lblNaziv"].tekst() + ":";
            lblPrimMisija.Text = jezik["lblPrimMisija"].tekst() + ":";
            lblSekMisija.Text  = jezik["lblSekMisija"].tekst() + ":";
            lblSpecOprema.Text = jezik["lblSpecOprema"].tekst() + ":";
            lblStit.Text       = jezik["lblStit"].tekst() + ":";
            lblTaktika.Text    = jezik["lblTaktika"].tekst() + ":";
            lblUdioSek.Text    = jezik["lblUdioSek"].tekst() + ":";
            lblVelicina.Text   = jezik["lblVelicina"].tekst() + ":";
            tabDizajnovi.Text  = jezik["tabDizajnovi"].tekst();
            tabNoviDizajn.Text = jezik["tabNoviDizajn"].tekst();
            this.Text          = jezik["naslov"].tekst();

            this.Font = Postavke.FontSucelja(this.Font);
        }
示例#21
0
 private void ispisiOpis(InfoStranice stranica, Dizajn dizajn)
 {
     txtNDinfo.Lines = opis(stranica, dizajn).ToArray();
     prethodniNDinfo = stranica;
 }
示例#22
0
        public static IgraZvj Ucitaj(string ulaz)
        {
            PodaciCitac citac = PodaciCitac.Procitaj(ulaz);

            int brKruga       = citac.podatakInt(PohKrug);
            int trenutniIgrac = citac.podatakInt(PohTrenutniIgrac);
            int brIgraca      = citac.podatakInt(PohBrIgraca);

            Mapa         mapa   = Mapa.Ucitaj(citac[Mapa.PohranaTip]);
            List <Igrac> igraci = new List <Igrac>();

            for (int i = 0; i < brIgraca; i++)
            {
                Igrac igrac = Igrac.Ucitaj(citac[Igrac.PohranaTip + i], mapa);

                if (igrac.tip == Igrac.Tip.RACUNALO)
                {
                    igrac.Upravljac = new ORIKoordinator(igrac);
                }

                igraci.Add(igrac);
            }

            Dictionary <int, Zvijezda> zvijezdeID = new Dictionary <int, Zvijezda>();

            foreach (Zvijezda zvj in mapa.zvijezde)
            {
                zvijezdeID.Add(zvj.id, zvj);
            }

            Dictionary <int, Zgrada.ZgradaInfo> zgradeInfoID = new Dictionary <int, Zgrada.ZgradaInfo>(Zgrada.ZgradaInfoID);

            foreach (Igrac igrac in igraci)
            {
                foreach (DizajnZgrada dizajZgrada in igrac.dizajnoviBrodova)
                {
                    zgradeInfoID.Add(dizajZgrada.id, dizajZgrada);
                    Dizajn.ProvjeriId(dizajZgrada.dizajn);
                }
            }

            int brKolonija = citac.podatakInt(Kolonija.PohranaTip);

            for (int i = 0; i < brKolonija; i++)
            {
                Kolonija kolonija = Kolonija.Ucitaj(
                    citac[Kolonija.PohranaTip + i],
                    igraci,
                    zvijezdeID,
                    zgradeInfoID);
                kolonija.planet.kolonija = kolonija;
            }

            int brUprava = citac.podatakInt(ZvjezdanaUprava.PohranaTip);

            for (int i = 0; i < brUprava; i++)
            {
                ZvjezdanaUprava zvjUprava = ZvjezdanaUprava.Ucitaj(
                    citac[ZvjezdanaUprava.PohranaTip + i],
                    igraci,
                    zvijezdeID,
                    zgradeInfoID);
                zvjUprava.LokacijaZvj.uprave[zvjUprava.Igrac.id] = zvjUprava;
            }

            return(new IgraZvj(igraci, trenutniIgrac, mapa, brKruga));
        }
示例#23
0
 private string stavkaListe(Dizajn dizajn)
 {
     return(Fje.PrefiksFormater(poslaniBrodovi[dizajn]) + " x " + dizajn.ime);
 }
示例#24
0
 private int dizajnSort(Dizajn a, Dizajn b)
 {
     return(a.ime.CompareTo(b.ime));
 }
示例#25
0
 private List <string> opis(InfoStranice stranica, Dizajn dizajn)
 {
     return(opis(stranica, dizajn, true));
 }
示例#26
0
        private List <string> opis(InfoStranice stranica, Dizajn dizajn, bool cijene)
        {
            List <string> opis = new List <string>();
            Dictionary <string, ITekst> jezik = Postavke.Jezik[Kontekst.FormFlote];

            switch (stranica)
            {
            case InfoStranice.MZPogon:
                opis.Add(jezik["opisMZPogon"].tekst());
                opis.Add("");
                if (dizajn.MZPogon == null)
                {
                    opis.Add(jezik["opisNemaMZPogon"].tekst());
                }
                else
                {
                    opis.Add(dizajn.MZPogon.info.naziv);
                    if (dizajn.MZPogon.maxNivo > 0)
                    {
                        opis.Add(jezik["opisNivo"].tekst() + ": " + dizajn.MZPogon.nivo);
                    }
                    opis.Add(jezik["opisMZPogonBrz"].tekst() + ": " + dizajn.MZbrzina.ToString("0.###"));
                    if (cijene)
                    {
                        opis.Add(jezik["opisSnaga"].tekst() + ": " + Fje.PrefiksFormater(dizajn.MZPogon.snaga));
                        opis.Add(jezik["opisCijena"].tekst() + ": " + Fje.PrefiksFormater(dizajn.MZPogon.cijena));
                    }
                }
                break;

            case InfoStranice.Pokretljivost:
                opis.Add(jezik["opisPokret"].tekst());
                opis.Add("");
                opis.Add(dizajn.potisnici.naziv);
                if (dizajn.potisnici.maxNivo > 0)
                {
                    opis.Add(jezik["opisNivo"].tekst() + ": " + dizajn.reaktor.nivo);
                }
                opis.Add(jezik["opisTromost"].tekst() + ": " + dizajn.inercija);
                opis.Add(jezik["opisPokret"].tekst() + ": " + Fje.PrefiksFormater(dizajn.pokretljivost));
                break;

            case InfoStranice.PrimarnaMisija:
                opis = opisOruzja(true, dizajn.primarnoOruzje, cijene);
                break;

            case InfoStranice.Reaktor:
                opis.Add(jezik["opisReaktor"].tekst());
                opis.Add("");
                opis.Add(dizajn.reaktor.naziv);
                if (dizajn.reaktor.maxNivo > 0)
                {
                    opis.Add(jezik["opisNivo"].tekst() + ": " + dizajn.reaktor.nivo);
                }
                opis.Add(jezik["opisReaktorOp"].tekst() + ": " + Fje.PrefiksFormater(dizajn.opterecenjeReaktora));
                opis.Add(jezik["opisReaktorDost"].tekst() + ": " + Fje.PrefiksFormater(dizajn.snagaReaktora) + " (" + (dizajn.koefSnageReaktora * 100).ToString("0") + "%)");
                break;

            case InfoStranice.SekundarnaMisija:
                opis = opisOruzja(false, dizajn.sekundarnoOruzje, cijene);
                break;

            case InfoStranice.Senzori:
                opis.Add(jezik["opisSenzor"].tekst());
                opis.Add("");
                //opis.Add(Fje.PrefiksFormater(dizajn.brSenzora) + " x " + dizajn.senzor.naziv);
                if (dizajn.senzor.maxNivo > 0)
                {
                    opis.Add(jezik["opisNivo"].tekst() + ": " + dizajn.senzor.nivo);
                }
                opis.Add(jezik["opisSenzorSn"].tekst() + ": " + Fje.PrefiksFormater(dizajn.snagaSenzora));
                //opis.Add(jezik["opisSenzorOm"].tekst() + ": " + Fje.PrefiksFormater(dizajn.ometanje));
                //opis.Add(jezik["opisSenzorPrik"].tekst() + ": " + Fje.PrefiksFormater(dizajn.prikrivenost));
                break;

            case InfoStranice.SpecijalnaOprema:
                opis.Add(jezik["opisSpecOp"].tekst());
                opis.Add("");
                if (specijalnaOpremaZaOpis != null)
                {
                    if (dizajn.specijalnaOprema.ContainsKey(specijalnaOpremaZaOpis))
                    {
                        opis.Add(dizajn.specijalnaOprema[specijalnaOpremaZaOpis] + " x " + specijalnaOpremaZaOpis.naziv);
                    }
                    else
                    {
                        opis.Add(specijalnaOpremaZaOpis.naziv);
                    }
                    if (specijalnaOpremaZaOpis.maxNivo > 0)
                    {
                        opis.Add(jezik["opisNivo"].tekst() + ": " + specijalnaOpremaZaOpis.nivo);
                    }
                    opis.AddRange(specijalnaOpremaZaOpis.opisEfekata);
                    if (cijene)
                    {
                        opis.Add("");
                        opis.Add(jezik["opisVelicina"].tekst() + ": " + Fje.PrefiksFormater(specijalnaOpremaZaOpis.velicina));
                        opis.Add(jezik["opisCijena"].tekst() + ": " + Fje.PrefiksFormater(specijalnaOpremaZaOpis.cijena));
                    }
                }

                break;

            case InfoStranice.Stit:
                opis.Add(jezik["opisStit"].tekst());
                opis.Add("");
                if (dizajn.stit == null)
                {
                    opis.Add(jezik["opisNemaStit"].tekst());
                }
                else
                {
                    opis.Add(dizajn.stit.naziv);
                    if (dizajn.stit.maxNivo > 0)
                    {
                        opis.Add(jezik["opisNivo"].tekst() + ": " + dizajn.stit.nivo);
                    }
                    opis.Add(jezik["opisStitIzd"].tekst() + ": " + Fje.PrefiksFormater(dizajn.stit.izdrzljivost));
                    opis.Add(jezik["opisStitObn"].tekst() + ": " + Fje.PrefiksFormater(dizajn.stit.obnavljanje));
                    opis.Add(jezik["opisStitDeb"].tekst() + ": " + Fje.PrefiksFormater(dizajn.stit.debljina));
                    opis.Add(jezik["opisStitOm"].tekst() + ": " + dizajn.stit.ometanje.ToString("+0;-0"));
                    opis.Add(jezik["opisStitPrik"].tekst() + ": +" + Fje.PrefiksFormater(dizajn.stit.prikrivanje));
                    if (cijene)
                    {
                        opis.Add("");
                        opis.Add(jezik["opisSnaga"].tekst() + ": " + Fje.PrefiksFormater(dizajn.stit.snaga));
                        opis.Add(jezik["opisCijena"].tekst() + ": " + Fje.PrefiksFormater(dizajn.stit.cijena));
                    }
                }
                break;

            case InfoStranice.Taktika:
                Pozicije.EfektUdaljenosti efektUdaljenosti = Pozicije.EfektUdaljenosti.Izracunaj(dizajn.pozeljnaPozicija + Pozicije.UobicajenaPozicija);
                opis.Add(jezik["opisTaktika"].tekst());
                opis.Add("");
                opis.Add(Pozicije.Naziv(dizajn.pozeljnaPozicija));
                opis.Add(jezik["opisTaktikaPrec"].tekst() + ": x" + efektUdaljenosti.Preciznost);
                opis.Add(jezik["opisSenzorSn"].tekst() + ": x" + efektUdaljenosti.SnagaSenzora);
                break;
            }

            return(opis);
        }
示例#27
0
        public static Igrac Ucitaj(PodaciCitac ulaz, Mapa mapa)
        {
            Tip tip = Tip.COVJEK;

            if (ulaz.podatak(PohTip) != PohTipCovjek)
            {
                tip = Tip.RACUNALO;
            }

            int          id           = ulaz.podatakInt(PohId);
            string       ime          = ulaz.podatak(PohIme);
            Organizacija organizacija = Organizacija.lista[ulaz.podatakInt(PohOrganizacija)];
            Color        boja         = OdrediBoju(ulaz.podatak(PohBoja));

            foreach (Color color in BojeIgraca)
            {
                if (boja.R == color.R && boja.G == color.G && boja.B == color.B)
                {
                    boja = color;
                }
            }

            Zvijezda odabranaZvj   = OdrediOdabranuZvj(mapa, ulaz.podatak(PohPogledZvj));
            Planet   odabranPlanet = odabranaZvj.planeti[ulaz.podatakInt(PohPogledPlanet)];

            Dictionary <int, Zvijezda> zvijezdeID = new Dictionary <int, Zvijezda>();

            foreach (Zvijezda zvj in mapa.zvijezde)
            {
                zvijezdeID.Add(zvj.id, zvj);
            }

            int brDizajnova = ulaz.podatakInt(PohDizajn);
            List <DizajnZgrada> dizajnovi = new List <DizajnZgrada>();

            for (int i = 0; i < brDizajnova; i++)
            {
                Dizajn dizajn = Dizajn.Ucitaj(ulaz[PohDizajn + i]);
                dizajnovi.Add(new DizajnZgrada(dizajn));
            }

            int brTeh = ulaz.podatakInt(PohTehnologija);
            Dictionary <string, Tehnologija> tehnologije = new Dictionary <string, Tehnologija>();

            for (int i = 0; i < brTeh; i++)
            {
                Tehnologija teh = Tehnologija.Ucitaj(ulaz[PohTehnologija + i]);
                tehnologije.Add(teh.tip.kod, teh);
            }
            double koncPoenaRazvoja = ulaz.podatakDouble(PohTehRazKonc);

            int[] tmpIntovi = ulaz.podatakIntPolje(PohTehURazvoju);
            LinkedList <Tehnologija> tehURazvoju = new LinkedList <Tehnologija>();

            foreach (int tehId in tmpIntovi)
            {
                tehURazvoju.AddLast(tehnologije[Tehnologija.TechInfo.tehnologijeRazvoj[tehId].kod]);
            }

            tmpIntovi = ulaz.podatakIntPolje(PohTehUIstraz);
            LinkedList <Tehnologija> tehUIstraz = new LinkedList <Tehnologija>();

            foreach (int tehId in tmpIntovi)
            {
                tehUIstraz.AddLast(tehnologije[Tehnologija.TechInfo.tehnologijeIstrazivanje[tehId].kod]);
            }

            tmpIntovi = ulaz.podatakIntPolje(PohPosjeceneZvj);
            HashSet <Zvijezda> posjeceneZvijezde = new HashSet <Zvijezda>();

            foreach (int zvjId in tmpIntovi)
            {
                posjeceneZvijezde.Add(zvijezdeID[zvjId]);
            }

            Dictionary <int, Dizajn> dizajnID = new Dictionary <int, Dizajn>();

            foreach (DizajnZgrada dizajnZgrada in dizajnovi)
            {
                dizajnID.Add(dizajnZgrada.dizajn.id, dizajnZgrada.dizajn);
            }
            tmpIntovi = ulaz.podatakIntPolje(PohFloteStac);
            MyDictionary <Zvijezda, Flota> floteStacionarne = new MyDictionary <Zvijezda, Flota>();

            for (int i = 0; i < tmpIntovi.Length; i++)
            {
                floteStacionarne.Add(
                    zvijezdeID[tmpIntovi[i]],
                    Flota.Ucitaj(ulaz[PohFloteStac + i], dizajnID));
            }

            int brPokFlota = ulaz.podatakInt(PohFlotePokret);
            MySet <PokretnaFlota> flotePokretne = new MySet <PokretnaFlota>();

            for (int i = 0; i < brPokFlota; i++)
            {
                flotePokretne.Add(PokretnaFlota.Ucitaj(ulaz[PohFlotePokret + i], dizajnID, zvijezdeID));
            }

            int brPoruka = ulaz.podatakInt(PohPoruka);
            LinkedList <Poruka> poruke = new LinkedList <Poruka>();

            for (int i = 0; i < brPoruka; i++)
            {
                poruke.AddLast(Poruka.Ucitaj(ulaz[PohPoruka + i], zvijezdeID, dizajnID));
            }

            return(new Igrac(id, tip, ime, boja, organizacija, odabranaZvj, odabranPlanet,
                             poruke, dizajnovi, tehnologije, tehURazvoju, koncPoenaRazvoja, tehUIstraz,
                             posjeceneZvijezde, floteStacionarne, flotePokretne));
        }
示例#28
0
 public static Poruka NoviBrod(AGradiliste gradiliste, Dizajn dizajn, long kolicina)
 {
     return(new PorukaBrod(gradiliste.LokacijaZvj, dizajn, kolicina));
 }