void fill(int map, int x, int y, int num) { if(Grid[y][x] != -1 || Grid[y][x] == num) { return; } if(inBounds(x, y)) { if(Grid[y][x] == -1 && getTileType(map, x, y) != TILE_TYPE_WALL) { Grid[y][x] = num; } } if(y - 1 >= 0) { fill(map, y - 1, x, num + 1); } if(x + 1 <= 19) { fill(map, y, x + 1, num + 1); } if(y + 1 <= 14) { fill(map, y + 1, x, num + 1); } if(x - 1 >= 0) { fill(map, y, x - 1, num + 1); } } for(int x=0;x<20;x++) { for(int y=0;y<15;y++) { if(map->map[y][x].type==TILE_TYPE_WALL || map->map[y][x].type==TILE_TYPE_SWITCH|| map->map[y][x]==TILE_TYPE_WARP||map->map[y][x]==TILE_TYPE_NPC) grid[y][x]=-2; //block else grid[y][x]=-1; // empty } } void fill(int map,int x,int y,int num) { if(inBounds(x,y) && grid[y][x]==-1) { grid[y][x]=num; fill(map,x-1,y,num+1); fill(map,x+1,y,num+1); fill(map,x,y-1,num+1); fill(map,x,y+1,num+1); } }