How can you easily determine the textureRect for tiled maps in SFML 2.0?
- by ThePlan
I'm working on creating a 2d map prototype, and I've come across the rendering bit of it. I have a tilesheet with tiles, each tile is 30x30 pixels, and there's a 1px border to delimitate them.
In SFML the usual method of drawing a part of a tilesheet is declaring an IntRect with the rectangle coordinates then calling the setTextureRectangle() method to a sprite.
In a small game it would work, but I have well over 45 tiles and adding more every day, I can't declare 45 intRects for every material, the map is not optimized yet, it would get even worse if I would have to call the setTextureRect() method, aside from declaring 45 rectangleInts.
How could I simplify this task? All I need is a very simple and flexible solution for extracting a region of the tilesheet.
Basically I have a Tile class. I create multiple instances of tiles (vectors) and each tile has a position and a material. I parse a map file and as I parse it I set the materials of the map according to the parsed map file, and all I need to do is render.
Basically I need to do something like this:
switch(tile.getMaterial())
{
case GRASS:
material_sprite.setTextureRect(something);
window.draw(material_sprite);
break;
case WATER:
material_sprite.setTextureRect(something);
window.draw(material_sprite);
break;
// handle more cases
}