Jump to content

  • Log In with Google      Sign In   
  • Create Account


Kpaiva

Member Since 27 Jan 2012
Offline Last Active Mar 08 2012 10:03 PM

Topics I've Started

2d tile rendering using tmx-parser and SDL

27 January 2012 - 09:05 PM

I'm working on getting a map created in Tiled (http://mapeditor.org) to render after parsing the map with tmx-parser (http://code.google.com/p/tmx-parser/). I've got the tiles to render in the correct positions, but i can't seem to get it to render the correct tiles from the tileset. I'm using the isometric_grass_and_water example from tiled to test it.

Can anyone tell me what i'm doing wrong?

void Map::RenderMapIsometric(SDL_Surface *SurfaceDest)
    {
	    for (int i = 0; i < map->GetNumLayers(); ++i)
	    {
		    // Get a layer.
	    this->layer = map->GetLayer(i);
	    for (int x = 0; x < layer->GetWidth(); ++x)
	    {
		    for (int y = 0; y < layer->GetHeight(); ++y)
		    {
			    int CurTile = layer->GetTileGid(x, y);
			    if(CurTile == 0)
			    {
				    continue;
			    }
			    int tileset_col = (CurTile % (TilesetWidth / this->tileset->GetTileWidth()));
			    int tileset_row = (CurTile / (TilesetWidth / this->tileset->GetTileWidth()));
			    std::cout << CurTile << std::endl;
			    SDL_Rect rect_CurTile;
			    rect_CurTile.x = (this->tileset->GetMargin() + (this->tileset->GetTileWidth() + this->tileset->GetSpacing()) * tileset_col);
			    rect_CurTile.y = (this->tileset->GetMargin() + (this->tileset->GetTileHeight() + this->tileset->GetSpacing()) * tileset_row);
			    rect_CurTile.w = this->tileset->GetTileWidth();
			    rect_CurTile.h = this->tileset->GetTileHeight();
			    int DrawX = (x * this->tileset->GetTileWidth() / 2) + (y * this->tileset->GetTileWidth() / 2);
			    int DrawY = (y * this->tileset->GetTileHeight() / 2) - (x * this->tileset->GetTileHeight() / 2);
			    apply_surfaceClip(DrawX, DrawY, surf_Tileset, SurfaceDest, &rect_CurTile);
		    }
	    }
    }
}

PARTNERS