From: Kimmo R. <ki...@us...> - 2011-10-05 16:26:14
|
Update of /cvsroot/arianne/stendhal/src/games/stendhal/tools In directory vz-cvs-4.sog:/tmp/cvs-serv13462/src/games/stendhal/tools Modified Files: MapUpdater.java Log Message: Remove empty roof layers Index: MapUpdater.java =================================================================== RCS file: /cvsroot/arianne/stendhal/src/games/stendhal/tools/MapUpdater.java,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** MapUpdater.java 4 Oct 2011 22:41:15 -0000 1.15 --- MapUpdater.java 5 Oct 2011 16:26:12 -0000 1.16 *************** *** 1,5 **** /* $Id$ */ /*************************************************************************** ! * (C) Copyright 2003-2010 - Stendhal * *************************************************************************** *************************************************************************** --- 1,5 ---- /* $Id$ */ /*************************************************************************** ! * (C) Copyright 2003-2011 - Stendhal * *************************************************************************** *************************************************************************** *************** *** 24,27 **** --- 24,28 ---- import java.util.Iterator; import java.util.List; + import java.util.Vector; import org.apache.tools.ant.BuildException; *************** *** 39,43 **** /** ! * Fix maps by loading and saving thems. * * @author mtotz, miguel --- 40,44 ---- /** ! * Fix maps by loading and saving them. * * @author mtotz, miguel *************** *** 64,67 **** --- 65,72 ---- } + /** + * Remove unused tilesets. + * @param map + */ private void removeUnusedTilesets(final Map map) { for (final Iterator< ? > sets = map.getTileSets().iterator(); sets.hasNext();) { *************** *** 73,76 **** --- 78,110 ---- } } + + /** + * Remove unused roof layers. + * + * @param map + */ + private void removeUnusedLayers(final Map map) { + boolean modified = true; + while (modified) { + modified = false; + Vector<MapLayer> layers = map.getLayers(); + for (int i = 0; i < layers.size(); i++) { + MapLayer layer = layers.get(i); + if (layer.isEmpty()) { + // Client merges floor layers, and removing anything there + // prevents it doing that. Removing unused roof layers, however + // saves drawing effort. + if ("3_roof".equals(layer.getName()) + || "4_roof_add".equals(layer.getName())) { + map.removeLayer(i); + // Removing a layer can mess up the indices. Restart + // checking. + modified = true; + break; + } + } + } + } + } /** Converts the map files. *************** *** 83,86 **** --- 117,121 ---- final Map map = new TMXMapReader().readMap(filename); removeUnusedTilesets(map); + removeUnusedLayers(map); new TMXMapWriter().writeMap(map, filename); } *************** *** 127,130 **** converter.convert(args[0]); } - } --- 162,164 ---- |