Example #1
0
        public static Dizajn Ucitaj(PodaciCitac ulaz)
        {
            int    id  = ulaz.podatakInt(PohId);
            string ime = ulaz.podatak(PohIme);
            int    pozeljnaPozicija = ulaz.podatakInt(PohPozicija);

            UcitanaKomp komp = ucitajKomponentu(ulaz.podatak(PohTrup));
            Trup        trup = Trup.TrupInfo.IzIda(komp.idInfa).naciniKomponentu(komp.nivo);

            Zbir <Oruzje> primOruzje;

            if (ulaz.ima(PohPrimOruzje))
            {
                komp       = ucitajKomponentu(ulaz.podatak(PohPrimOruzje));
                primOruzje = new Zbir <Oruzje>(
                    Oruzje.OruzjeInfo.IzIda(komp.idInfa).naciniKomponentu(komp.nivo),
                    komp.kolicina);
            }
            else
            {
                primOruzje = new Zbir <Oruzje>(null, 0);
            }

            Zbir <Oruzje> sekOruzje;

            if (ulaz.ima(PohSekOruzje))
            {
                komp      = ucitajKomponentu(ulaz.podatak(PohSekOruzje));
                sekOruzje = new Zbir <Oruzje>(
                    Oruzje.OruzjeInfo.IzIda(komp.idInfa).naciniKomponentu(komp.nivo),
                    komp.kolicina);
            }
            else
            {
                sekOruzje = new Zbir <Oruzje>(null, 0);
            }

            double udio = ulaz.podatakDouble(PohUdioPrimOruzja);

            Stit stit = null;

            if (ulaz.ima(PohStit))
            {
                komp = ucitajKomponentu(ulaz.podatak(PohStit));
                stit = Stit.StitInfo.
                       IzIda(komp.idInfa).
                       naciniKomponentu(komp.nivo, trup.VelicinaStita);
            }

            MZPogon mzPogon = null;

            if (ulaz.ima(PohMZPogon))
            {
                komp    = ucitajKomponentu(ulaz.podatak(PohMZPogon));
                mzPogon = MZPogon.MZPogonInfo.
                          IzIda(komp.idInfa).
                          naciniKomponentu(komp.nivo, trup.VelicinaMZPogona);
            }

            komp = ucitajKomponentu(ulaz.podatak(PohOklop));
            Oklop oklop = Oklop.OklopInfo.IzIda(komp.idInfa).naciniKomponentu(komp.nivo);

            komp = ucitajKomponentu(ulaz.podatak(PohSenzor));
            Senzor senzor = Senzor.SenzorInfo.IzIda(komp.idInfa).naciniKomponentu(komp.nivo);

            komp = ucitajKomponentu(ulaz.podatak(PohPotisnici));
            Potisnici potisnici = Potisnici.PotisnikInfo.IzIda(komp.idInfa).naciniKomponentu(komp.nivo);

            komp = ucitajKomponentu(ulaz.podatak(PohReaktor));
            Reaktor reaktor = Reaktor.ReaktorInfo.IzIda(komp.idInfa).naciniKomponentu(komp.nivo, trup.VelicinaReaktora);

            int brSpecOp = ulaz.podatakInt(PohSpecOp);
            Dictionary <SpecijalnaOprema, int> specOprema = new Dictionary <SpecijalnaOprema, int>();

            for (int i = 0; i < brSpecOp; i++)
            {
                komp = ucitajKomponentu(ulaz.podatak(PohSpecOp + i));
                SpecijalnaOprema so = SpecijalnaOprema.SpecijalnaOpremaInfo.
                                      IzIda(komp.idInfa).
                                      naciniKomponentu(komp.nivo, trup.velicina);

                specOprema.Add(so, komp.kolicina);
            }

            return(new Dizajn(id, ime, trup, primOruzje.komponenta, sekOruzje.komponenta,
                              udio, oklop, stit, specOprema, senzor, potisnici, mzPogon, reaktor,
                              pozeljnaPozicija));
        }
Example #2
0
        public void traziNadogradnju(Dictionary <string, double> varijable)
        {
            if (nadogradnja != null)
            {
                if (nadogradnja.nadogradnja != null)
                {
                    nadogradnja = nadogradnja.nadogradnja;
                }
            }
            else
            {
                bool nadogradiv = false;

                Trup      trup      = this.trup.info.naciniKomponentu(varijable);
                Oklop     oklop     = this.oklop.info.naciniKomponentu(varijable);;
                Senzor    senzor    = this.senzor.info.naciniKomponentu(varijable);
                Potisnici potisnici = this.potisnici.info.naciniKomponentu(varijable);
                Reaktor   reaktor   = this.reaktor.info.naciniKomponentu(varijable, trup.VelicinaReaktora);

                nadogradiv |= trup.nivo > this.trup.nivo;
                nadogradiv |= oklop.nivo > this.oklop.nivo;
                nadogradiv |= senzor.nivo > this.senzor.nivo;
                nadogradiv |= potisnici.nivo > this.potisnici.nivo;
                nadogradiv |= reaktor.nivo > this.reaktor.nivo;

                Oruzje primarnoOruzje = null;
                if (this.primarnoOruzje != null)
                {
                    primarnoOruzje = this.primarnoOruzje.komponenta.info.naciniKomponentu(varijable);
                    nadogradiv    |= primarnoOruzje.nivo > this.primarnoOruzje.komponenta.nivo;
                }

                Oruzje sekundarnoOruzje = null;
                if (this.sekundarnoOruzje != null)
                {
                    sekundarnoOruzje = this.sekundarnoOruzje.komponenta.info.naciniKomponentu(varijable);
                    nadogradiv      |= sekundarnoOruzje.nivo > this.sekundarnoOruzje.komponenta.nivo;
                }

                Stit stit = null;
                if (this.stit != null)
                {
                    stit        = this.stit.info.naciniKomponentu(varijable, trup.VelicinaStita);
                    nadogradiv |= stit.nivo > this.stit.nivo;
                }

                MZPogon MZPogon = null;
                if (this.MZPogon != null)
                {
                    MZPogon     = this.MZPogon.info.naciniKomponentu(varijable, trup.VelicinaMZPogona);
                    nadogradiv |= MZPogon.nivo > this.MZPogon.nivo;
                }

                Dictionary <SpecijalnaOprema, int> specijalnaOprema = new Dictionary <SpecijalnaOprema, int>();
                foreach (KeyValuePair <SpecijalnaOprema, int> par in this.specijalnaOprema)
                {
                    SpecijalnaOprema so = par.Key.info.naciniKomponentu(varijable, trup.velicina);
                    specijalnaOprema.Add(so, par.Value);
                    nadogradiv |= so.nivo > par.Key.nivo;
                }

                if (nadogradiv)
                {
                    nadogradnja = new Dizajn(ime, trup, primarnoOruzje, sekundarnoOruzje,
                                             udioPrimarneMisije, oklop, stit, specijalnaOprema, senzor, potisnici,
                                             MZPogon, reaktor, pozeljnaPozicija);
                }
            }
        }