// tarkistaa esim onko vektori rakennuksen sisällä / tai menossa sisälle (?) public bool tarkistaPiste(Vektori vektori) { return false; }
// 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); } } }