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)); }
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); } } }