public Image getImage(int i, int j, bool redesenha)
{
if (regions.ContainsKey(i))
{
int w = regions[i].tile_width * regions[i].map_width;
int h = regions[i].map_height * regions[i].tile_height;
Dictionary<int, Layer> list = regions[i].layer;
if (!region_image.ContainsKey(i))
region_image.Add(i, new Dictionary<int, Image>());
if(list.ContainsKey(j))
{
Layer lyr = list[j];
if (redesenha || !region_image[i].ContainsKey(j))
{
Image image = new Bitmap(w, h);
Graphics g = Graphics.FromImage(image);
foreach (Dictionary<int, Tile> coluna in lyr.tiles.Values)
{
foreach (Tile tile in coluna.Values)
{
if (tilesets.ContainsKey(tile.tileset_code))
{
Tileset tset = tilesets[tile.tileset_code];
Image img = tset.getImageCrop(tile.tile_code, tile.tile_crop);
if (img != null)
{
g.DrawImage(img, tile.point);
}
}
}
}
if (!region_image[i].ContainsKey(j))
region_image[i].Add(j, image);
else
region_image[i][j] = image;
}
return region_image[i][j];
}
}
return null;
}