Search code examples
javaandroidlibgdxtile

Android Libgdx TileAtlas


I am trying to add a Map to my libgdx app as a proof of concept. It seems that no matter how I make a packfile, the com.badlogic.gdx.graphics.g2d.tiled.TileAtlas constructor TileAtlas(TiledMap map, FileHandle inputDir) will not correctly read it. My Tile Map is simple and has only 2 tiles, and both the external gui and internal system will generate a packed file.

Here's the issue, either I name the packfile with a filename to match one of my images to satisfy line 2 below, or the method errors out. If I add 2 packfiles, one for each name of an image in my tile set, I find the Atlas isn't constructed correctly in memory. What am I missing here? Should there only ever be one tile in a tilemap?

Code from Libgdx:

    for (TileSet set : map.tileSets) {
        FileHandle packfile = getRelativeFileHandle(inputDir, removeExtension(set.imageName) + " packfile");
        TextureAtlas textureAtlas = new TextureAtlas(packfile, packfile.parent(), false);
        Array<AtlasRegion> atlasRegions = textureAtlas.findRegions(removeExtension(removePath(set.imageName)));
        for (AtlasRegion reg : atlasRegions) {
            regionsMap.put(reg.index + set.firstgid, reg);
            if (!textures.contains(reg.getTexture())) {
                textures.add(reg.getTexture());
            }
        }
    }

Solution

  • com.badlogic.gdx.graphics.g2d.tiled --> It looks like you're using the old tiled API. I don't even think that package exists anymore, so you should probably download a newer version.

    Check out this blog article. I haven't used the new API yet, but at a quick glance it looks much easier to load maps.