Package com.badlogic.gdx.tiledmappacker

Source Code of com.badlogic.gdx.tiledmappacker.TileSetLayout

/**
* *****************************************************************************
* Copyright 2011 See AUTHORS file.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*****************************************************************************
*/
package com.badlogic.gdx.tiledmappacker;

import com.badlogic.gdx.files.FileHandle;
import com.badlogic.gdx.graphics.g2d.tiled.TileSet;
import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.utils.IntMap;
import java.awt.image.BufferedImage;
import java.io.IOException;
import javax.imageio.ImageIO;

/**
* Contains extra information that can only be calculated after a Tiled Map's
* tile set images are loaded.
*
* @author David Fraska
*/
public class TileSetLayout extends TileSet {

    /**
     * Constructs a Tile Set layout. The tile set image contained in the baseDir
     * should be the original tile set images before being processed by {@link TiledMapPacker}
     * (the ones actually read by Tiled).
     *
     * @param tileSet the tile set to process
     * @param baseDir the directory in which the tile set image is stored
     */
    protected TileSetLayout(TileSet tileSet, FileHandle baseDir) throws IOException {
        super(tileSet);

        image = ImageIO.read(baseDir.child(tileSet.imageName).read());

        imageTilePositions = new IntMap<Vector2>();

        // fill the tile regions
        int x, y, tile = 0;
        numRows = 0;
        numCols = 0;
        for (y = tileSet.margin; y < image.getHeight() - tileSet.margin; y += tileSet.tileHeight + tileSet.spacing) {
            for (x = tileSet.margin; x < image.getWidth() - tileSet.margin; x += tileSet.tileWidth + tileSet.spacing) {
                if (y == tileSet.margin) {
                    numCols++;
                }
                imageTilePositions.put(tile, new Vector2(x, y));
                tile++;
            }
            numRows++;
        }

        numTiles = numRows * numCols;
    }

    public int getNumRows() {
        return numRows;
    }

    public int getNumCols() {
        return numCols;
    }

    /**
     * Returns the location of the tile in {@link TileSetLayout#image}
     */
    public Vector2 getLocation(int tile) {
        return imageTilePositions.get(tile - firstgid);
    }
    public final BufferedImage image;
    private final IntMap<Vector2> imageTilePositions;
    private int numRows;
    private int numCols;
    public final int numTiles;
}
TOP

Related Classes of com.badlogic.gdx.tiledmappacker.TileSetLayout

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.