i'm trying to make a map loader for tiled, on android.. so far i could parse the tmx file, grab all the tile data, and put them in a 2dimensional array, like this: Bitmap tiles[x][y] ... it works and i can render tiled maps on android now, but only by interating through that tiles[][] array, like shown below..
how can i merge together in one single bitmap the content of a bitmap array ?
here's my render method:
//here's what i have:
for (int x = 0; x < MapLoader.width; x++) {
for (int y = 0; y < MapLoader.height; y++) {
g.drawBitmap( picSource[x][y], posX, posY, BitmapPaint);
}
}
//and here's what i'd like to have:
g.drawBitmap( picDest, posX, posY, BitmapPaint);
i would like to itterate through picSource[x][y] grab all the bitmaps and put them all in picDest. so i can get 1 single big pic, representing the map i've loaded and constructed from tiled tmx file..
( note that no bitmap contained in the picSource[][] array is located a the same position .. there's no bitmap on top of any other, they're just displayed in a grid each is a 32x32 bitmap in a 4x3 grid for example.. each its own spot on the grid .. )
thanks for the help
In case someone else is wondering, i'm posting how i did it:
MapLoader class filled the array "block[x][y] with an int value for each tile.
we loop through that array, looking for all tiles at pos:x,y with value 169.
when one is found, the corresponding bitmap, taken from the tilesheet (alway the same one..at same position on the tilesheet: 0,0,16,16 it's a 16x16 red tile used for collisions), is drawn into a temporary bitmap at the same pos.x,y that the array loop is at.
when the loop is exited, collisionPicDest bitmap have been built, out of lots of smaller parts blended together in 1 final pic.
collisionSheet = BitmapFactory.decodeResource(ctx.getResources(), R.drawable.collision16);
collisionPic = new Bitmap[width][height];
collisionPicDest = Bitmap.createBitmap(width*tileSize, height*tileSize, Bitmap.Config.RGB_565);
collisionCanvas = new Canvas(collisionPicDest());
// ===============
// collision layer
// ===============
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
tileNbr = MapLoader.block[x][y];
switch(tileNbr){
case 169:
// ============
// normal block
// ============
collisionPic[x][y]= Bitmap.createBitmap(collisionSheet, 0, 0, tileSize, tileSize);
collisionCanvas.drawBitmap(collisionPic[x][y],x*tileSize,y*tileSize,bitmapPaint);
break;
// do other cases..
}
}