1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-07-05 00:49:09 +02:00

* finishing hero flags

* some things with #36 and #41
This commit is contained in:
mateuszb
2007-10-16 17:46:01 +00:00
parent 730b469ec6
commit 355e21b56a
7 changed files with 138 additions and 138 deletions

View File

@ -790,7 +790,7 @@ void CTerrainRect::show()
{ {
SDL_Surface * teren = CGI->mh->terrainRect SDL_Surface * teren = CGI->mh->terrainRect
(LOCPLINT->adventureInt->position.x,LOCPLINT->adventureInt->position.y, (LOCPLINT->adventureInt->position.x,LOCPLINT->adventureInt->position.y,
tilesw,tilesh,LOCPLINT->adventureInt->position.z,LOCPLINT->adventureInt->anim); tilesw,tilesh,LOCPLINT->adventureInt->position.z,LOCPLINT->adventureInt->anim, LOCPLINT->cb->getVisibilityMap());
SDL_BlitSurface(teren,&genRect(pos.h,pos.w,0,0),ekran,&genRect(547,594,7,6)); SDL_BlitSurface(teren,&genRect(pos.h,pos.w,0,0),ekran,&genRect(547,594,7,6));
SDL_FreeSurface(teren); SDL_FreeSurface(teren);
if (currentPath && LOCPLINT->adventureInt->position.z==currentPath->startPos().z) //drawing path if (currentPath && LOCPLINT->adventureInt->position.z==currentPath->startPos().z) //drawing path

View File

@ -235,3 +235,8 @@ std::vector < std::string > CCallback::getObjDescriptions(int3 pos)
return CGI->mh->getObjDescriptions(pos); return CGI->mh->getObjDescriptions(pos);
else return std::vector< std::string > (); else return std::vector< std::string > ();
} }
PseudoV< PseudoV< PseudoV<unsigned char> > > & CCallback::getVisibilityMap()
{
return gs->players[player].fogOfWarMap;
}

View File

@ -1,16 +1,21 @@
#ifndef CCALLBACK_H #ifndef CCALLBACK_H
#define CCALLBACK_H #define CCALLBACK_H
#include "mapHandler.h"
class CGameState; class CGameState;
class CHeroInstance; class CHeroInstance;
class CTownInstance; class CTownInstance;
class CPath; class CPath;
class CObjectInstance; class CObjectInstance;
struct HeroMoveDetails struct HeroMoveDetails
{ {
int3 src, dst; //source and destination points int3 src, dst; //source and destination points
CObjectInstance * ho; //object instance of this hero CObjectInstance * ho; //object instance of this hero
int owner; int owner;
}; };
class CCallback class CCallback
{ {
private: private:
@ -34,6 +39,7 @@ public:
int howManyHeroes(int player); int howManyHeroes(int player);
const CHeroInstance * getHeroInfo(int player, int val, bool mode); //mode = 0 -> val = serial; mode = 1 -> val = ID const CHeroInstance * getHeroInfo(int player, int val, bool mode); //mode = 0 -> val = serial; mode = 1 -> val = ID
int getResourceAmount(int type); int getResourceAmount(int type);
PseudoV< PseudoV< PseudoV<unsigned char> > > & getVisibilityMap(); //returns visibility map (TODO: make it const)
int getDate(int mode=0); //mode=0 - total days in game, mode=1 - day of week, mode=2 - current week, mode=3 - current month int getDate(int mode=0); //mode=0 - total days in game, mode=1 - day of week, mode=2 - current week, mode=3 - current month
bool verifyPath(CPath * path, bool blockSea); bool verifyPath(CPath * path, bool blockSea);

View File

@ -1,6 +1,8 @@
#ifndef CGAMESTATE_H #ifndef CGAMESTATE_H
#define CGAMESTATE_H #define CGAMESTATE_H
#include "mapHandler.h"
class CHeroInstance; class CHeroInstance;
class CTownInstance; class CTownInstance;
class CCallback; class CCallback;
@ -9,7 +11,8 @@ struct PlayerState
{ {
public: public:
int color; int color;
std::vector<std::vector<std::vector<char> > >fogOfWarMap; //true - visible, false - hidden //std::vector<std::vector<std::vector<char> > > fogOfWarMap; //true - visible, false - hidden
PseudoV< PseudoV< PseudoV<unsigned char> > > fogOfWarMap; //true - visible, false - hidden
std::vector<int> resources; std::vector<int> resources;
std::vector<CHeroInstance *> heroes; std::vector<CHeroInstance *> heroes;
std::vector<CTownInstance *> towns; std::vector<CTownInstance *> towns;

View File

@ -146,13 +146,13 @@ void initGameState(CGameInfo * cgi)
/*************************FOG**OF**WAR******************************************/ /*************************FOG**OF**WAR******************************************/
for(std::map<int, PlayerState>::iterator k=cgi->state->players.begin(); k!=cgi->state->players.end(); ++k) for(std::map<int, PlayerState>::iterator k=cgi->state->players.begin(); k!=cgi->state->players.end(); ++k)
{ {
k->second.fogOfWarMap.resize(cgi->ac->map.width); k->second.fogOfWarMap.resize(cgi->ac->map.width, Woff);
for(int g=0; g<cgi->ac->map.width; ++g) for(int g=0; g<cgi->ac->map.width; ++g)
k->second.fogOfWarMap[g].resize(cgi->ac->map.height); k->second.fogOfWarMap[g].resize(cgi->ac->map.height, Hoff);
for(int g=0; g<cgi->ac->map.width; ++g) for(int g=0; g<cgi->ac->map.width; ++g)
for(int h=0; h<cgi->ac->map.height; ++h) for(int h=0; h<cgi->ac->map.height; ++h)
k->second.fogOfWarMap[g][h].resize(cgi->ac->map.twoLevel+1); k->second.fogOfWarMap[g][h].resize(cgi->ac->map.twoLevel+1, 0);
for(int g=0; g<cgi->ac->map.width; ++g) for(int g=0; g<cgi->ac->map.width; ++g)
for(int h=0; h<cgi->ac->map.height; ++h) for(int h=0; h<cgi->ac->map.height; ++h)

View File

@ -30,31 +30,36 @@ void CMapHandler::init()
CSDL_Ext::alphaTransform(partialHide->ourImages[i].bitmap); CSDL_Ext::alphaTransform(partialHide->ourImages[i].bitmap);
} }
visibility.resize(reader->map.width+2*Woff); //visibility.resize(reader->map.width+2*Woff);
for(int gg=0; gg<reader->map.width+2*Woff; ++gg) //for(int gg=0; gg<reader->map.width+2*Woff; ++gg)
//{
// visibility[gg].resize(reader->map.height+2*Hoff);
// for(int jj=0; jj<reader->map.height+2*Hoff; ++jj)
// visibility[gg][jj] = true;
//}
visibility.resize(CGI->ac->map.width, Woff);
for (int i=0-Woff;i<visibility.size()-Woff;i++)
{ {
visibility[gg].resize(reader->map.height+2*Hoff); visibility[i].resize(CGI->ac->map.height,Hoff);
for(int jj=0; jj<reader->map.height+2*Hoff; ++jj)
visibility[gg][jj] = true;
} }
undVisibility.resize(reader->map.width+2*Woff); for (int i=0-Woff; i<visibility.size()-Woff; ++i)
for(int gg=0; gg<reader->map.width+2*Woff; ++gg)
{ {
undVisibility[gg].resize(reader->map.height+2*Woff); for (int j=0-Hoff; j<CGI->ac->map.height+Hoff; ++j)
for(int jj=0; jj<reader->map.height+2*Woff; ++jj) {
undVisibility[gg][jj] = true; visibility[i][j].resize(CGI->ac->map.twoLevel+1,0);
for(int k=0; k<CGI->ac->map.twoLevel+1; ++k)
visibility[i][j][k]=true;
}
} }
visibility[6][7] = false; //visibility[6][7][1] = false;
undVisibility[5][7] = false; //visibility[7][7][1] = false;
visibility[7][7] = false; //visibility[6][8][1] = false;
visibility[6][8] = false; //visibility[6][6][1] = false;
visibility[6][6] = false; //visibility[5][8][1] = false;
//visibility[5][6] = false; //visibility[7][6][1] = false;
//visibility[7][8] = false; //visibility[6][9][1] = false;
visibility[5][8] = false;
visibility[7][6] = false;
visibility[6][9] = false;
//initializing road's and river's DefHandlers //initializing road's and river's DefHandlers
@ -421,7 +426,7 @@ void CMapHandler::init()
} }
} }
SDL_Surface * CMapHandler::terrainRect(int x, int y, int dx, int dy, int level, unsigned char anim) SDL_Surface * CMapHandler::terrainRect(int x, int y, int dx, int dy, int level, unsigned char anim, PseudoV< PseudoV< PseudoV<unsigned char> > > & visibilityMap)
{ {
#if SDL_BYTEORDER == SDL_BIG_ENDIAN #if SDL_BYTEORDER == SDL_BIG_ENDIAN
int rmask = 0xff000000; int rmask = 0xff000000;
@ -517,11 +522,9 @@ SDL_Surface * CMapHandler::terrainRect(int x, int y, int dx, int dy, int level,
} }
} }
SDL_BlitSurface(tb,&pp,su,&sr); SDL_BlitSurface(tb,&pp,su,&sr);
if(!ttiles[x+bx][y+by][level].objects[h].first->flagPrinted) pp.y+=imgVal*2-32;
{ sr.y-=16;
SDL_BlitSurface(CGI->heroh->flags4[ttiles[x+bx][y+by][level].objects[h].first->owner]->ourImages[gg+anim%imgVal+35].bitmap, NULL, su, &sr); SDL_BlitSurface(CGI->heroh->flags4[ttiles[x+bx][y+by][level].objects[h].first->owner]->ourImages[gg+anim%imgVal+35].bitmap, &pp, su, &sr);
ttiles[x+bx][y+by][level].objects[h].first->flagPrinted = true;
}
break; break;
} }
case 2: case 2:
@ -539,11 +542,9 @@ SDL_Surface * CMapHandler::terrainRect(int x, int y, int dx, int dy, int level,
} }
} }
SDL_BlitSurface(tb,&pp,su,&sr); SDL_BlitSurface(tb,&pp,su,&sr);
if(!ttiles[x+bx][y+by][level].objects[h].first->flagPrinted) pp.y+=imgVal*2-32;
{ sr.y-=16;
SDL_BlitSurface(CGI->heroh->flags4[ttiles[x+bx][y+by][level].objects[h].first->owner]->ourImages[gg+anim%imgVal+35].bitmap, NULL, su, &sr); SDL_BlitSurface(CGI->heroh->flags4[ttiles[x+bx][y+by][level].objects[h].first->owner]->ourImages[gg+anim%imgVal+35].bitmap, &pp, su, &sr);
ttiles[x+bx][y+by][level].objects[h].first->flagPrinted = true;
}
break; break;
} }
case 3: case 3:
@ -561,11 +562,9 @@ SDL_Surface * CMapHandler::terrainRect(int x, int y, int dx, int dy, int level,
} }
} }
SDL_BlitSurface(tb,&pp,su,&sr); SDL_BlitSurface(tb,&pp,su,&sr);
if(!ttiles[x+bx][y+by][level].objects[h].first->flagPrinted) pp.y+=imgVal*2-32;
{ sr.y-=16;
SDL_BlitSurface(CGI->heroh->flags4[ttiles[x+bx][y+by][level].objects[h].first->owner]->ourImages[gg+anim%imgVal+35].bitmap, NULL, su, &sr); SDL_BlitSurface(CGI->heroh->flags4[ttiles[x+bx][y+by][level].objects[h].first->owner]->ourImages[gg+anim%imgVal+35].bitmap, &pp, su, &sr);
ttiles[x+bx][y+by][level].objects[h].first->flagPrinted = true;
}
break; break;
} }
case 4: case 4:
@ -583,16 +582,9 @@ SDL_Surface * CMapHandler::terrainRect(int x, int y, int dx, int dy, int level,
} }
} }
SDL_BlitSurface(tb,&pp,su,&sr); SDL_BlitSurface(tb,&pp,su,&sr);
if(ttiles[x+bx][y+by][level].objects[h].first->flagPrinted++==2 ) pp.y+=imgVal*2-32;
{ sr.y-=16;
SDL_Rect bufr = pp; SDL_BlitSurface(CGI->heroh->flags4[ttiles[x+bx][y+by][level].objects[h].first->owner]->ourImages[gg+anim%imgVal+35].bitmap, &pp, su, &sr);
bufr.w = 3*32;
bufr.h = 2*32;
bufr.x = 32 - bufr.x + 3*32 + bx + y + 6*32-10;
bufr.y = 32 - bufr.y + 2*32 + by + x + 5*32-12;
SDL_BlitSurface(CGI->heroh->flags4[ttiles[x+bx][y+by][level].objects[h].first->owner]->ourImages[gg+anim%imgVal+35].bitmap, NULL, su, &bufr);
//ttiles[x+bx][y+by][level].objects[h].first->flagPrinted = true;
}
break; break;
} }
case 5: case 5:
@ -610,14 +602,12 @@ SDL_Surface * CMapHandler::terrainRect(int x, int y, int dx, int dy, int level,
} }
} }
SDL_BlitSurface(tb,&pp,su,&sr); SDL_BlitSurface(tb,&pp,su,&sr);
if(!ttiles[x+bx][y+by][level].objects[h].first->flagPrinted) pp.y+=imgVal*2-32;
{ sr.y-=16;
SDL_BlitSurface(CGI->heroh->flags4[ttiles[x+bx][y+by][level].objects[h].first->owner]->ourImages[gg+anim%imgVal+35].bitmap, NULL, su, &sr); SDL_BlitSurface(CGI->heroh->flags4[ttiles[x+bx][y+by][level].objects[h].first->owner]->ourImages[gg+anim%imgVal+35].bitmap, &pp, su, &sr);
ttiles[x+bx][y+by][level].objects[h].first->flagPrinted = true;
}
break; break;
} }
case 6: case 6: //ok
{ {
if(((CHeroObjInfo*)ttiles[x+bx][y+by][level].objects[h].first->info)->myInstance->type==NULL) if(((CHeroObjInfo*)ttiles[x+bx][y+by][level].objects[h].first->info)->myInstance->type==NULL)
continue; continue;
@ -632,11 +622,9 @@ SDL_Surface * CMapHandler::terrainRect(int x, int y, int dx, int dy, int level,
} }
} }
SDL_BlitSurface(tb,&pp,su,&sr); SDL_BlitSurface(tb,&pp,su,&sr);
if(!ttiles[x+bx][y+by][level].objects[h].first->flagPrinted) pp.y+=imgVal*2-32;
{ sr.y-=16;
SDL_BlitSurface(CGI->heroh->flags4[ttiles[x+bx][y+by][level].objects[h].first->owner]->ourImages[gg+anim%imgVal+35].bitmap, NULL, su, &sr); SDL_BlitSurface(CGI->heroh->flags4[ttiles[x+bx][y+by][level].objects[h].first->owner]->ourImages[gg+anim%imgVal+35].bitmap, &pp, su, &sr);
ttiles[x+bx][y+by][level].objects[h].first->flagPrinted = true;
}
break; break;
} }
case 7: case 7:
@ -654,11 +642,9 @@ SDL_Surface * CMapHandler::terrainRect(int x, int y, int dx, int dy, int level,
} }
} }
SDL_BlitSurface(tb,&pp,su,&sr); SDL_BlitSurface(tb,&pp,su,&sr);
if(!ttiles[x+bx][y+by][level].objects[h].first->flagPrinted) pp.y+=imgVal*2-32;
{ sr.y-=16;
SDL_BlitSurface(CGI->heroh->flags4[ttiles[x+bx][y+by][level].objects[h].first->owner]->ourImages[gg+anim%imgVal+35].bitmap, NULL, su, &sr); SDL_BlitSurface(CGI->heroh->flags4[ttiles[x+bx][y+by][level].objects[h].first->owner]->ourImages[gg+anim%imgVal+35].bitmap, &pp, su, &sr);
ttiles[x+bx][y+by][level].objects[h].first->flagPrinted = true;
}
break; break;
} }
case 8: case 8:
@ -676,11 +662,9 @@ SDL_Surface * CMapHandler::terrainRect(int x, int y, int dx, int dy, int level,
} }
} }
SDL_BlitSurface(tb,&pp,su,&sr); SDL_BlitSurface(tb,&pp,su,&sr);
if(!ttiles[x+bx][y+by][level].objects[h].first->flagPrinted) pp.y+=imgVal*2-32;
{ sr.y-=16;
SDL_BlitSurface(CGI->heroh->flags4[ttiles[x+bx][y+by][level].objects[h].first->owner]->ourImages[gg+anim%imgVal+35].bitmap, NULL, su, &sr); SDL_BlitSurface(CGI->heroh->flags4[ttiles[x+bx][y+by][level].objects[h].first->owner]->ourImages[gg+anim%imgVal+35].bitmap, &pp, su, &sr);
ttiles[x+bx][y+by][level].objects[h].first->flagPrinted = true;
}
break; break;
} }
} }
@ -923,9 +907,10 @@ SDL_Surface * CMapHandler::terrainRect(int x, int y, int dx, int dy, int level,
if (!level) if (!level)
{ {
if( bx+x>-1 && by+y>-1 && bx+x<visibility.size()-(-1) && by+y<visibility[0].size()-(-1) && !visibility[bx+x][by+y]) //if( bx+x>-1 && by+y>-1 && bx+x<visibilityMap.size()-(-1) && by+y<visibilityMap[0].size()-(-1) && !visibilityMap[bx+x][by+y][0])
if(bx+x>=0 && by+y>=0 && bx+x<CGI->mh->reader->map.width && bx+x<CGI->mh->reader->map.height && !visibilityMap[bx+x][by+y][0])
{ {
SDL_Surface * hide = getVisBitmap(bx+x, by+y, visibility); SDL_Surface * hide = getVisBitmap(bx+x, by+y, visibilityMap, 0);
SDL_Surface * hide2 = CSDL_Ext::secondAlphaTransform(hide, su); SDL_Surface * hide2 = CSDL_Ext::secondAlphaTransform(hide, su);
SDL_BlitSurface(hide2, NULL, su, &sr); SDL_BlitSurface(hide2, NULL, su, &sr);
SDL_FreeSurface(hide2); SDL_FreeSurface(hide2);
@ -933,9 +918,10 @@ SDL_Surface * CMapHandler::terrainRect(int x, int y, int dx, int dy, int level,
} }
else else
{ {
if( bx+x>-1 && by+y>-1 && bx+x<undVisibility.size()-(-1) && by+y<undVisibility[0].size()-(-1) && !undVisibility[bx+x][by+y]) //if( bx+x>-1 && by+y>-1 && bx+x<visibilityMap.size()-(-1) && by+y<visibilityMap[0].size()-(-1) && !visibilityMap[bx+x][by+y][1])
if(bx+x>=0 && by+y>=0 && bx+x<CGI->mh->reader->map.width && bx+x<CGI->mh->reader->map.height && !visibilityMap[bx+x][by+y][1])
{ {
SDL_Surface * hide = getVisBitmap(bx+x, by+y, undVisibility); SDL_Surface * hide = getVisBitmap(bx+x, by+y, visibilityMap, 1);
SDL_Surface * hide2 = CSDL_Ext::secondAlphaTransform(hide, su); SDL_Surface * hide2 = CSDL_Ext::secondAlphaTransform(hide, su);
SDL_BlitSurface(hide2, NULL, su, &sr); SDL_BlitSurface(hide2, NULL, su, &sr);
SDL_FreeSurface(hide2); SDL_FreeSurface(hide2);
@ -1014,214 +1000,214 @@ SDL_Surface * CMapHandler::undTerrBitmap(int x, int y)
return ttiles[x+Woff][y+Hoff][0].terbitmap[1]; return ttiles[x+Woff][y+Hoff][0].terbitmap[1];
} }
SDL_Surface * CMapHandler::getVisBitmap(int x, int y, std::vector< std::vector<char> > & visibility) SDL_Surface * CMapHandler::getVisBitmap(int x, int y, const PseudoV< PseudoV< PseudoV<unsigned char> > > & visibilityMap, int lvl)
{ {
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]) if(visibility[x][y+1][lvl] && visibility[x+1][y][lvl] && visibility[x-1][y][lvl] && visibility[x][y-1][lvl] && visibility[x-1][y-1][lvl] && visibility[x+1][y+1][lvl] && visibility[x+1][y-1][lvl] && visibility[x-1][y+1][lvl])
{ {
return fullHide->ourImages[rand()%fullHide->ourImages.size()].bitmap; //fully hidden 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]) else if(visibility[x][y+1][lvl] && visibility[x+1][y][lvl] && visibility[x-1][y][lvl] && visibility[x][y-1][lvl] && visibility[x-1][y-1][lvl] && !visibility[x+1][y+1][lvl] && visibility[x+1][y-1][lvl] && visibility[x-1][y+1][lvl])
{ {
return partialHide->ourImages[22].bitmap; //visible right bottom corner 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]) else if(visibility[x][y+1][lvl] && visibility[x+1][y][lvl] && visibility[x-1][y][lvl] && visibility[x][y-1][lvl] && visibility[x-1][y-1][lvl] && visibility[x+1][y+1][lvl] && !visibility[x+1][y-1][lvl] && visibility[x-1][y+1][lvl])
{ {
return partialHide->ourImages[15].bitmap; //visible right top corner 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]) else if(visibility[x][y+1][lvl] && visibility[x+1][y][lvl] && visibility[x-1][y][lvl] && visibility[x][y-1][lvl] && visibility[x-1][y-1][lvl] && visibility[x+1][y+1][lvl] && visibility[x+1][y-1][lvl] && !visibility[x-1][y+1][lvl])
{ {
return CSDL_Ext::rotate01(partialHide->ourImages[22].bitmap); //visible left bottom corner 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]) else if(visibility[x][y+1][lvl] && visibility[x+1][y][lvl] && visibility[x-1][y][lvl] && visibility[x][y-1][lvl] && !visibility[x-1][y-1][lvl] && visibility[x+1][y+1][lvl] && visibility[x+1][y-1][lvl] && visibility[x-1][y+1][lvl])
{ {
return CSDL_Ext::rotate01(partialHide->ourImages[15].bitmap); //visible left top corner 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]) else if(visibility[x][y+1][lvl] && visibility[x+1][y][lvl] && visibility[x-1][y][lvl] && !visibility[x][y-1][lvl] && !visibility[x-1][y-1][lvl] && visibility[x+1][y+1][lvl] && !visibility[x+1][y-1][lvl] && visibility[x-1][y+1][lvl])
{ {
//return partialHide->ourImages[rand()%2].bitmap; //visible top //return partialHide->ourImages[rand()%2].bitmap; //visible top
return partialHide->ourImages[0].bitmap; //visible top return partialHide->ourImages[0].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]) else if(!visibility[x][y+1][lvl] && visibility[x+1][y][lvl] && visibility[x-1][y][lvl] && visibility[x][y-1][lvl] && visibility[x-1][y-1][lvl] && !visibility[x+1][y+1][lvl] && visibility[x+1][y-1][lvl] && !visibility[x-1][y+1][lvl])
{ {
//return partialHide->ourImages[4+rand()%2].bitmap; //visble bottom //return partialHide->ourImages[4+rand()%2].bitmap; //visble bottom
return partialHide->ourImages[4].bitmap; //visble bottom return partialHide->ourImages[4].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]) else if(visibility[x][y+1][lvl] && visibility[x+1][y][lvl] && !visibility[x-1][y][lvl] && visibility[x][y-1][lvl] && !visibility[x-1][y-1][lvl] && visibility[x+1][y+1][lvl] && visibility[x+1][y-1][lvl] && !visibility[x-1][y+1][lvl])
{ {
//return CSDL_Ext::rotate01(partialHide->ourImages[2+rand()%2].bitmap); //visible left //return CSDL_Ext::rotate01(partialHide->ourImages[2+rand()%2].bitmap); //visible left
return CSDL_Ext::rotate01(partialHide->ourImages[2].bitmap); //visible left return CSDL_Ext::rotate01(partialHide->ourImages[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]) else if(visibility[x][y+1][lvl] && !visibility[x+1][y][lvl] && visibility[x-1][y][lvl] && visibility[x][y-1][lvl] && visibility[x-1][y-1][lvl] && !visibility[x+1][y+1][lvl] && !visibility[x+1][y-1][lvl] && visibility[x-1][y+1][lvl])
{ {
//return partialHide->ourImages[2+rand()%2].bitmap; //visible right //return partialHide->ourImages[2+rand()%2].bitmap; //visible right
return partialHide->ourImages[2].bitmap; //visible right return partialHide->ourImages[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]) else if(!visibility[x][y+1][lvl] && !visibility[x+1][y][lvl] && visibility[x-1][y][lvl] && visibility[x][y-1][lvl] && visibility[x-1][y-1][lvl])
{ {
//return partialHide->ourImages[12+2*(rand()%2)].bitmap; //visible bottom, right - bottom, right; left top corner hidden //return partialHide->ourImages[12+2*(rand()%2)].bitmap; //visible bottom, right - bottom, right; left top corner hidden
return partialHide->ourImages[12].bitmap; //visible bottom, right - bottom, right; left top corner hidden return partialHide->ourImages[12].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]) else if(visibility[x][y+1][lvl] && !visibility[x+1][y][lvl] && visibility[x-1][y][lvl] && !visibility[x][y-1][lvl] && visibility[x-1][y+1][lvl])
{ {
return partialHide->ourImages[13].bitmap; //visible right, right - top; left bottom corner hidden 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]) else if(visibility[x][y+1][lvl] && visibility[x+1][y][lvl] && !visibility[x-1][y][lvl] && !visibility[x][y-1][lvl] && visibility[x+1][y+1][lvl])
{ {
return CSDL_Ext::rotate01(partialHide->ourImages[13].bitmap); //visible top, top - left, left; right bottom corner hidden 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]) else if(!visibility[x][y+1][lvl] && visibility[x+1][y][lvl] && !visibility[x-1][y][lvl] && visibility[x][y-1][lvl] && visibility[x+1][y-1][lvl])
{ {
//return CSDL_Ext::rotate01(partialHide->ourImages[12+2*(rand()%2)].bitmap); //visible left, left - bottom, bottom; right top corner hidden //return CSDL_Ext::rotate01(partialHide->ourImages[12+2*(rand()%2)].bitmap); //visible left, left - bottom, bottom; right top corner hidden
return CSDL_Ext::rotate01(partialHide->ourImages[12].bitmap); //visible left, left - bottom, bottom; right top corner hidden return CSDL_Ext::rotate01(partialHide->ourImages[12].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]) else if(!visibility[x][y+1][lvl] && !visibility[x+1][y][lvl] && !visibility[x-1][y][lvl] && !visibility[x][y-1][lvl] && !visibility[x-1][y-1][lvl] && !visibility[x+1][y+1][lvl] && !visibility[x+1][y-1][lvl] && !visibility[x-1][y+1][lvl])
{ {
return partialHide->ourImages[10].bitmap; //visible left, right, bottom and top 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]) if(visibility[x][y+1][lvl] && visibility[x+1][y][lvl] && visibility[x-1][y][lvl] && visibility[x][y-1][lvl] && visibility[x-1][y-1][lvl] && !visibility[x+1][y+1][lvl] && !visibility[x+1][y-1][lvl] && visibility[x-1][y+1][lvl])
{ {
return partialHide->ourImages[16].bitmap; //visible right corners 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]) if(visibility[x][y+1][lvl] && visibility[x+1][y][lvl] && visibility[x-1][y][lvl] && visibility[x][y-1][lvl] && !visibility[x-1][y-1][lvl] && visibility[x+1][y+1][lvl] && !visibility[x+1][y-1][lvl] && visibility[x-1][y+1][lvl])
{ {
return partialHide->ourImages[18].bitmap; //visible top corners 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]) if(visibility[x][y+1][lvl] && visibility[x+1][y][lvl] && visibility[x-1][y][lvl] && visibility[x][y-1][lvl] && !visibility[x-1][y-1][lvl] && visibility[x+1][y+1][lvl] && visibility[x+1][y-1][lvl] && !visibility[x-1][y+1][lvl])
{ {
return CSDL_Ext::rotate01(partialHide->ourImages[16].bitmap); //visible left corners 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]) if(visibility[x][y+1][lvl] && visibility[x+1][y][lvl] && visibility[x-1][y][lvl] && visibility[x][y-1][lvl] && visibility[x-1][y-1][lvl] && !visibility[x+1][y+1][lvl] && visibility[x+1][y-1][lvl] && !visibility[x-1][y+1][lvl])
{ {
return CSDL_Ext::hFlip(partialHide->ourImages[18].bitmap); //visible bottom corners 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]) if(visibility[x][y+1][lvl] && visibility[x+1][y][lvl] && visibility[x-1][y][lvl] && visibility[x][y-1][lvl] && visibility[x-1][y-1][lvl] && visibility[x+1][y+1][lvl] && !visibility[x+1][y-1][lvl] && !visibility[x-1][y+1][lvl])
{ {
return partialHide->ourImages[17].bitmap; //visible right - top and bottom - left corners 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]) if(visibility[x][y+1][lvl] && visibility[x+1][y][lvl] && visibility[x-1][y][lvl] && visibility[x][y-1][lvl] && !visibility[x-1][y-1][lvl] && !visibility[x+1][y+1][lvl] && visibility[x+1][y-1][lvl] && visibility[x-1][y+1][lvl])
{ {
return CSDL_Ext::hFlip(partialHide->ourImages[17].bitmap); //visible top - left and bottom - right corners 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]) if(visibility[x][y+1][lvl] && visibility[x+1][y][lvl] && visibility[x-1][y][lvl] && visibility[x][y-1][lvl] && visibility[x-1][y-1][lvl] && !visibility[x+1][y+1][lvl] && !visibility[x+1][y-1][lvl] && !visibility[x-1][y+1][lvl])
{ {
return partialHide->ourImages[19].bitmap; //visible corners without left top 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]) if(visibility[x][y+1][lvl] && visibility[x+1][y][lvl] && visibility[x-1][y][lvl] && visibility[x][y-1][lvl] && !visibility[x-1][y-1][lvl] && !visibility[x+1][y+1][lvl] && !visibility[x+1][y-1][lvl] && visibility[x-1][y+1][lvl])
{ {
return partialHide->ourImages[20].bitmap; //visible corners without left bottom 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]) if(visibility[x][y+1][lvl] && visibility[x+1][y][lvl] && visibility[x-1][y][lvl] && visibility[x][y-1][lvl] && !visibility[x-1][y-1][lvl] && visibility[x+1][y+1][lvl] && !visibility[x+1][y-1][lvl] && !visibility[x-1][y+1][lvl])
{ {
return CSDL_Ext::rotate01(partialHide->ourImages[20].bitmap); //visible corners without right bottom 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]) if(visibility[x][y+1][lvl] && visibility[x+1][y][lvl] && visibility[x-1][y][lvl] && visibility[x][y-1][lvl] && !visibility[x-1][y-1][lvl] && !visibility[x+1][y+1][lvl] && visibility[x+1][y-1][lvl] && !visibility[x-1][y+1][lvl])
{ {
return CSDL_Ext::rotate01(partialHide->ourImages[19].bitmap); //visible corners without right top 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]) if(visibility[x][y+1][lvl] && visibility[x+1][y][lvl] && visibility[x-1][y][lvl] && visibility[x][y-1][lvl] && !visibility[x-1][y-1][lvl] && !visibility[x+1][y+1][lvl] && !visibility[x+1][y-1][lvl] && !visibility[x-1][y+1][lvl])
{ {
return partialHide->ourImages[21].bitmap; //visible all corners only 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]) if(!visibility[x][y+1][lvl] && !visibility[x+1][y][lvl] && !visibility[x-1][y][lvl] && visibility[x][y-1][lvl])
{ {
return partialHide->ourImages[6].bitmap; //hidden top return partialHide->ourImages[6].bitmap; //hidden top
} }
if(visibility[x][y+1] && !visibility[x+1][y] && visibility[x-1][y] && visibility[x][y-1]) if(!visibility[x][y+1][lvl] && visibility[x+1][y][lvl] && !visibility[x-1][y][lvl] && !visibility[x][y-1][lvl])
{ {
return partialHide->ourImages[7].bitmap; //hidden right return partialHide->ourImages[7].bitmap; //hidden right
} }
if(!visibility[x][y+1] && visibility[x+1][y] && visibility[x-1][y] && visibility[x][y-1]) if(visibility[x][y+1][lvl] && !visibility[x+1][y][lvl] && !visibility[x-1][y][lvl] && !visibility[x][y-1][lvl])
{ {
return partialHide->ourImages[8].bitmap; //hidden bottom return partialHide->ourImages[8].bitmap; //hidden bottom
} }
if(visibility[x][y+1] && visibility[x+1][y] && !visibility[x-1][y] && visibility[x][y-1]) if(!visibility[x][y+1][lvl] && !visibility[x+1][y][lvl] && visibility[x-1][y][lvl] && !visibility[x][y-1][lvl])
{ {
return CSDL_Ext::rotate01(partialHide->ourImages[6].bitmap); //hidden left 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]) if(visibility[x][y+1][lvl] && !visibility[x+1][y][lvl] && !visibility[x-1][y][lvl] && !visibility[x][y-1][lvl])
{ {
return partialHide->ourImages[9].bitmap; //hidden top and bottom 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]) if(!visibility[x][y+1][lvl] && !visibility[x+1][y][lvl] && visibility[x-1][y][lvl] && !visibility[x][y-1][lvl])
{ {
return partialHide->ourImages[29].bitmap; //hidden left and right 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]) if(visibility[x][y+1][lvl] && visibility[x+1][y][lvl] && visibility[x-1][y][lvl] && !visibility[x][y-1][lvl] && !visibility[x+1][y+1][lvl] && visibility[x-1][y+1][lvl])
{ {
return partialHide->ourImages[24].bitmap; //visible top and right bottom corner 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]) if(visibility[x][y+1][lvl] && visibility[x+1][y][lvl] && visibility[x-1][y][lvl] && !visibility[x][y-1][lvl] && visibility[x+1][y+1][lvl] && !visibility[x-1][y+1][lvl])
{ {
return CSDL_Ext::rotate01(partialHide->ourImages[24].bitmap); //visible top and left bottom corner 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]) if(visibility[x][y+1][lvl] && visibility[x+1][y][lvl] && visibility[x-1][y][lvl] && !visibility[x][y-1][lvl] && !visibility[x+1][y+1][lvl] && !visibility[x-1][y+1][lvl])
{ {
return partialHide->ourImages[33].bitmap; //visible top and bottom corners 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]) if(visibility[x][y+1][lvl] && visibility[x+1][y][lvl] && !visibility[x-1][y][lvl] && visibility[x][y-1][lvl] && visibility[x+1][y+1][lvl] && !visibility[x+1][y-1][lvl])
{ {
return CSDL_Ext::rotate01(partialHide->ourImages[26].bitmap); //visible left and right top corner 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]) if(visibility[x][y+1][lvl] && visibility[x+1][y][lvl] && !visibility[x-1][y][lvl] && visibility[x][y-1][lvl] && !visibility[x+1][y+1][lvl] && visibility[x+1][y-1][lvl])
{ {
return CSDL_Ext::rotate01(partialHide->ourImages[25].bitmap); //visible left and right bottom corner 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]) if(visibility[x][y+1][lvl] && visibility[x+1][y][lvl] && !visibility[x-1][y][lvl] && visibility[x][y-1][lvl] && !visibility[x+1][y+1][lvl] && !visibility[x+1][y-1][lvl])
{ {
return partialHide->ourImages[32].bitmap; //visible left and right corners 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]) if(!visibility[x][y+1][lvl] && visibility[x+1][y][lvl] && visibility[x-1][y][lvl] && visibility[x][y-1][lvl] && !visibility[x-1][y-1][lvl] && visibility[x+1][y-1][lvl])
{ {
return CSDL_Ext::rotate01(partialHide->ourImages[30].bitmap); //visible bottom and left top corner 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]) if(!visibility[x][y+1][lvl] && visibility[x+1][y][lvl] && visibility[x-1][y][lvl] && visibility[x][y-1][lvl] && visibility[x-1][y-1][lvl] && !visibility[x+1][y-1][lvl])
{ {
return partialHide->ourImages[30].bitmap; //visible bottom and right top corner 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]) if(!visibility[x][y+1][lvl] && visibility[x+1][y][lvl] && visibility[x-1][y][lvl] && visibility[x][y-1][lvl] && !visibility[x-1][y-1][lvl] && !visibility[x+1][y-1][lvl])
{ {
return partialHide->ourImages[31].bitmap; //visible bottom and top corners 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]) if(visibility[x][y+1][lvl] && !visibility[x+1][y][lvl] && visibility[x-1][y][lvl] && visibility[x][y-1][lvl] && visibility[x-1][y-1][lvl] && !visibility[x-1][y+1][lvl])
{ {
return partialHide->ourImages[25].bitmap; //visible right and left bottom corner 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]) if(visibility[x][y+1][lvl] && !visibility[x+1][y][lvl] && visibility[x-1][y][lvl] && visibility[x][y-1][lvl] && !visibility[x-1][y-1][lvl] && visibility[x-1][y+1][lvl])
{ {
return partialHide->ourImages[26].bitmap; //visible right and left top corner 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]) if(visibility[x][y+1][lvl] && !visibility[x+1][y][lvl] && visibility[x-1][y][lvl] && visibility[x][y-1][lvl] && !visibility[x-1][y-1][lvl] && !visibility[x-1][y+1][lvl])
{ {
return CSDL_Ext::rotate01(partialHide->ourImages[32].bitmap); //visible right and left cornres 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]) if(!visibility[x][y+1][lvl] && !visibility[x+1][y][lvl] && visibility[x-1][y][lvl] && visibility[x][y-1][lvl] && !visibility[x-1][y-1][lvl])
{ {
return partialHide->ourImages[28].bitmap; //visible bottom, right - bottom, right; left top corner visible 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]) else if(visibility[x][y+1][lvl] && !visibility[x+1][y][lvl] && visibility[x-1][y][lvl] && !visibility[x][y-1][lvl] && !visibility[x-1][y+1][lvl])
{ {
return partialHide->ourImages[27].bitmap; //visible right, right - top; left bottom corner visible 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]) else if(visibility[x][y+1][lvl] && visibility[x+1][y][lvl] && !visibility[x-1][y][lvl] && !visibility[x][y-1][lvl] && !visibility[x+1][y+1][lvl])
{ {
return CSDL_Ext::rotate01(partialHide->ourImages[27].bitmap); //visible top, top - left, left; right bottom corner visible 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]) else if(!visibility[x][y+1][lvl] && visibility[x+1][y][lvl] && !visibility[x-1][y][lvl] && visibility[x][y-1][lvl] && !visibility[x+1][y-1][lvl])
{ {
return CSDL_Ext::rotate01(partialHide->ourImages[28].bitmap); //visible left, left - bottom, bottom; right top corner visible 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.... return fullHide->ourImages[0].bitmap; //this case should never happen, but it is better to hide too much than reveal it....
} }
char & CMapHandler::visAccess(int x, int y) //char & CMapHandler::visAccess(int x, int y)
{ //{
return visibility[x+Woff][y+Hoff]; // return visibility[x+Woff][y+Hoff];
} //}
//
char & CMapHandler::undVisAccess(int x, int y) //char & CMapHandler::undVisAccess(int x, int y)
{ //{
return undVisibility[x+Woff][y+Hoff]; // return undVisibility[x+Woff][y+Hoff];
} //}
int CMapHandler::getCost(int3 &a, int3 &b, const CHeroInstance *hero) int CMapHandler::getCost(int3 &a, int3 &b, const CHeroInstance *hero)
{ {

View File

@ -50,7 +50,7 @@ public:
inver.resize(Offset*2+rest); inver.resize(Offset*2+rest);
offset=Offset; offset=Offset;
} }
int size() int size() const
{ {
return inver.size(); return inver.size();
} }
@ -65,8 +65,8 @@ public:
CDefHandler * fullHide; CDefHandler * fullHide;
CDefHandler * partialHide; CDefHandler * partialHide;
std::vector< std::vector<char> > visibility; //true means that pointed place is visible PseudoV< PseudoV< PseudoV<unsigned char> > > visibility; //true means that pointed place is visible
std::vector< std::vector<char> > undVisibility; //true means that pointed place is visible //std::vector< std::vector<char> > undVisibility; //true means that pointed place is visible
std::vector<CDefHandler *> roadDefs; std::vector<CDefHandler *> roadDefs;
std::vector<CDefHandler *> staticRiverDefs; std::vector<CDefHandler *> staticRiverDefs;
@ -74,12 +74,12 @@ public:
char & visAccess(int x, int y); char & visAccess(int x, int y);
char & undVisAccess(int x, int y); char & undVisAccess(int x, int y);
SDL_Surface mirrorImage(SDL_Surface *src); //what is this?? SDL_Surface mirrorImage(SDL_Surface *src); //what is this??
SDL_Surface * getVisBitmap(int x, int y, std::vector< std::vector<char> > & visibility); SDL_Surface * getVisBitmap(int x, int y, const PseudoV< PseudoV< PseudoV<unsigned char> > > & visibilityMap, int lvl);
int getCost(int3 & a, int3 & b, const CHeroInstance * hero); int getCost(int3 & a, int3 & b, const CHeroInstance * hero);
std::vector< std::string > getObjDescriptions(int3 pos); //returns desriptions of objects blocking given position std::vector< std::string > getObjDescriptions(int3 pos); //returns desriptions of objects blocking given position
void init(); void init();
SDL_Surface * terrainRect(int x, int y, int dx, int dy, int level=0, unsigned char anim=0); SDL_Surface * terrainRect(int x, int y, int dx, int dy, int level=0, unsigned char anim=0, PseudoV< PseudoV< PseudoV<unsigned char> > > & visibilityMap = CGI->mh->visibility);
SDL_Surface * terrBitmap(int x, int y); SDL_Surface * terrBitmap(int x, int y);
SDL_Surface * undTerrBitmap(int x, int y); SDL_Surface * undTerrBitmap(int x, int y);