protected void loadObjectGroup (TiledMap map, MapLayers parentLayers, Element element) { if (element.getName().equals("objectgroup")) { MapLayer layer = new MapLayer(); loadBasicLayerInfo(layer, element); Element properties = element.getChildByName("properties"); if (properties != null) { loadProperties(layer.getProperties(), properties); } for (Element objectElement : element.getChildrenByName("object")) { loadObject(map, layer, objectElement); } parentLayers.add(layer); } }
@Override public void render (int[] layers) { beginRender(); for (int layerIdx : layers) { MapLayer layer = map.getLayers().get(layerIdx); renderMapLayer(layer); } endRender(); }
private void stripUnusedTiles () { int mapWidth = map.getProperties().get("width", Integer.class); int mapHeight = map.getProperties().get("height", Integer.class); int numlayers = map.getLayers().getCount(); int bucketSize = mapWidth * mapHeight * numlayers; Iterator<MapLayer> it = map.getLayers().iterator(); while (it.hasNext()) { MapLayer layer = it.next(); // some layers can be plain MapLayer instances (ie. object groups), just ignore them if (layer instanceof TiledMapTileLayer) { TiledMapTileLayer tlayer = (TiledMapTileLayer)layer; for (int y = 0; y < mapHeight; ++y) { for (int x = 0; x < mapWidth; ++x) { if (tlayer.getCell(x, y) != null) { TiledMapTile tile = tlayer.getCell(x, y).getTile(); if (tile instanceof AnimatedTiledMapTile) { AnimatedTiledMapTile aTile = (AnimatedTiledMapTile)tile; for (StaticTiledMapTile t : aTile.getFrameTiles()) { addTile(t, bucketSize); } } // Adds non-animated tiles and the base animated tile addTile(tile, bucketSize); } } } } } }
/** @param type * @return array with all the layers matching type */ public <T extends MapLayer> Array<T> getByType (Class<T> type) { return getByType(type, new Array<T>()); }
/** @param type * @return array with all the layers matching type */ public <T extends MapLayer> Array<T> getByType (Class<T> type) { return getByType(type, new Array<T>()); }
@Override public void render (int[] layers) { beginRender(); for (int layerIdx : layers) { MapLayer layer = map.getLayers().get(layerIdx); renderMapLayer(layer); } endRender(); }
protected void loadObjectGroup (TiledMap map, MapLayers parentLayers, Element element) { if (element.getName().equals("objectgroup")) { MapLayer layer = new MapLayer(); loadBasicLayerInfo(layer, element); Element properties = element.getChildByName("properties"); if (properties != null) { loadProperties(layer.getProperties(), properties); } for (Element objectElement : element.getChildrenByName("object")) { loadObject(map, layer, objectElement); } parentLayers.add(layer); } }
protected void renderMapLayer (MapLayer layer) { if (!layer.isVisible()) return; if (layer instanceof MapGroupLayer) { MapLayers childLayers = ((MapGroupLayer)layer).getLayers(); for (int i = 0; i < childLayers.size(); i++) { MapLayer childLayer = childLayers.get(i); if (!childLayer.isVisible()) continue; renderMapLayer(childLayer); } } else { if (layer instanceof TiledMapTileLayer) { renderTileLayer((TiledMapTileLayer)layer); } else if (layer instanceof TiledMapImageLayer) { renderImageLayer((TiledMapImageLayer)layer); } else { renderObjects(layer); } } }
private void stripUnusedTiles () { int mapWidth = map.getProperties().get("width", Integer.class); int mapHeight = map.getProperties().get("height", Integer.class); int numlayers = map.getLayers().getCount(); int bucketSize = mapWidth * mapHeight * numlayers; Iterator<MapLayer> it = map.getLayers().iterator(); while (it.hasNext()) { MapLayer layer = it.next(); // some layers can be plain MapLayer instances (ie. object groups), just ignore them if (layer instanceof TiledMapTileLayer) { TiledMapTileLayer tlayer = (TiledMapTileLayer)layer; for (int y = 0; y < mapHeight; ++y) { for (int x = 0; x < mapWidth; ++x) { if (tlayer.getCell(x, y) != null) { TiledMapTile tile = tlayer.getCell(x, y).getTile(); if (tile instanceof AnimatedTiledMapTile) { AnimatedTiledMapTile aTile = (AnimatedTiledMapTile)tile; for (StaticTiledMapTile t : aTile.getFrameTiles()) { addTile(t, bucketSize); } } // Adds non-animated tiles and the base animated tile addTile(tile, bucketSize); } } } } } }
/** @param type * @return array with all the layers matching type */ public <T extends MapLayer> Array<T> getByType (Class<T> type) { return getByType(type, new Array<T>()); }
parentLayers.add(layer);