Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 15 additions & 10 deletions src/org/andengine/extension/tmx/TMXLayer.java
Original file line number Diff line number Diff line change
Expand Up @@ -253,29 +253,34 @@ private void addTileByGlobalTileID(final int pGlobalTileID, final ITMXTileProper

final ITextureRegion tmxTileTextureRegion;
if(pGlobalTileID == 0) {
// it's a transparent tile
tmxTileTextureRegion = null;
} else {
tmxTileTextureRegion = tmxTiledMap.getTextureRegionFromGlobalTileID(pGlobalTileID);
}
final int tileHeight = this.mTMXTiledMap.getTileHeight();
final int tileWidth = this.mTMXTiledMap.getTileWidth();

if(this.mTexture == null) {
this.mTexture = tmxTileTextureRegion.getTexture();
super.initBlendFunction(this.mTexture);
} else {
if(this.mTexture != tmxTileTextureRegion.getTexture()) {
throw new AndEngineException("All TMXTiles in a TMXLayer need to be in the same TMXTileSet.");
if (tmxTileTextureRegion != null) {
// Unless this is a transparent tile, setup the texture
if (this.mTexture == null) {
this.mTexture = tmxTileTextureRegion.getTexture();
super.initBlendFunction(this.mTexture);
} else {
if (this.mTexture != tmxTileTextureRegion.getTexture()) {
throw new AndEngineException("All TMXTiles in a TMXLayer ("
+ mName + ") need to be in the same TMXTileSet.");
}
}
}
final TMXTile tmxTile = new TMXTile(pGlobalTileID, column, row, tileWidth, tileHeight, tmxTileTextureRegion);
tmxTiles[row][column] = tmxTile;

this.setIndex(this.getSpriteBatchIndex(column, row));
this.drawWithoutChecks(tmxTileTextureRegion, tmxTile.getTileX(), tmxTile.getTileY(), tileWidth, tileHeight, Color.WHITE_PACKED);
this.submit(); // TODO Doesn't need to be called here, but should rather be called in a "init" step, when parsing the XML is complete.
if (pGlobalTileID != 0) {
this.setIndex(this.getSpriteBatchIndex(column, row));
this.drawWithoutChecks(tmxTileTextureRegion, tmxTile.getTileX(), tmxTile.getTileY(), tileWidth, tileHeight, Color.WHITE_PACKED);
this.submit(); // TODO Doesn't need to be called here, but should rather be called in a "init" step, when parsing the XML is complete.

if(pGlobalTileID != 0) {
/* Notify the ITMXTilePropertiesListener if it exists. */
if(pTMXTilePropertyListener != null) {
final TMXProperties<TMXTileProperty> tmxTileProperties = tmxTiledMap.getTMXTileProperties(pGlobalTileID);
Expand Down
7 changes: 6 additions & 1 deletion src/org/andengine/extension/tmx/TMXParser.java
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,12 @@ public void endElement(final String pUri, final String pLocalName, final String
if(binarySaved) {
final ArrayList<TMXLayer> tmxLayers = this.mTMXTiledMap.getTMXLayers();
try {
tmxLayers.get(tmxLayers.size() - 1).initializeTMXTilesFromDataString(this.mStringBuilder.toString().trim(), this.mDataEncoding, this.mDataCompression, this.mTMXTilePropertyListener);
TMXLayer layer = tmxLayers.get(tmxLayers.size() - 1);
layer.initializeTMXTilesFromDataString(this.mStringBuilder.toString().trim(), this.mDataEncoding, this.mDataCompression, this.mTMXTilePropertyListener);
if (layer.getTexture() == null) {
Debug.e("TMXLayer (" + layer.getName() + ") does not contain any tiles. Removing empty layer from TMXTiledMap.");
tmxLayers.remove(layer);
}
} catch (final IOException e) {
Debug.e(e);
}
Expand Down