• Advertisement

Kpaiva

Member
  • Content count

    2
  • Joined

  • Last visited

Community Reputation

100 Neutral

About Kpaiva

  • Rank
    Newbie

Personal Information

  1. I found the answer after some brute force here is the changed working code if anyone else needs it: PS: Num_Of_Cols is the same thing as (TilesetWidth / TileWidth) [CODE] 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; } //CurTile = tileset->GetFirstGid() + CurTile; CurTile--; int tileset_col = (CurTile % Num_Of_Cols); int tileset_row = (CurTile / Num_Of_Cols); 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); } } } } [/CODE]
  2. I'm working on getting a map created in Tiled ([url="http://mapeditor.org/"]http://mapeditor.org[/url]) to render after parsing the map with tmx-parser ([url="http://code.google.com/p/tmx-parser/"]http://code.google.com/p/tmx-parser/[/url]). 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? [CODE] 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); } } } } [/CODE]
  • Advertisement