Search in sources :

Example 6 with Map

use of de.gurkenlabs.litiengine.environment.tilemap.xml.Map in project litiengine by gurkenlabs.

the class TmxMapLoader method loadMap.

@Override
public IMap loadMap(final String path) {
    final Map map = XmlUtilities.readFromFile(Map.class, path);
    if (map == null) {
        return null;
    }
    String basePath = FileUtilities.getParentDirPath(path);
    for (Tileset tilesets : map.getRawTileSets()) {
        tilesets.loadFromSource(basePath);
    }
    // by default the map is named by the source file
    String name = path;
    final int pos = name.lastIndexOf('.');
    if (pos > 0) {
        name = name.substring(0, pos);
    }
    int lastBackslash = name.lastIndexOf('/');
    if (lastBackslash != -1) {
        name = name.substring(lastBackslash + 1, name.length());
    } else {
        int lastForwardSlash = name.lastIndexOf('\\');
        if (lastForwardSlash != -1) {
            name = name.substring(lastForwardSlash + 1, name.length());
        }
    }
    map.setFileName(name);
    map.setPath(path);
    map.updateTileTerrain();
    return map;
}
Also used : Map(de.gurkenlabs.litiengine.environment.tilemap.xml.Map) Tileset(de.gurkenlabs.litiengine.environment.tilemap.xml.Tileset)

Example 7 with Map

use of de.gurkenlabs.litiengine.environment.tilemap.xml.Map in project litiengine by gurkenlabs.

the class Program method initToolBar.

private static JToolBar initToolBar() {
    // create basic icon toolbar
    JToolBar basicMenu = new JToolBar();
    JButton cr = new JButton();
    cr.setIcon(new ImageIcon(Resources.getImage("button-create.png")));
    basicMenu.add(cr);
    cr.addActionListener(a -> EditorScreen.instance().create());
    JButton op = new JButton();
    op.setIcon(new ImageIcon(Resources.getImage("button-load.png")));
    basicMenu.add(op);
    op.addActionListener(a -> EditorScreen.instance().load());
    JButton sv = new JButton();
    sv.setIcon(new ImageIcon(Resources.getImage("button-save.png")));
    basicMenu.add(sv);
    sv.addActionListener(a -> EditorScreen.instance().save(false));
    basicMenu.addSeparator();
    JButton undo = new JButton();
    undo.setIcon(new ImageIcon(Resources.getImage("button-undo.png")));
    basicMenu.add(undo);
    undo.addActionListener(a -> UndoManager.instance().undo());
    JButton redo = new JButton();
    redo.setIcon(new ImageIcon(Resources.getImage("button-redo.png")));
    basicMenu.add(redo);
    redo.addActionListener(a -> UndoManager.instance().redo());
    undo.setEnabled(false);
    redo.setEnabled(false);
    basicMenu.addSeparator();
    JToggleButton place = new JToggleButton();
    place.setIcon(new ImageIcon(Resources.getImage("button-placeobject.png")));
    basicMenu.add(place);
    JToggleButton ed = new JToggleButton();
    ed.setIcon(new ImageIcon(Resources.getImage("button-edit.png")));
    ed.setSelected(true);
    JToggleButton mv = new JToggleButton();
    mv.setIcon(new ImageIcon(Resources.getImage("button-move.png")));
    mv.setEnabled(false);
    ed.addActionListener(a -> {
        ed.setSelected(true);
        place.setSelected(false);
        mv.setSelected(false);
        isChanging = true;
        EditorScreen.instance().getMapComponent().setEditMode(MapComponent.EDITMODE_EDIT);
        isChanging = false;
        Game.getScreenManager().getRenderComponent().setCursor(CURSOR, 0, 0);
    });
    basicMenu.add(ed);
    basicMenu.add(mv);
    place.addActionListener(a -> {
        place.setSelected(true);
        ed.setSelected(false);
        mv.setSelected(false);
        isChanging = true;
        EditorScreen.instance().getMapComponent().setEditMode(MapComponent.EDITMODE_CREATE);
        isChanging = false;
    });
    mv.addActionListener(a -> {
        mv.setSelected(true);
        ed.setSelected(false);
        place.setSelected(false);
        isChanging = true;
        EditorScreen.instance().getMapComponent().setEditMode(MapComponent.EDITMODE_MOVE);
        isChanging = false;
        Game.getScreenManager().getRenderComponent().setCursor(CURSOR_MOVE, 0, 0);
    });
    EditorScreen.instance().getMapComponent().onEditModeChanged(i -> {
        if (isChanging) {
            return;
        }
        if (i == MapComponent.EDITMODE_CREATE) {
            ed.setSelected(false);
            mv.setSelected(false);
            place.setSelected(true);
        }
        if (i == MapComponent.EDITMODE_EDIT) {
            place.setSelected(false);
            mv.setSelected(false);
            ed.setSelected(true);
            Game.getScreenManager().getRenderComponent().setCursor(CURSOR, 0, 0);
        }
        if (i == MapComponent.EDITMODE_MOVE) {
            ed.setSelected(false);
            place.setSelected(false);
            mv.setSelected(true);
            Game.getScreenManager().getRenderComponent().setCursor(CURSOR_MOVE, 0, 0);
        }
    });
    JButton del = new JButton();
    del.setIcon(new ImageIcon(Resources.getImage("button-delete.png")));
    basicMenu.add(del);
    del.setEnabled(false);
    del.addActionListener(a -> EditorScreen.instance().getMapComponent().delete());
    // copy
    JButton cop = new JButton();
    cop.setIcon(new ImageIcon(Resources.getImage("button-copy.png")));
    basicMenu.add(cop);
    cop.setEnabled(false);
    ActionListener copyAction = a -> EditorScreen.instance().getMapComponent().copy();
    cop.addActionListener(copyAction);
    cop.getModel().setMnemonic('C');
    KeyStroke keyStroke = KeyStroke.getKeyStroke('C', Event.CTRL_MASK, false);
    cop.registerKeyboardAction(copyAction, keyStroke, JComponent.WHEN_IN_FOCUSED_WINDOW);
    // paste
    JButton paste = new JButton();
    paste.setIcon(new ImageIcon(Resources.getImage("button-paste.png")));
    basicMenu.add(paste);
    ActionListener pasteAction = a -> EditorScreen.instance().getMapComponent().paste();
    paste.addActionListener(pasteAction);
    paste.getModel().setMnemonic('V');
    KeyStroke keyStrokePaste = KeyStroke.getKeyStroke('V', Event.CTRL_MASK, false);
    paste.registerKeyboardAction(pasteAction, keyStrokePaste, JComponent.WHEN_IN_FOCUSED_WINDOW);
    // cut
    JButton cut = new JButton();
    cut.setIcon(new ImageIcon(Resources.getImage("button-cut.png")));
    basicMenu.add(cut);
    cut.setEnabled(false);
    ActionListener cutAction = a -> EditorScreen.instance().getMapComponent().cut();
    cut.addActionListener(cutAction);
    cut.getModel().setMnemonic('X');
    KeyStroke keyStrokeCut = KeyStroke.getKeyStroke('X', Event.CTRL_MASK, false);
    cut.registerKeyboardAction(cutAction, keyStrokeCut, JComponent.WHEN_IN_FOCUSED_WINDOW);
    EditorScreen.instance().getMapComponent().onFocusChanged(mo -> {
        if (mv.isSelected()) {
            mv.setSelected(false);
            ed.setSelected(true);
        }
        mv.setEnabled(mo != null);
        del.setEnabled(mo != null);
        cop.setEnabled(mo != null);
        cut.setEnabled(mo != null);
        undo.setEnabled(UndoManager.instance().canUndo());
        redo.setEnabled(UndoManager.instance().canRedo());
        paste.setEnabled(EditorScreen.instance().getMapComponent().getCopiedBlueprint() != null);
    });
    EditorScreen.instance().getMapComponent().onEditModeChanged(mode -> paste.setEnabled(EditorScreen.instance().getMapComponent().getCopiedBlueprint() != null));
    UndoManager.onUndoStackChanged(manager -> {
        EditorScreen.instance().getMapComponent().updateTransformControls();
        undo.setEnabled(manager.canUndo());
        redo.setEnabled(manager.canRedo());
    });
    basicMenu.addSeparator();
    JButton colorButton = new JButton();
    colorButton.setIcon(new ImageIcon(Resources.getImage("button-color.png")));
    colorButton.setEnabled(false);
    JTextField colorText = new JTextField();
    colorText.setEnabled(false);
    colorText.setMaximumSize(new Dimension(50, 50));
    JSpinner spinnerAmbientAlpha = new JSpinner();
    spinnerAmbientAlpha.setModel(new SpinnerNumberModel(0, 0, 255, 1));
    spinnerAmbientAlpha.setFont(Program.TEXT_FONT);
    spinnerAmbientAlpha.setMaximumSize(new Dimension(50, 50));
    spinnerAmbientAlpha.setEnabled(false);
    spinnerAmbientAlpha.addChangeListener(e -> {
        if (Game.getEnvironment() == null || Game.getEnvironment().getMap() == null || isChanging) {
            return;
        }
        Game.getEnvironment().getMap().setCustomProperty(MapProperty.AMBIENTALPHA, spinnerAmbientAlpha.getValue().toString());
        Game.getEnvironment().getAmbientLight().setAlpha((int) spinnerAmbientAlpha.getValue());
    });
    colorButton.addActionListener(a -> {
        if (Game.getEnvironment() == null || Game.getEnvironment().getMap() == null || isChanging) {
            return;
        }
        Color color = null;
        if (colorText.getText() != null && !colorText.getText().isEmpty()) {
            Color solid = Color.decode(colorText.getText());
            color = new Color(solid.getRed(), solid.getGreen(), solid.getBlue(), (int) spinnerAmbientAlpha.getValue());
        }
        Color result = ColorChooser.showRgbDialog("Select an ambient color.", color);
        if (result == null) {
            return;
        }
        String h = "#" + Integer.toHexString(result.getRGB()).substring(2);
        colorText.setText(h);
        spinnerAmbientAlpha.setValue(result.getAlpha());
        Game.getEnvironment().getMap().setCustomProperty(MapProperty.AMBIENTCOLOR, colorText.getText());
        Game.getEnvironment().getAmbientLight().setColor(result);
    });
    EditorScreen.instance().getMapComponent().onMapLoaded(map -> {
        isChanging = true;
        colorButton.setEnabled(map != null);
        spinnerAmbientAlpha.setEnabled(map != null);
        colorText.setText(map.getCustomProperty(MapProperty.AMBIENTCOLOR));
        String alpha = map.getCustomProperty(MapProperty.AMBIENTALPHA);
        if (alpha != null && !alpha.isEmpty()) {
            spinnerAmbientAlpha.setValue((int) Double.parseDouble(alpha));
        }
        isChanging = false;
    });
    basicMenu.add(colorButton);
    basicMenu.add(Box.createHorizontalStrut(5));
    basicMenu.add(colorText);
    basicMenu.add(Box.createHorizontalStrut(5));
    basicMenu.add(spinnerAmbientAlpha);
    return basicMenu;
}
Also used : Color(java.awt.Color) UIManager(javax.swing.UIManager) Point2D(java.awt.geom.Point2D) GridEditPanel(de.gurkenlabs.utiliti.swing.dialogs.GridEditPanel) JToggleButton(javax.swing.JToggleButton) MapPropertyPanel(de.gurkenlabs.utiliti.swing.dialogs.MapPropertyPanel) Map(de.gurkenlabs.litiengine.environment.tilemap.xml.Map) PopupMenu(java.awt.PopupMenu) TrayIcon(java.awt.TrayIcon) UnsupportedLookAndFeelException(javax.swing.UnsupportedLookAndFeelException) Locale(java.util.Locale) Event(java.awt.Event) MouseAdapter(java.awt.event.MouseAdapter) AssetPanel(de.gurkenlabs.utiliti.swing.AssetPanel) MenuShortcut(java.awt.MenuShortcut) BorderLayout(java.awt.BorderLayout) SystemTray(java.awt.SystemTray) JFrame(javax.swing.JFrame) CheckboxMenuItem(java.awt.CheckboxMenuItem) KeyStroke(javax.swing.KeyStroke) JToolBar(javax.swing.JToolBar) Resources(de.gurkenlabs.litiengine.Resources) BufferedImage(java.awt.image.BufferedImage) Font(java.awt.Font) Menu(java.awt.Menu) BorderFactory(javax.swing.BorderFactory) ComponentEvent(java.awt.event.ComponentEvent) KeyEvent(java.awt.event.KeyEvent) Logger(java.util.logging.Logger) Canvas(java.awt.Canvas) Component(java.awt.Component) MenuBar(java.awt.MenuBar) Box(javax.swing.Box) Dimension(java.awt.Dimension) MenuItem(java.awt.MenuItem) AWTException(java.awt.AWTException) JPanel(javax.swing.JPanel) Game(de.gurkenlabs.litiengine.Game) ActionListener(java.awt.event.ActionListener) JSplitPane(javax.swing.JSplitPane) JTextField(javax.swing.JTextField) SpinnerNumberModel(javax.swing.SpinnerNumberModel) Level(java.util.logging.Level) AssetTree(de.gurkenlabs.utiliti.swing.AssetTree) MapComponent(de.gurkenlabs.utiliti.components.MapComponent) SwingUtilities(javax.swing.SwingUtilities) InvalidPathException(java.nio.file.InvalidPathException) JMenuItem(javax.swing.JMenuItem) JTabbedPane(javax.swing.JTabbedPane) ImageIcon(javax.swing.ImageIcon) JTextPane(javax.swing.JTextPane) MapProperty(de.gurkenlabs.litiengine.environment.tilemap.MapProperty) JComponent(javax.swing.JComponent) JButton(javax.swing.JButton) JSpinner(javax.swing.JSpinner) JPopupMenu(javax.swing.JPopupMenu) JOptionPane(javax.swing.JOptionPane) MapObjectPanel(de.gurkenlabs.utiliti.swing.panels.MapObjectPanel) MouseEvent(java.awt.event.MouseEvent) File(java.io.File) Input(de.gurkenlabs.litiengine.input.Input) ComponentAdapter(java.awt.event.ComponentAdapter) JScrollPane(javax.swing.JScrollPane) Paths(java.nio.file.Paths) JLabel(javax.swing.JLabel) JScrollBar(javax.swing.JScrollBar) ColorChooser(de.gurkenlabs.utiliti.swing.ColorChooser) ImageIcon(javax.swing.ImageIcon) Color(java.awt.Color) JButton(javax.swing.JButton) JToolBar(javax.swing.JToolBar) Dimension(java.awt.Dimension) JTextField(javax.swing.JTextField) SpinnerNumberModel(javax.swing.SpinnerNumberModel) JToggleButton(javax.swing.JToggleButton) ActionListener(java.awt.event.ActionListener) KeyStroke(javax.swing.KeyStroke) JSpinner(javax.swing.JSpinner)

Example 8 with Map

use of de.gurkenlabs.litiengine.environment.tilemap.xml.Map in project litiengine by gurkenlabs.

the class MapComponent method importMap.

public void importMap() {
    if (this.getMaps() == null) {
        return;
    }
    final IMapLoader tmxLoader = new TmxMapLoader();
    XmlImportDialog.importXml("Tilemap", Map.FILE_EXTENSION, files -> {
        for (File file : files) {
            String mapPath = file.toString();
            Map map = (Map) tmxLoader.loadMap(mapPath);
            if (map == null) {
                log.log(Level.WARNING, "could not load map from file {0}", new Object[] { mapPath });
                return;
            }
            if (map.getMapObjectLayers().isEmpty()) {
                // make sure there's a map object layer on the map because we need one
                // to add any kind of entities
                MapObjectLayer layer = new MapObjectLayer();
                layer.setName(DEFAULT_MAPOBJECTLAYER_NAME);
                map.addMapObjectLayer(layer);
            }
            Optional<Map> current = this.maps.stream().filter(x -> x.getFileName().equals(map.getFileName())).findFirst();
            if (current.isPresent()) {
                int n = JOptionPane.showConfirmDialog(Game.getScreenManager().getRenderComponent(), Resources.get("input_replace_map", map.getFileName()), Resources.get("input_replace_map_title"), JOptionPane.YES_NO_OPTION);
                if (n == JOptionPane.YES_OPTION) {
                    this.getMaps().remove(current.get());
                } else {
                    return;
                }
            }
            this.getMaps().add(map);
            Collections.sort(this.getMaps());
            for (IImageLayer imageLayer : map.getImageLayers()) {
                BufferedImage img = Resources.getImage(imageLayer.getImage().getAbsoluteSourcePath(), true);
                Spritesheet sprite = Spritesheet.load(img, imageLayer.getImage().getSource(), img.getWidth(), img.getHeight());
                this.screen.getGameFile().getSpriteSheets().add(new SpriteSheetInfo(sprite));
            }
            // remove old spritesheets
            for (ITileset tileSet : map.getTilesets()) {
                this.loadTileset(tileSet, true);
            }
            // remove old tilesets
            for (ITileset tileset : map.getExternalTilesets()) {
                this.loadTileset(tileset, false);
            }
            EditorScreen.instance().updateGameFileMaps();
            ImageCache.clearAll();
            if (this.environments.containsKey(map.getFileName())) {
                this.environments.remove(map.getFileName());
            }
            EditorScreen.instance().getMapSelectionPanel().bind(this.getMaps(), true);
            this.loadEnvironment(map);
            log.log(Level.INFO, "imported map {0}", new Object[] { map.getFileName() });
        }
    });
}
Also used : Color(java.awt.Color) Arrays(java.util.Arrays) Point2D(java.awt.geom.Point2D) Rectangle2D(java.awt.geom.Rectangle2D) MapObject(de.gurkenlabs.litiengine.environment.tilemap.xml.MapObject) MathUtilities(de.gurkenlabs.litiengine.util.MathUtilities) SpriteSheetInfo(de.gurkenlabs.litiengine.SpriteSheetInfo) Map(de.gurkenlabs.litiengine.environment.tilemap.xml.Map) Ellipse2D(java.awt.geom.Ellipse2D) UndoManager(de.gurkenlabs.utiliti.UndoManager) IMapLoader(de.gurkenlabs.litiengine.environment.tilemap.IMapLoader) ImageCache(de.gurkenlabs.litiengine.graphics.ImageCache) FileUtilities(de.gurkenlabs.litiengine.util.io.FileUtilities) MapObjectProperty(de.gurkenlabs.litiengine.environment.tilemap.MapObjectProperty) Tileset(de.gurkenlabs.litiengine.environment.tilemap.xml.Tileset) JFileChooser(javax.swing.JFileChooser) Resources(de.gurkenlabs.litiengine.Resources) IImageLayer(de.gurkenlabs.litiengine.environment.tilemap.IImageLayer) BufferedImage(java.awt.image.BufferedImage) Font(java.awt.Font) CollisionEntity(de.gurkenlabs.litiengine.entities.CollisionEntity) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) KeyEvent(java.awt.event.KeyEvent) Logger(java.util.logging.Logger) IEntity(de.gurkenlabs.litiengine.entities.IEntity) Program(de.gurkenlabs.utiliti.Program) ImageFormat(de.gurkenlabs.litiengine.graphics.ImageFormat) Dimension(java.awt.Dimension) List(java.util.List) Align(de.gurkenlabs.litiengine.Align) IMapObjectLayer(de.gurkenlabs.litiengine.environment.tilemap.IMapObjectLayer) XmlUtilities(de.gurkenlabs.litiengine.util.io.XmlUtilities) Entry(java.util.Map.Entry) ComponentMouseEvent(de.gurkenlabs.litiengine.gui.ComponentMouseEvent) Optional(java.util.Optional) BasicStroke(java.awt.BasicStroke) ImageSerializer(de.gurkenlabs.litiengine.util.io.ImageSerializer) Game(de.gurkenlabs.litiengine.Game) CopyOnWriteArrayList(java.util.concurrent.CopyOnWriteArrayList) ITileset(de.gurkenlabs.litiengine.environment.tilemap.ITileset) GeometricUtilities(de.gurkenlabs.litiengine.util.geom.GeometricUtilities) FileNameExtensionFilter(javax.swing.filechooser.FileNameExtensionFilter) Spritesheet(de.gurkenlabs.litiengine.graphics.Spritesheet) EditorScreen(de.gurkenlabs.utiliti.EditorScreen) IMap(de.gurkenlabs.litiengine.environment.tilemap.IMap) MapUtilities(de.gurkenlabs.litiengine.environment.tilemap.MapUtilities) IEnvironment(de.gurkenlabs.litiengine.environment.IEnvironment) IMapObject(de.gurkenlabs.litiengine.environment.tilemap.IMapObject) ArrayList(java.util.ArrayList) Level(java.util.logging.Level) Blueprint(de.gurkenlabs.litiengine.environment.tilemap.xml.Blueprint) FocusAdapter(java.awt.event.FocusAdapter) SwingUtilities(javax.swing.SwingUtilities) Graphics2D(java.awt.Graphics2D) MapObjectLayer(de.gurkenlabs.litiengine.environment.tilemap.xml.MapObjectLayer) LightSource(de.gurkenlabs.litiengine.graphics.LightSource) Stroke(java.awt.Stroke) Line2D(java.awt.geom.Line2D) Valign(de.gurkenlabs.litiengine.Valign) IOException(java.io.IOException) ComponentMouseWheelEvent(de.gurkenlabs.litiengine.gui.ComponentMouseWheelEvent) JOptionPane(javax.swing.JOptionPane) FileFilter(javax.swing.filechooser.FileFilter) File(java.io.File) TmxMapLoader(de.gurkenlabs.litiengine.environment.tilemap.TmxMapLoader) Path2D(java.awt.geom.Path2D) Input(de.gurkenlabs.litiengine.input.Input) Consumer(java.util.function.Consumer) FontMetrics(java.awt.FontMetrics) MapObjectType(de.gurkenlabs.litiengine.environment.tilemap.MapObjectType) Paths(java.nio.file.Paths) FocusEvent(java.awt.event.FocusEvent) GuiComponent(de.gurkenlabs.litiengine.gui.GuiComponent) Environment(de.gurkenlabs.litiengine.environment.Environment) RenderEngine(de.gurkenlabs.litiengine.graphics.RenderEngine) Collections(java.util.Collections) IUpdateable(de.gurkenlabs.litiengine.IUpdateable) XmlImportDialog(de.gurkenlabs.utiliti.swing.XmlImportDialog) TmxMapLoader(de.gurkenlabs.litiengine.environment.tilemap.TmxMapLoader) ITileset(de.gurkenlabs.litiengine.environment.tilemap.ITileset) IMapLoader(de.gurkenlabs.litiengine.environment.tilemap.IMapLoader) IImageLayer(de.gurkenlabs.litiengine.environment.tilemap.IImageLayer) Blueprint(de.gurkenlabs.litiengine.environment.tilemap.xml.Blueprint) BufferedImage(java.awt.image.BufferedImage) SpriteSheetInfo(de.gurkenlabs.litiengine.SpriteSheetInfo) Spritesheet(de.gurkenlabs.litiengine.graphics.Spritesheet) File(java.io.File) Map(de.gurkenlabs.litiengine.environment.tilemap.xml.Map) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) IMap(de.gurkenlabs.litiengine.environment.tilemap.IMap) IMapObjectLayer(de.gurkenlabs.litiengine.environment.tilemap.IMapObjectLayer) MapObjectLayer(de.gurkenlabs.litiengine.environment.tilemap.xml.MapObjectLayer)

Example 9 with Map

use of de.gurkenlabs.litiengine.environment.tilemap.xml.Map in project litiengine by gurkenlabs.

the class MapComponent method exportMap.

public void exportMap() {
    if (this.getMaps() == null || this.getMaps().isEmpty()) {
        return;
    }
    Map map = (Map) Game.getEnvironment().getMap();
    if (map == null) {
        return;
    }
    this.exportMap(map);
}
Also used : Map(de.gurkenlabs.litiengine.environment.tilemap.xml.Map) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) IMap(de.gurkenlabs.litiengine.environment.tilemap.IMap)

Example 10 with Map

use of de.gurkenlabs.litiengine.environment.tilemap.xml.Map in project litiengine by gurkenlabs.

the class MapComponent method loadEnvironment.

public void loadEnvironment(Map map) {
    this.loading = true;
    try {
        if (Game.getEnvironment() != null && Game.getEnvironment().getMap() != null) {
            final String mapName = Game.getEnvironment().getMap().getFileName();
            double x = Game.getCamera().getFocus().getX();
            double y = Game.getCamera().getFocus().getY();
            Point2D newPoint = new Point2D.Double(x, y);
            this.cameraFocus.put(mapName, newPoint);
            this.selectedLayers.put(mapName, EditorScreen.instance().getMapSelectionPanel().getSelectedLayerIndex());
        }
        Point2D newFocus = null;
        if (this.cameraFocus.containsKey(map.getFileName())) {
            newFocus = this.cameraFocus.get(map.getFileName());
        } else {
            newFocus = new Point2D.Double(map.getSizeInPixels().getWidth() / 2, map.getSizeInPixels().getHeight() / 2);
            this.cameraFocus.put(map.getFileName(), newFocus);
        }
        Game.getCamera().setFocus(new Point2D.Double(newFocus.getX(), newFocus.getY()));
        this.ensureUniqueIds(map);
        if (!this.environments.containsKey(map.getFileName())) {
            Environment env = new Environment(map);
            env.init();
            this.environments.put(map.getFileName(), env);
        }
        Game.loadEnvironment(this.environments.get(map.getFileName()));
        Program.updateScrollBars();
        EditorScreen.instance().getMapSelectionPanel().setSelection(map.getFileName());
        if (this.selectedLayers.containsKey(map.getFileName())) {
            EditorScreen.instance().getMapSelectionPanel().selectLayer(this.selectedLayers.get(map.getFileName()));
        }
        EditorScreen.instance().getMapObjectPanel().bind(this.getFocusedMapObject());
        for (Consumer<Map> cons : this.mapLoadedConsumer) {
            cons.accept(map);
        }
    } finally {
        this.loading = false;
    }
}
Also used : Point2D(java.awt.geom.Point2D) IEnvironment(de.gurkenlabs.litiengine.environment.IEnvironment) Environment(de.gurkenlabs.litiengine.environment.Environment) Map(de.gurkenlabs.litiengine.environment.tilemap.xml.Map) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) IMap(de.gurkenlabs.litiengine.environment.tilemap.IMap)

Aggregations

Map (de.gurkenlabs.litiengine.environment.tilemap.xml.Map)14 Resources (de.gurkenlabs.litiengine.Resources)5 BufferedImage (java.awt.image.BufferedImage)5 Game (de.gurkenlabs.litiengine.Game)4 IMap (de.gurkenlabs.litiengine.environment.tilemap.IMap)4 Tileset (de.gurkenlabs.litiengine.environment.tilemap.xml.Tileset)4 Color (java.awt.Color)4 Dimension (java.awt.Dimension)4 Font (java.awt.Font)4 Graphics2D (java.awt.Graphics2D)4 File (java.io.File)4 ArrayList (java.util.ArrayList)4 GameData (de.gurkenlabs.litiengine.GameData)3 IMapObjectLayer (de.gurkenlabs.litiengine.environment.tilemap.IMapObjectLayer)3 ITileset (de.gurkenlabs.litiengine.environment.tilemap.ITileset)3 ImageCache (de.gurkenlabs.litiengine.graphics.ImageCache)3 Input (de.gurkenlabs.litiengine.input.Input)3 Point2D (java.awt.geom.Point2D)3 IOException (java.io.IOException)3 ConcurrentHashMap (java.util.concurrent.ConcurrentHashMap)3