Ejemplo n.º 1
0
 // tarkistaa esim onko vektori rakennuksen sisällä / tai menossa sisälle (?)
 public bool tarkistaPiste(Vektori vektori)
 {
     return false;
 }
Ejemplo n.º 2
0
        // Valmis osa: Siirtää rakennusten datan pelisysteemille nopeasti saataville -joel
        public void LataaData(double minlat, double minlon, double maxlat, double maxlon, int resox, int resoy, XMLData luettudata, bool testaus)
        {
            this.xreso = resox;
            this.yreso = resoy;
            // muuntaa xml-koordinaatiston sopivaan pelikoordinaatti muotoon
            offsetx = -minlon;
            offsety = -minlat;
            scalex = (1 / (maxlon-minlon)) * resox;
            scaley = (1 / (maxlat-minlat)) * resoy;

            System.Console.WriteLine("XML->Peli: Muunnetaan tiedot pelin sisälle...: rakennuksia yhteensä " + luettudata.annaRakennusLkm() );
            for (int i = 0; i < luettudata.annaRakennusLkm(); i++)
            {
                int tyyppi;
                XMLRakennus temprakennus = (luettudata.annaRakennus(i));
                ArrayList tempvektorit = new ArrayList();
                tyyppi = temprakennus.annaTyyppi();
                for (int k = 0; k < temprakennus.annaNoodiLkm(); k++)
                {
                    // etsitään rakennuksen noodirefensseille vastaavuudet noodikokoelmasta
                    double haettava = temprakennus.annaNoodiId(k);

                    bool find = false;
                    int l = 0;
                    while (!find)
                    {
                        XMLNoodi tempnoodi = luettudata.annaNoodi(l);
                        if (tempnoodi.getId() == haettava)
                        {
                            // tallennetaan rakennusten luokkaan tällaisella kaavalla, TODO: oikeanlainen muunnos jotta saadaan järkevät koordinaatit käyttöön
                            Vektori tempvektori = new Vektori((tempnoodi.getLon() + this.offsetx) *this.scalex, resoy-((tempnoodi.getLat() + this.offsety) *this.scaley));
                            tempvektorit.Add(tempvektori);

                            find = true;
                        }
                        l++;
                        if (l >= luettudata.annaNoodiLkm())
                            break;
                    }
                }
                if (tempvektorit.Count != 0)
                {
                    Rakennus uusirakennus = new Rakennus(temprakennus.annaNimi(), tempvektorit, tyyppi);
                    Rakennukset.Add(uusirakennus);
                }
            }

            System.Console.WriteLine("XML->Peli: Muunnetaan tiedot pelin sisälle..: vesiä yhteensä " + luettudata.annaVesiLkm());
            for (int i = 0; i < luettudata.annaVesiLkm(); i++)
            {
                XMLVesi tempvesi = (luettudata.annaVesi(i));
                ArrayList tempvektorit = new ArrayList();
                for (int k = 0; k < tempvesi.annaNoodiLkm(); k++)
                {
                    // etsitään rakennuksen noodirefensseille vastaavuudet noodikokoelmasta
                    double haettava = tempvesi.annaNoodiId(k);

                    bool find = false;
                    int l = 0;

                    while (!find)
                    {
                        XMLNoodi tempnoodi = luettudata.annaNoodi(l);
                        if (tempnoodi.getId() == haettava)
                        {
                            // tallennetaan rakennusten luokkaan tällaisella kaavalla, TODO: oikeanlainen muunnos jotta saadaan järkevät koordinaatit käyttöön
                            Vektori tempvektori = new Vektori((tempnoodi.getLon() + this.offsetx) *this.scalex, resoy-((tempnoodi.getLat() + this.offsety) *this.scaley));
                            tempvektorit.Add(tempvektori);

                            find = true;
                        }
                        l++;
                        if (l >= luettudata.annaNoodiLkm())
                            break;

                    }
                }
                if (tempvektorit.Count != 0)
                {
                    Vesi uusivesi = new Vesi("vesi", tempvektorit);
                    Vedet.Add(uusivesi);
                }
            }
            if (testaus == false)
            {
                System.Console.WriteLine("XML->Peli: Muunnetaan tiedot pelin sisälle..: teitä yhteensä " + luettudata.annaTieLkm());
                for (int i = 0; i < luettudata.annaTieLkm(); i++)
                {
                    XMLTie temptie = (luettudata.annaTie(i));
                    int tyyppi = 0;
                    ArrayList tempvektorit = new ArrayList();
                    for (int k = 0; k < temptie.annaNoodiLkm(); k++)
                    {
                        // etsitään rakennuksen noodirefensseille vastaavuudet noodikokoelmasta
                        double haettava = temptie.annaNoodiId(k);

                        bool find = false;
                        int l = 0;
                        while (!find)
                        {

                            XMLNoodi tempnoodi = luettudata.annaNoodi(l);

                            if (tempnoodi.getId() == haettava)
                            {
                                // tallennetaan rakennusten luokkaan tällaisella kaavalla, TODO: oikeanlainen muunnos jotta saadaan järkevät koordinaatit käyttöön
                                Vektori tempvektori = new Vektori((tempnoodi.getLon() + this.offsetx) * this.scalex, resoy - ((tempnoodi.getLat() + this.offsety) * this.scaley));
                                tempvektorit.Add(tempvektori);

                                find = true;
                            }
                            l++;
                            if (l >= luettudata.annaNoodiLkm())
                            {
                                break;
                            }

                        }
                    }

                    if (tempvektorit.Count != 0)
                    {
                        tyyppi = temptie.annaTyyppi();
                        Tie uusitie = new Tie(temptie.annaNimi(), tempvektorit, tyyppi);
                        Tiet.Add(uusitie);
                    }
                }
            }
            System.Console.WriteLine("XML->Peli: Muunnetaan tiedot pelin sisälle..: ruohoalueita yhteensä " + luettudata.annaRuohoLkm());
            for (int i = 0; i < luettudata.annaRuohoLkm(); i++)
            {
                XMLRuoho tempruoho = (luettudata.annaRuoho(i));
                int tyyppi = tempruoho.annaTyyppi();
                ArrayList tempvektorit = new ArrayList();
                for (int k = 0; k < tempruoho.annaNoodiLkm(); k++)
                {
                    // etsitään rakennuksen noodirefensseille vastaavuudet noodikokoelmasta
                    double haettava = tempruoho.annaNoodiId(k);

                    bool find = false;
                    int l = 0;
                    while (!find)
                    {

                        XMLNoodi tempnoodi = luettudata.annaNoodi(l);

                        if (tempnoodi.getId() == haettava)
                        {

                            // tallennetaan rakennusten luokkaan tällaisella kaavalla, TODO: oikeanlainen muunnos jotta saadaan järkevät koordinaatit käyttöön
                            Vektori tempvektori = new Vektori((tempnoodi.getLon() + this.offsetx) * this.scalex, resoy - ((tempnoodi.getLat() + this.offsety) * this.scaley));
                            tempvektorit.Add(tempvektori);

                            find = true;
                        }
                        l++;
                        if (l > luettudata.annaNoodiLkm() -1)
                        {

                            break;
                        }

                    }
                }

                if (tempvektorit.Count != 0)
                {

                    Ruoho uusiruoho = new Ruoho("ruoho", tempvektorit, tyyppi);
                    Ruohot.Add(uusiruoho);
                }
            }
        }