public void draw( GLEx g, int x, int y, int sx, int sy, int width, int height, int l, boolean lineByLine) { TMXLayer layer = (TMXLayer) layers.get(l); for (int ty = 0; ty < height; ty++) { layer.draw(g, x, y, sx, sy, width, ty, lineByLine, tileWidth, tileHeight); } }
public void draw( GLEx g, int x, int y, int sx, int sy, int width, int height, boolean lineByLine) { for (int ty = 0; ty < height; ty++) { for (int i = 0; i < layers.size(); i++) { TMXLayer layer = (TMXLayer) layers.get(i); layer.draw(g, x, y, sx, sy, width, ty, lineByLine, tileWidth, tileHeight); } } }
private void load(InputStream in, String tileSetsLocation) throws RuntimeException { screenRect = LSystem.screenRect; tilesLocation = tileSetsLocation; try { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setValidating(false); DocumentBuilder builder = factory.newDocumentBuilder(); builder.setEntityResolver( new EntityResolver() { public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException { return new InputSource(new ByteArrayInputStream(new byte[0])); } }); Document doc = builder.parse(in); Element docElement = doc.getDocumentElement(); String orient = docElement.getAttribute("orientation"); if (!orient.equals("orthogonal")) { throw new RuntimeException("Only orthogonal maps supported, found " + orient); } width = Integer.parseInt(docElement.getAttribute("width")); height = Integer.parseInt(docElement.getAttribute("height")); tileWidth = Integer.parseInt(docElement.getAttribute("tilewidth")); tileHeight = Integer.parseInt(docElement.getAttribute("tileheight")); Element propsElement = (Element) docElement.getElementsByTagName("properties").item(0); if (propsElement != null) { NodeList properties = propsElement.getElementsByTagName("property"); if (properties != null) { props = new TMXProperty(); for (int p = 0; p < properties.getLength(); p++) { Element propElement = (Element) properties.item(p); String name = propElement.getAttribute("name"); String value = propElement.getAttribute("value"); props.setProperty(name, value); } } } if (loadTileSets) { TMXTileSet tileSet = null; TMXTileSet lastSet = null; NodeList setNodes = docElement.getElementsByTagName("tileset"); for (int i = 0; i < setNodes.getLength(); i++) { Element current = (Element) setNodes.item(i); tileSet = new TMXTileSet(this, current, true); tileSet.index = i; if (lastSet != null) { lastSet.setLimit(tileSet.firstGID - 1); } lastSet = tileSet; tileSets.add(tileSet); } } NodeList layerNodes = docElement.getElementsByTagName("layer"); for (int i = 0; i < layerNodes.getLength(); i++) { Element current = (Element) layerNodes.item(i); TMXLayer layer = new TMXLayer(this, current); layer.index = i; layers.add(layer); } NodeList objectGroupNodes = docElement.getElementsByTagName("objectgroup"); for (int i = 0; i < objectGroupNodes.getLength(); i++) { Element current = (Element) objectGroupNodes.item(i); TMXTileGroup objectGroup = new TMXTileGroup(current); objectGroup.index = i; objectGroups.add(objectGroup); } defWidth = screenRect.getWidth() / tileWidth; defHeight = screenRect.getHeight() / tileHeight; } catch (Exception ex) { throw new RuntimeException("Failed to parse map", ex); } }
public void setTileId(int x, int y, int layerIndex, int tileid) { TMXLayer layer = (TMXLayer) layers.get(layerIndex); layer.setTileID(x, y, tileid); }
public int getTileId(int x, int y, int layerIndex) { TMXLayer layer = (TMXLayer) layers.get(layerIndex); return layer.getTileID(x, y); }