|  | @@ -4,10 +4,45 @@
 | 
	
		
			
				|  |  |  #include "SDL_rotozoom.h"
 | 
	
		
			
				|  |  |  #include "SDL_Extensions.h"
 | 
	
		
			
				|  |  |  #include "CGameInfo.h"
 | 
	
		
			
				|  |  | +#include "stdlib.h"
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  extern SDL_Surface * ekran;
 | 
	
		
			
				|  |  | -void mapHandler::init()
 | 
	
		
			
				|  |  | +void CMapHandler::init()
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  | +	fullHide = CGameInfo::mainObj->sspriteh->giveDef("TSHRC.DEF", 2);
 | 
	
		
			
				|  |  | +	partialHide = CGameInfo::mainObj->sspriteh->giveDef("TSHRE.DEF", 2);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	for(int i=0; i<partialHide->ourImages.size(); ++i)
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		//CSDL_Ext::alphaTransform(partialHide->ourImages[i].bitmap);
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	visibility.resize(reader->map.width+8);
 | 
	
		
			
				|  |  | +	for(int gg=0; gg<reader->map.width+8; ++gg)
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		visibility[gg].resize(reader->map.height+8);
 | 
	
		
			
				|  |  | +		for(int jj=0; jj<reader->map.height+8; ++jj)
 | 
	
		
			
				|  |  | +			visibility[gg][jj] = true;
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	undVisibility.resize(reader->map.width+8);
 | 
	
		
			
				|  |  | +	for(int gg=0; gg<reader->map.width+8; ++gg)
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		undVisibility[gg].resize(reader->map.height+8);
 | 
	
		
			
				|  |  | +		for(int jj=0; jj<reader->map.height+8; ++jj)
 | 
	
		
			
				|  |  | +			undVisibility[gg][jj] = true;
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	visibility[6][7] = false;
 | 
	
		
			
				|  |  | +	undVisibility[5][7] = false;
 | 
	
		
			
				|  |  | +	visibility[7][7] = false;
 | 
	
		
			
				|  |  | +	visibility[6][8] = false;
 | 
	
		
			
				|  |  | +	visibility[6][6] = false;
 | 
	
		
			
				|  |  | +	//visibility[5][6] = false;
 | 
	
		
			
				|  |  | +	//visibility[7][8] = false;
 | 
	
		
			
				|  |  | +	visibility[5][8] = false;
 | 
	
		
			
				|  |  | +	visibility[7][6] = false;
 | 
	
		
			
				|  |  | +	visibility[6][9] = false;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  	terrainBitmap = new SDL_Surface **[reader->map.width+8];
 | 
	
		
			
				|  |  |  	for (int ii=0;ii<reader->map.width+8;ii++)
 | 
	
		
			
				|  |  |  		terrainBitmap[ii] = new SDL_Surface*[reader->map.height+8]; // allocate memory 
 | 
	
	
		
			
				|  | @@ -203,11 +238,12 @@ void mapHandler::init()
 | 
	
		
			
				|  |  |  					catch (...)
 | 
	
		
			
				|  |  |  					{	continue;	}
 | 
	
		
			
				|  |  |  				}
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | +			} //end of internal for
 | 
	
		
			
				|  |  | +		} //end of external for
 | 
	
		
			
				|  |  | +	} //end of if
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  | -SDL_Surface * mapHandler::terrainRect(int x, int y, int dx, int dy, int level)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +SDL_Surface * CMapHandler::terrainRect(int x, int y, int dx, int dy, int level)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |  #if SDL_BYTEORDER == SDL_BIG_ENDIAN
 | 
	
		
			
				|  |  |      int rmask = 0xff000000;
 | 
	
	
		
			
				|  | @@ -220,6 +256,7 @@ SDL_Surface * mapHandler::terrainRect(int x, int y, int dx, int dy, int level)
 | 
	
		
			
				|  |  |      int bmask = 0x00ff0000;
 | 
	
		
			
				|  |  |      int amask = 0xff000000;
 | 
	
		
			
				|  |  |  #endif
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  	SDL_Surface * su = SDL_CreateRGBSurface(SDL_SWSURFACE, dx*32, dy*32, 32,
 | 
	
		
			
				|  |  |                                     rmask, gmask, bmask, amask);
 | 
	
		
			
				|  |  |  	if (((dx+x)>((reader->map.width+8)) || (dy+y)>((reader->map.height+8))) || ((x<0)||(y<0) ) )
 | 
	
	
		
			
				|  | @@ -233,12 +270,263 @@ SDL_Surface * mapHandler::terrainRect(int x, int y, int dx, int dy, int level)
 | 
	
		
			
				|  |  |  			sr->x=bx*32;
 | 
	
		
			
				|  |  |  			sr->h=sr->w=32;
 | 
	
		
			
				|  |  |  			if (!level)
 | 
	
		
			
				|  |  | +			{
 | 
	
		
			
				|  |  |  				SDL_BlitSurface(terrainBitmap[bx+x][by+y],NULL,su,sr);
 | 
	
		
			
				|  |  | +				if( bx+x>3 && by+y>3 && bx+x<visibility.size()-3 && by+y<visibility[0].size()-3 && !visibility[bx+x][by+y])
 | 
	
		
			
				|  |  | +				{
 | 
	
		
			
				|  |  | +					SDL_Surface * hide = CSDL_Ext::alphaTransform(getVisBitmap(bx+x, by+y, visibility));
 | 
	
		
			
				|  |  | +					Uint32 pompom[32][32];
 | 
	
		
			
				|  |  | +					for(int i=0; i<hide->w; ++i)
 | 
	
		
			
				|  |  | +					{
 | 
	
		
			
				|  |  | +						for(int j=0; j<hide->h; ++j)
 | 
	
		
			
				|  |  | +						{
 | 
	
		
			
				|  |  | +							pompom[i][j] = 0xffffffff - (CSDL_Ext::SDL_GetPixel(hide, i, j, true) & 0xff000000);
 | 
	
		
			
				|  |  | +						}
 | 
	
		
			
				|  |  | +					}
 | 
	
		
			
				|  |  | +					hide = SDL_ConvertSurface(hide, su->format, SDL_SWSURFACE);
 | 
	
		
			
				|  |  | +					for(int i=0; i<hide->w; ++i)
 | 
	
		
			
				|  |  | +					{
 | 
	
		
			
				|  |  | +						for(int j=0; j<hide->h; ++j)
 | 
	
		
			
				|  |  | +						{
 | 
	
		
			
				|  |  | +							Uint32 * place = (Uint32*)( (Uint8*)hide->pixels + j * hide->pitch + i * hide->format->BytesPerPixel);
 | 
	
		
			
				|  |  | +							(*place)&=pompom[i][j];
 | 
	
		
			
				|  |  | +						}
 | 
	
		
			
				|  |  | +					}
 | 
	
		
			
				|  |  | +					SDL_BlitSurface(hide, NULL, su, sr);
 | 
	
		
			
				|  |  | +				}
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  |  			else 
 | 
	
		
			
				|  |  | +			{
 | 
	
		
			
				|  |  |  				SDL_BlitSurface(undTerrainBitmap[bx+x][by+y],NULL,su,sr);
 | 
	
		
			
				|  |  | +				if( bx+x>3 && by+y>3 && bx+x<undVisibility.size()-3 && by+y<undVisibility[0].size()-3 && !undVisibility[bx+x][by+y])
 | 
	
		
			
				|  |  | +				{
 | 
	
		
			
				|  |  | +					SDL_Surface * hide = CSDL_Ext::alphaTransform(getVisBitmap(bx+x, by+y, undVisibility));
 | 
	
		
			
				|  |  | +					Uint32 pompom[32][32];
 | 
	
		
			
				|  |  | +					for(int i=0; i<hide->w; ++i)
 | 
	
		
			
				|  |  | +					{
 | 
	
		
			
				|  |  | +						for(int j=0; j<hide->h; ++j)
 | 
	
		
			
				|  |  | +						{
 | 
	
		
			
				|  |  | +							pompom[i][j] = 0xffffffff - (CSDL_Ext::SDL_GetPixel(hide, i, j, true) & 0xff000000);
 | 
	
		
			
				|  |  | +						}
 | 
	
		
			
				|  |  | +					}
 | 
	
		
			
				|  |  | +					hide = SDL_ConvertSurface(hide, su->format, SDL_SWSURFACE);
 | 
	
		
			
				|  |  | +					for(int i=0; i<hide->w; ++i)
 | 
	
		
			
				|  |  | +					{
 | 
	
		
			
				|  |  | +						for(int j=0; j<hide->h; ++j)
 | 
	
		
			
				|  |  | +						{
 | 
	
		
			
				|  |  | +							Uint32 * place = (Uint32*)( (Uint8*)hide->pixels + j * hide->pitch + i * hide->format->BytesPerPixel);
 | 
	
		
			
				|  |  | +							(*place)&=pompom[i][j];
 | 
	
		
			
				|  |  | +						}
 | 
	
		
			
				|  |  | +					}
 | 
	
		
			
				|  |  | +					SDL_BlitSurface(hide, NULL, su, sr);
 | 
	
		
			
				|  |  | +				}
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  |  			delete sr;
 | 
	
		
			
				|  |  |  			//SDL_BlitSurface(su,NULL,ekran,NULL);SDL_Flip(ekran);
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  	return su;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +SDL_Surface * CMapHandler::terrBitmap(int x, int y)
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +	return terrainBitmap[x+4][y+4];
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +SDL_Surface * CMapHandler::undTerrBitmap(int x, int y)
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +	return undTerrainBitmap[x+4][y+4];
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +SDL_Surface * CMapHandler::getVisBitmap(int x, int y, std::vector< std::vector<bool> > & visibility)
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +	if(!visibility[x][y+1] && !visibility[x+1][y] && !visibility[x-1][y] && !visibility[x][y-1] && !visibility[x-1][y-1] && !visibility[x+1][y+1] && !visibility[x+1][y-1] && !visibility[x-1][y+1])
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		return fullHide->ourImages[rand()%fullHide->ourImages.size()].bitmap; //fully hidden
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	else if(!visibility[x][y+1] && !visibility[x+1][y] && !visibility[x-1][y] && !visibility[x][y-1] && !visibility[x-1][y-1] && visibility[x+1][y+1] && !visibility[x+1][y-1] && !visibility[x-1][y+1])
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		return partialHide->ourImages[22].bitmap; //visible right bottom corner
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	else if(!visibility[x][y+1] && !visibility[x+1][y] && !visibility[x-1][y] && !visibility[x][y-1] && !visibility[x-1][y-1] && !visibility[x+1][y+1] && visibility[x+1][y-1] && !visibility[x-1][y+1])
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		return partialHide->ourImages[15].bitmap; //visible right top corner
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	else if(!visibility[x][y+1] && !visibility[x+1][y] && !visibility[x-1][y] && !visibility[x][y-1] && !visibility[x-1][y-1] && !visibility[x+1][y+1] && !visibility[x+1][y-1] && visibility[x-1][y+1])
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		return CSDL_Ext::rotate01(partialHide->ourImages[22].bitmap); //visible left bottom corner
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	else if(!visibility[x][y+1] && !visibility[x+1][y] && !visibility[x-1][y] && !visibility[x][y-1] && visibility[x-1][y-1] && !visibility[x+1][y+1] && !visibility[x+1][y-1] && !visibility[x-1][y+1])
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		return CSDL_Ext::rotate01(partialHide->ourImages[15].bitmap); //visible left top corner
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	else if(!visibility[x][y+1] && !visibility[x+1][y] && !visibility[x-1][y] && visibility[x][y-1] && visibility[x-1][y-1] && !visibility[x+1][y+1] && visibility[x+1][y-1] && !visibility[x-1][y+1])
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		return partialHide->ourImages[rand()%2].bitmap; //visible top
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	else if(visibility[x][y+1] && !visibility[x+1][y] && !visibility[x-1][y] && !visibility[x][y-1] && !visibility[x-1][y-1] && visibility[x+1][y+1] && !visibility[x+1][y-1] && visibility[x-1][y+1])
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		return partialHide->ourImages[4+rand()%2].bitmap; //visble bottom
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	else if(!visibility[x][y+1] && !visibility[x+1][y] && visibility[x-1][y] && !visibility[x][y-1] && visibility[x-1][y-1] && !visibility[x+1][y+1] && !visibility[x+1][y-1] && visibility[x-1][y+1])
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		return CSDL_Ext::rotate01(partialHide->ourImages[2+rand()%2].bitmap); //visible left
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	else if(!visibility[x][y+1] && visibility[x+1][y] && !visibility[x-1][y] && !visibility[x][y-1] && !visibility[x-1][y-1] && visibility[x+1][y+1] && visibility[x+1][y-1] && !visibility[x-1][y+1])
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		return partialHide->ourImages[2+rand()%2].bitmap; //visible right
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	else if(visibility[x][y+1] && visibility[x+1][y] && !visibility[x-1][y] && !visibility[x][y-1] && !visibility[x-1][y-1])
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		return partialHide->ourImages[12+2*(rand()%2)].bitmap; //visible bottom, right - bottom, right; left top corner hidden
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	else if(!visibility[x][y+1] && visibility[x+1][y] && !visibility[x-1][y] && visibility[x][y-1] && !visibility[x-1][y+1])
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		return partialHide->ourImages[13].bitmap; //visible right, right - top; left bottom corner hidden
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	else if(!visibility[x][y+1] && !visibility[x+1][y] && visibility[x-1][y] && visibility[x][y-1] && !visibility[x+1][y+1])
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		return CSDL_Ext::rotate01(partialHide->ourImages[13].bitmap); //visible top, top - left, left; right bottom corner hidden
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	else if(visibility[x][y+1] && !visibility[x+1][y] && visibility[x-1][y] && !visibility[x][y-1]  && !visibility[x+1][y-1])
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		return CSDL_Ext::rotate01(partialHide->ourImages[12+2*(rand()%2)].bitmap); //visible left, left - bottom, bottom; right top corner hidden
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	else if(visibility[x][y+1] && visibility[x+1][y] && visibility[x-1][y] && visibility[x][y-1] && visibility[x-1][y-1] && visibility[x+1][y+1] && visibility[x+1][y-1] && visibility[x-1][y+1])
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		return partialHide->ourImages[10].bitmap; //visible left, right, bottom and top
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	if(!visibility[x][y+1] && !visibility[x+1][y] && !visibility[x-1][y] && !visibility[x][y-1] && !visibility[x-1][y-1] && visibility[x+1][y+1] && visibility[x+1][y-1] && !visibility[x-1][y+1])
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		return partialHide->ourImages[16].bitmap; //visible right corners
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	if(!visibility[x][y+1] && !visibility[x+1][y] && !visibility[x-1][y] && !visibility[x][y-1] && visibility[x-1][y-1] && !visibility[x+1][y+1] && visibility[x+1][y-1] && !visibility[x-1][y+1])
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		return partialHide->ourImages[18].bitmap; //visible top corners
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	if(!visibility[x][y+1] && !visibility[x+1][y] && !visibility[x-1][y] && !visibility[x][y-1] && visibility[x-1][y-1] && !visibility[x+1][y+1] && !visibility[x+1][y-1] && visibility[x-1][y+1])
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		return CSDL_Ext::rotate01(partialHide->ourImages[16].bitmap); //visible left corners
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	if(!visibility[x][y+1] && !visibility[x+1][y] && !visibility[x-1][y] && !visibility[x][y-1] && !visibility[x-1][y-1] && visibility[x+1][y+1] && !visibility[x+1][y-1] && visibility[x-1][y+1])
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		return CSDL_Ext::hFlip(partialHide->ourImages[18].bitmap); //visible bottom corners
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	if(!visibility[x][y+1] && !visibility[x+1][y] && !visibility[x-1][y] && !visibility[x][y-1] && !visibility[x-1][y-1] && !visibility[x+1][y+1] && visibility[x+1][y-1] && visibility[x-1][y+1])
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		return partialHide->ourImages[17].bitmap; //visible right - top and bottom - left corners
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	if(!visibility[x][y+1] && !visibility[x+1][y] && !visibility[x-1][y] && !visibility[x][y-1] && visibility[x-1][y-1] && visibility[x+1][y+1] && !visibility[x+1][y-1] && !visibility[x-1][y+1])
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		return CSDL_Ext::hFlip(partialHide->ourImages[17].bitmap); //visible top - left and bottom - right corners
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	if(!visibility[x][y+1] && !visibility[x+1][y] && !visibility[x-1][y] && !visibility[x][y-1] && !visibility[x-1][y-1] && visibility[x+1][y+1] && visibility[x+1][y-1] && visibility[x-1][y+1])
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		return partialHide->ourImages[19].bitmap; //visible corners without left top
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	if(!visibility[x][y+1] && !visibility[x+1][y] && !visibility[x-1][y] && !visibility[x][y-1] && visibility[x-1][y-1] && visibility[x+1][y+1] && visibility[x+1][y-1] && !visibility[x-1][y+1])
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		return partialHide->ourImages[20].bitmap; //visible corners without left bottom
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	if(!visibility[x][y+1] && !visibility[x+1][y] && !visibility[x-1][y] && !visibility[x][y-1] && visibility[x-1][y-1] && !visibility[x+1][y+1] && visibility[x+1][y-1] && visibility[x-1][y+1])
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		return CSDL_Ext::rotate01(partialHide->ourImages[20].bitmap); //visible corners without right bottom
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	if(!visibility[x][y+1] && !visibility[x+1][y] && !visibility[x-1][y] && !visibility[x][y-1] && visibility[x-1][y-1] && visibility[x+1][y+1] && !visibility[x+1][y-1] && visibility[x-1][y+1])
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		return CSDL_Ext::rotate01(partialHide->ourImages[19].bitmap); //visible corners without right top
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	if(!visibility[x][y+1] && !visibility[x+1][y] && !visibility[x-1][y] && !visibility[x][y-1] && visibility[x-1][y-1] && visibility[x+1][y+1] && visibility[x+1][y-1] && visibility[x-1][y+1])
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		return partialHide->ourImages[21].bitmap; //visible all corners only
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	if(visibility[x][y+1] && visibility[x+1][y] && visibility[x-1][y] && !visibility[x][y-1])
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		return partialHide->ourImages[6].bitmap; //hidden top
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	if(visibility[x][y+1] && !visibility[x+1][y] && visibility[x-1][y] && visibility[x][y-1])
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		return partialHide->ourImages[7].bitmap; //hidden right
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	if(!visibility[x][y+1] && visibility[x+1][y] && visibility[x-1][y] && visibility[x][y-1])
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		return partialHide->ourImages[8].bitmap; //hidden bottom
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	if(visibility[x][y+1] && visibility[x+1][y] && !visibility[x-1][y] && visibility[x][y-1])
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		return CSDL_Ext::rotate01(partialHide->ourImages[6].bitmap); //hidden left
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	if(!visibility[x][y+1] && visibility[x+1][y] && visibility[x-1][y] && visibility[x][y-1])
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		return partialHide->ourImages[9].bitmap; //hidden top and bottom
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	if(visibility[x][y+1] && visibility[x+1][y] && !visibility[x-1][y] && visibility[x][y-1])
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		return partialHide->ourImages[29].bitmap;  //hidden left and right
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	if(!visibility[x][y+1] && !visibility[x+1][y] && !visibility[x-1][y] && visibility[x][y-1] && visibility[x+1][y+1] && !visibility[x-1][y+1])
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		return partialHide->ourImages[24].bitmap; //visible top and right bottom corner
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	if(!visibility[x][y+1] && !visibility[x+1][y] && !visibility[x-1][y] && visibility[x][y-1] && !visibility[x+1][y+1] && visibility[x-1][y+1])
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		return CSDL_Ext::rotate01(partialHide->ourImages[24].bitmap); //visible top and left bottom corner
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	if(!visibility[x][y+1] && !visibility[x+1][y] && !visibility[x-1][y] && visibility[x][y-1] && visibility[x+1][y+1] && visibility[x-1][y+1])
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		return partialHide->ourImages[33].bitmap; //visible top and bottom corners
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	if(!visibility[x][y+1] && !visibility[x+1][y] && visibility[x-1][y] && !visibility[x][y-1] && !visibility[x+1][y+1] && visibility[x+1][y-1])
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		return CSDL_Ext::rotate01(partialHide->ourImages[26].bitmap); //visible left and right top corner
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	if(!visibility[x][y+1] && !visibility[x+1][y] && visibility[x-1][y] && !visibility[x][y-1] && visibility[x+1][y+1] && !visibility[x+1][y-1])
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		return CSDL_Ext::rotate01(partialHide->ourImages[25].bitmap); //visible left and right bottom corner
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	if(!visibility[x][y+1] && !visibility[x+1][y] && visibility[x-1][y] && !visibility[x][y-1] && visibility[x+1][y+1] && visibility[x+1][y-1])
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		return partialHide->ourImages[32].bitmap; //visible left and right corners
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	if(visibility[x][y+1] && !visibility[x+1][y] && !visibility[x-1][y] && !visibility[x][y-1] && visibility[x-1][y-1] && !visibility[x+1][y-1])
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		return CSDL_Ext::rotate01(partialHide->ourImages[30].bitmap); //visible bottom and left top corner
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	if(visibility[x][y+1] && !visibility[x+1][y] && !visibility[x-1][y] && !visibility[x][y-1] && !visibility[x-1][y-1] && visibility[x+1][y-1])
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		return partialHide->ourImages[30].bitmap; //visible bottom and right top corner
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	if(visibility[x][y+1] && !visibility[x+1][y] && !visibility[x-1][y] && !visibility[x][y-1] && visibility[x-1][y-1] && visibility[x+1][y-1])
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		return partialHide->ourImages[31].bitmap; //visible bottom and top corners
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	if(!visibility[x][y+1] && visibility[x+1][y] && !visibility[x-1][y] && !visibility[x][y-1] && !visibility[x-1][y-1] && visibility[x-1][y+1])
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		return partialHide->ourImages[25].bitmap; //visible right and left bottom corner
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	if(!visibility[x][y+1] && visibility[x+1][y] && !visibility[x-1][y] && !visibility[x][y-1] && visibility[x-1][y-1] && !visibility[x-1][y+1])
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		return partialHide->ourImages[26].bitmap; //visible right and left top corner
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	if(!visibility[x][y+1] && visibility[x+1][y] && !visibility[x-1][y] && !visibility[x][y-1] && visibility[x-1][y-1] && visibility[x-1][y+1])
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		return CSDL_Ext::rotate01(partialHide->ourImages[32].bitmap); //visible right and left cornres
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	if(visibility[x][y+1] && visibility[x+1][y] && !visibility[x-1][y] && !visibility[x][y-1] && visibility[x-1][y-1])
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		return partialHide->ourImages[28].bitmap; //visible bottom, right - bottom, right; left top corner visible
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	else if(!visibility[x][y+1] && visibility[x+1][y] && !visibility[x-1][y] && visibility[x][y-1] && visibility[x-1][y+1])
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		return partialHide->ourImages[27].bitmap; //visible right, right - top; left bottom corner visible
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	else if(!visibility[x][y+1] && !visibility[x+1][y] && visibility[x-1][y] && visibility[x][y-1] && visibility[x+1][y+1])
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		return CSDL_Ext::rotate01(partialHide->ourImages[27].bitmap); //visible top, top - left, left; right bottom corner visible
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	else if(visibility[x][y+1] && !visibility[x+1][y] && visibility[x-1][y] && !visibility[x][y-1]  && visibility[x+1][y-1])
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		return CSDL_Ext::rotate01(partialHide->ourImages[28].bitmap); //visible left, left - bottom, bottom; right top corner visible
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	return fullHide->ourImages[0].bitmap; //this case should never happen, but it is better to hide too much than reveal it....
 | 
	
		
			
				|  |  | +}
 |