示例#1
0
        public static PokretnaFlota Ucitaj(PodaciCitac ulaz, Dictionary <int, Dizajn> dizajnovi, Dictionary <int, Zvijezda> zvijezdeID)
        {
            int           id             = ulaz.podatakInt(PohId);
            double        x              = ulaz.podatakDouble(PohX);
            double        y              = ulaz.podatakDouble(PohY);
            int           polaznaZvjId   = ulaz.podatakInt(PohPolaznaZvj);
            int           odredisnaZvjId = ulaz.podatakInt(PohOdredisnaZvj);
            PokretnaFlota flota          = new PokretnaFlota(
                zvijezdeID[polaznaZvjId],
                zvijezdeID[odredisnaZvjId],
                id, x, y);

            int brBrodova = ulaz.podatakInt(Brod.PohranaTip);

            for (int i = 0; i < brBrodova; i++)
            {
                flota.dodajBrod(Brod.Ucitaj(ulaz[Brod.PohranaTip + i], dizajnovi));
            }

            List <Kolonizacija> kolonizacije = new List <Kolonizacija>();

            for (int i = 0; i < ulaz.podatakInt(Kolonizacija.PohranaTip); i++)
            {
                kolonizacije.Add(Kolonizacija.Ucitaj(
                                     ulaz[Kolonizacija.PohranaTip + i],
                                     dizajnovi,
                                     flota));
            }
            flota.kolonizacije.AddRange(kolonizacije);

            return(flota);
        }
示例#2
0
        public static Zgrada Ucitaj(PodaciCitac ulaz)
        {
            ZgradaInfo tip      = ZgradaInfoID[ulaz.podatakInt(PohTip)];
            long       kolicina = ulaz.podatakLong(PohKolicina);

            return(new Zgrada(tip, kolicina));
        }
示例#3
0
        public static ZvjezdanaUprava Ucitaj(PodaciCitac ulaz, List <Igrac> igraci,
                                             Dictionary <int, Zvijezda> zvijezde,
                                             Dictionary <int, Zgrada.ZgradaInfo> zgradeInfoID)
        {
            Igrac    igrac    = igraci[ulaz.podatakInt(PohIgrac)];
            Zvijezda zvijezda = zvijezde[ulaz.podatakInt(PohZvijezda)];
            double   udioInd  = ulaz.podatakDouble(PohGradUdio);
            Dictionary <string, double> ostatakGradnje = ulaz.podatakDoubleRjecnik(PohGradOst);

            int           brZgrada = ulaz.podatakInt(PohZgrada);
            List <Zgrada> zgrade   = new List <Zgrada>();

            for (int i = 0; i < brZgrada; i++)
            {
                zgrade.Add(Zgrada.Ucitaj(ulaz[PohZgrada + i]));
            }

            int[] zgradeID = ulaz.podatakIntPolje(PohGrad);
            LinkedList <Zgrada.ZgradaInfo> redCivilneGradnje = new LinkedList <Zgrada.ZgradaInfo>();

            for (int i = 0; i < zgradeID.Length; i++)
            {
                redCivilneGradnje.AddLast(zgradeInfoID[zgradeID[i]]);
            }

            return(new ZvjezdanaUprava(zvijezda, igrac, ostatakGradnje, udioInd,
                                       redCivilneGradnje, zgrade));
        }
示例#4
0
 public static Kolonizacija Ucitaj(PodaciCitac ulaz, Dictionary <int, Dizajn> dizajnovi, Flota flota)
 {
     return(new Kolonizacija(
                ulaz.podatakInt(PohPlanet),
                flota[dizajnovi[ulaz.podatakInt(PohBrodovi)]],
                ulaz.podatakLong(PohBrBrodova)));
 }
示例#5
0
        public static Flota Ucitaj(PodaciCitac ulaz, Dictionary <int, Dizajn> dizajnovi)
        {
            int    id    = ulaz.podatakInt(PohId);
            double x     = ulaz.podatakDouble(PohX);
            double y     = ulaz.podatakDouble(PohY);
            Flota  flota = new Flota(x, y, id);

            int brBrodova = ulaz.podatakInt(Brod.PohranaTip);

            for (int i = 0; i < brBrodova; i++)
            {
                flota.dodajBrod(Brod.Ucitaj(ulaz[Brod.PohranaTip + i], dizajnovi));
            }

            List <Kolonizacija> kolonizacije = new List <Kolonizacija>();

            for (int i = 0; i < ulaz.podatakInt(Kolonizacija.PohranaTip); i++)
            {
                kolonizacije.Add(Kolonizacija.Ucitaj(
                                     ulaz[Kolonizacija.PohranaTip + i],
                                     dizajnovi,
                                     flota));
            }
            flota.kolonizacije.AddRange(kolonizacije);

            return(flota);
        }
示例#6
0
        public static Kolonija Ucitaj(PodaciCitac ulaz, List <Igrac> igraci,
                                      Dictionary <int, Zvijezda> zvijezde,
                                      Dictionary <int, Zgrada.ZgradaInfo> zgradeInfoID)
        {
            Igrac  igrac  = igraci[ulaz.podatakInt(PohIgrac)];
            Planet planet = zvijezde[ulaz.podatakInt(PohZvijezda)].
                            planeti[ulaz.podatakInt(PohPlanet)];
            long   populacija  = ulaz.podatakLong(PohPopulacija);
            long   radnaMjesta = ulaz.podatakLong(PohRadnaMj);
            double civilnaInd  = ulaz.podatakDouble(PohCivGradUdio);
            Dictionary <string, double> ostatakGradnje = ulaz.podatakDoubleRjecnik(PohCivGradOst);

            int           brZgrada = ulaz.podatakInt(PohZgrada);
            List <Zgrada> zgrade   = new List <Zgrada>();

            for (int i = 0; i < brZgrada; i++)
            {
                zgrade.Add(Zgrada.Ucitaj(ulaz[PohZgrada + i]));
            }

            int[] zgradeID = ulaz.podatakIntPolje(PohCivGrad);
            LinkedList <Zgrada.ZgradaInfo> redCivilneGradnje = new LinkedList <Zgrada.ZgradaInfo>();

            for (int i = 0; i < zgradeID.Length; i++)
            {
                redCivilneGradnje.AddLast(zgradeInfoID[zgradeID[i]]);
            }

            return(new Kolonija(igrac, planet, populacija, radnaMjesta, civilnaInd,
                                zgrade, ostatakGradnje, redCivilneGradnje));
        }
示例#7
0
        public static Brod Ucitaj(PodaciCitac ulaz, Dictionary <int, Dizajn> dizajnovi)
        {
            Dizajn dizajn             = dizajnovi[ulaz.podatakInt(PohDizajn)];
            long   kolicina           = ulaz.podatakLong(PohKolicina);
            double izdrzljivostOklopa = ulaz.podatakDouble(PohIzdrzljivost);

            return(new Brod(dizajn, kolicina, izdrzljivostOklopa));
        }
示例#8
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));
        }
        public static Poruka Ucitaj(PodaciCitac ulaz, Dictionary <int, Zvijezda> zvijezdeID)
        {
            string[] izvor    = ulaz.podatak(PohIzvor).Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
            Zvijezda zvj      = zvijezdeID[int.Parse(izvor[0])];
            int      zgradaId = ulaz.podatakInt(PohZgrada);

            return(new PorukaZgradaSustav(zvj, Zgrada.ZgradaInfoID[zgradaId]));
        }
示例#10
0
        public static Poruka Ucitaj(PodaciCitac ulaz, Dictionary <int, Zvijezda> zvijezdeID)
        {
            string[] izvor    = ulaz.podatak(PohIzvor).Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
            Zvijezda zvj      = zvijezdeID[int.Parse(izvor[0])];
            int      planetId = int.Parse(izvor[1]);

            return(new PorukaKolonija(zvj.planeti[planetId]));
        }
示例#11
0
        public static Planet Ucitaj(PodaciCitac ulaz, Zvijezda zvijezda, int pozicija)
        {
            Tip tip      = (Tip)ulaz.podatakInt(PohTip);
            int velicina = ulaz.podatakInt(PohVelicina);

            double kvalitetaAtmosfere = ulaz.podatakDouble(PohAtmKval);
            double gustocaAtmosfere   = ulaz.podatakDouble(PohAtmGust);
            double mineraliPovrsinski = ulaz.podatakDouble(PohMineralPov);
            double mineraliDubinski   = ulaz.podatakDouble(PohMineralDub);

            return(new Planet(tip, pozicija, zvijezda, velicina, kvalitetaAtmosfere,
                              gustocaAtmosfere, mineraliPovrsinski, mineraliDubinski));
        }
示例#12
0
        public static Poruka Ucitaj(PodaciCitac ulaz)
        {
            string[] nivoITip = ulaz.podatak(PohNivo).Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
            long     nivo     = long.Parse(nivoITip[0]);
            int      tehnoId  = ulaz.podatakInt(PohTehno);

            if (nivoITip[1] == Istrazivanje)
            {
                return(new PorukaTehnologija(Tehnologija.TechInfo.tehnologijeIstrazivanje[tehnoId], nivo, true));
            }
            else
            {
                return(new PorukaTehnologija(Tehnologija.TechInfo.tehnologijeRazvoj[tehnoId], nivo, false));
            }
        }
示例#13
0
        public static Zvijezda Ucitaj(PodaciCitac ulaz, int id)
        {
            int    tip      = ulaz.podatakInt(PohTip);
            double x        = ulaz.podatakDouble(PohX);
            double y        = ulaz.podatakDouble(PohY);
            double velicina = ulaz.podatakDouble(PohVelicina);
            string ime      = ulaz.podatak(PohIme);

            Zvijezda zvj = new Zvijezda(id, tip, x, y, velicina, ime);

            if (tip >= 0)
            {
                for (int i = 0; i < Mapa.GraditeljMape.BR_PLANETA; i++)
                {
                    zvj.planeti.Add(Planet.Ucitaj(ulaz[Planet.PohranaTip + i], zvj, i));
                }
            }

            return(zvj);
        }
示例#14
0
        public static Mapa Ucitaj(PodaciCitac ulaz)
        {
            int             brZvjezda     = ulaz.podatakInt(PohBrZijezda);
            List <Zvijezda> zvijezde      = new List <Zvijezda>();
            List <int[]>    tmpCrvotocine = new List <int[]>();

            for (int i = 0; i < brZvjezda; i++)
            {
                zvijezde.Add(Zvijezda.Ucitaj(ulaz[Zvijezda.PohranaTip + i], i));
                tmpCrvotocine.Add(Zvijezda.UcitajCrvotocine(ulaz[Zvijezda.PohranaTip + i]));
            }
            for (int i = 0; i < brZvjezda; i++)
            {
                foreach (int veza in tmpCrvotocine[i])
                {
                    zvijezde[i].crvotocine.Add(zvijezde[veza]);
                }
            }

            return(new Mapa(zvijezde));
        }
示例#15
0
        public static Tehnologija Ucitaj(PodaciCitac ulaz)
        {
            Kategorija kategorija = (Kategorija)ulaz.podatakInt(PohKategorija);

            TechInfo info = null;
            int      id   = ulaz.podatakInt(PohId);

            if (kategorija == Kategorija.ISTRAZIVANJE)
            {
                info = TechInfo.tehnologijeIstrazivanje[id];
            }
            else
            {
                info = TechInfo.tehnologijeRazvoj[id];
            }

            long nivo    = ulaz.podatakLong(PohNivo);
            long ulozeno = ulaz.podatakLong(PohUlozeno);

            return(new Tehnologija(info, nivo, ulozeno));
        }
示例#16
0
        public static Poruka Ucitaj(PodaciCitac ulaz, Dictionary <int, Zvijezda> zvijezdeID, Dictionary <int, Dizajn> dizajnID)
        {
            int tip = ulaz.podatakInt(PohTip);

            switch ((Tip)tip)
            {
            case Tip.Tehnologija:
                return(PorukaTehnologija.Ucitaj(ulaz));

            case Tip.Kolonija:
                return(PorukaKolonija.Ucitaj(ulaz, zvijezdeID));

            case Tip.Brod:
                return(PorukaBrod.Ucitaj(ulaz, zvijezdeID, dizajnID));

            case Tip.ZgradaKolonija:
                return(PorukaZgradaKolonija.Ucitaj(ulaz, zvijezdeID));

            default:
                throw new ArgumentException();
            }
        }
示例#17
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));
        }
示例#18
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));
        }
示例#19
0
 public static int[] UcitajCrvotocine(PodaciCitac ulaz)
 {
     return(ulaz.podatakIntPolje(PohCrvotocine));
 }
示例#20
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));
        }