package tiled.mapeditor.actions;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileNameExtensionFilter;
import tiled.core.Map;
import tiled.core.MapLayer;
import tiled.core.TileLayer;
import tiled.mapeditor.MapEditor;
import tiled.mapeditor.Resources;
import tiled.mapeditor.util.MinimapGenerator;
import tiled.util.MathUtils;
import tiled.util.TiledConfiguration;
public class MinimapAction extends AbstractAction {
private static final long serialVersionUID = 5078262158940560726L;
private final MapEditor editor;
public MinimapAction(MapEditor editor) {
super(Resources.getString("action.minimap.name"));
this.editor = editor;
}
public void actionPerformed(ActionEvent e) {
String startLocation =
TiledConfiguration.node("recent").get("file0", null);
JFileChooser chooser = new JFileChooser(startLocation);
chooser.setFileFilter(new FileNameExtensionFilter("PNG file", "png"));
int result = chooser.showSaveDialog(editor.getAppFrame());
if (result == JFileChooser.APPROVE_OPTION)
{
String selectedFile = chooser.getSelectedFile().getAbsolutePath();
Map map = editor.getCurrentMap();
if(null != map) {
generateMinimap(map, selectedFile);
}
}
}
private void generateMinimap(Map map, String selectedFile) {
int w = Math.max(256, MathUtils.getPowerOfTwoBiggerThan(map.getWidth()));
int h = Math.max(256, MathUtils.getPowerOfTwoBiggerThan(map.getHeight()));
MinimapGenerator minimap = new MinimapGenerator(w,h, 4/*harcoded that's bad!*/);
for(MapLayer layer: map.getLayerVector()) {
if(layer instanceof TileLayer) {
TileLayer tileLayer = (TileLayer)layer;
minimap.addLayer(tileLayer);
}
}
minimap.save(selectedFile);
}
}