public Karte(Frontend frontend, D_Karte daten) { this.frontend = frontend; this.daten = daten; String pfadBild = "daten//felder"; String pfadRessource = "daten//ressourcen"; String pfadEinheit = "daten//einheiten"; String pfadStadt = "daten//stadt"; try { bildFeldGewaehlt = ImageIO.read(new File(pfadBild, "gewaehlt.png")); bildFeldMarkiert = ImageIO.read(new File(pfadBild, "markiert.png")); } catch (IOException e) { e.printStackTrace(); System.exit(-1); } dateienEinlesen(pfadBild, bildFeld); dateienEinlesen(pfadRessource, bildRessource); dateienEinlesen(pfadEinheit, bildEinheit); dateienEinlesen(pfadStadt, bildStadt); int spielfeldGroesse = frontend.getSpielfeldGroesse(); int zoomfaktor = frontend.getZoomfaktor(); int offset = spielfeldGroesse * zoomfaktor / 100; setLayout(null); setPreferredSize(new Dimension(getGroesseX() * offset, getGroesseY() * offset)); felder = new Feld[getGroesseX() + 1][getGroesseY() + 1]; for (int i = 1; i <= getGroesseX(); i++) { for (int j = 1; j <= getGroesseY(); j++) { Feld f = new Feld(frontend, i, j); felder[i][j] = f; add(f); } } }
public void zeichneFelder(ArrayList<D> daten) { if (daten == null) return; int spielfeldGroesse = frontend.getSpielfeldGroesse(); int zoomfaktor = frontend.getZoomfaktor(); int offset = spielfeldGroesse * zoomfaktor / 100; setPreferredSize(new Dimension(getGroesseX() * offset, getGroesseY() * offset)); for (D datenwert : daten) { if (datenwert instanceof D_Feld) { D_Feld datenFeld = (D_Feld) datenwert; int x = datenFeld.getInt("x"); int y = datenFeld.getInt("y"); Feld f = felder[x][y]; f.setBounds(new Rectangle(offset, offset)); f.setLocation((f.getPosX() - 1) * offset, (f.getPosY() - 1) * offset); f.setDaten(datenFeld); } else if (datenwert instanceof D_Einheit) { D_Einheit datenEinheit = (D_Einheit) datenwert; int x = datenEinheit.getInt("x"); int y = datenEinheit.getInt("y"); Feld f = felder[x][y]; f.setEinheit(datenEinheit); } else if (datenwert instanceof D_Stadt) { D_Stadt datenStadt = (D_Stadt) datenwert; int x = datenStadt.getInt("x"); int y = datenStadt.getInt("y"); Feld f = felder[x][y]; f.setStadt(datenStadt); } } for (int i = 1; i <= this.daten.getInt("x"); i++) { for (int j = 1; j <= this.daten.getInt("y"); j++) { felder[i][j].zeichnen(); } } }