mirror of
https://github.com/vcmi/vcmi.git
synced 2025-04-15 11:46:56 +02:00
Initial;
This commit is contained in:
parent
77908dcf76
commit
e64c08df27
@ -89,9 +89,9 @@ CondSh<EMoveState> stillMoveHero; //used during hero movement
|
|||||||
|
|
||||||
int CPlayerInterface::howManyPeople = 0;
|
int CPlayerInterface::howManyPeople = 0;
|
||||||
|
|
||||||
static bool objectBlitOrderSorter(const std::pair<const CGObjectInstance*,SDL_Rect> & a, const std::pair<const CGObjectInstance*,SDL_Rect> & b)
|
static bool objectBlitOrderSorter(const TerrainTileObject & a, const TerrainTileObject & b)
|
||||||
{
|
{
|
||||||
return CMapHandler::compareObjectBlitOrder(a.first, b.first);
|
return CMapHandler::compareObjectBlitOrder(a.obj, b.obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
CPlayerInterface::CPlayerInterface(PlayerColor Player)
|
CPlayerInterface::CPlayerInterface(PlayerColor Player)
|
||||||
@ -205,9 +205,9 @@ STRONG_INLINE void subRect(const int & x, const int & y, const int & z, const SD
|
|||||||
{
|
{
|
||||||
TerrainTile2 & hlp = CGI->mh->ttiles[x][y][z];
|
TerrainTile2 & hlp = CGI->mh->ttiles[x][y][z];
|
||||||
for(auto & elem : hlp.objects)
|
for(auto & elem : hlp.objects)
|
||||||
if(elem.first->id == hid)
|
if(elem.obj->id == hid)
|
||||||
{
|
{
|
||||||
elem.second = r;
|
elem.rect = r;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -216,7 +216,7 @@ STRONG_INLINE void delObjRect(const int & x, const int & y, const int & z, const
|
|||||||
{
|
{
|
||||||
TerrainTile2 & hlp = CGI->mh->ttiles[x][y][z];
|
TerrainTile2 & hlp = CGI->mh->ttiles[x][y][z];
|
||||||
for(int h=0; h<hlp.objects.size(); ++h)
|
for(int h=0; h<hlp.objects.size(); ++h)
|
||||||
if(hlp.objects[h].first->id == hid)
|
if(hlp.objects[h].obj->id == hid)
|
||||||
{
|
{
|
||||||
hlp.objects.erase(hlp.objects.begin()+h);
|
hlp.objects.erase(hlp.objects.begin()+h);
|
||||||
return;
|
return;
|
||||||
@ -239,8 +239,8 @@ void CPlayerInterface::heroMoved(const TryMoveHero & details)
|
|||||||
// TODO -> we should not need full CGHeroInstance structure to display animation or it should not be handled by playerint (but by the client itself)
|
// TODO -> we should not need full CGHeroInstance structure to display animation or it should not be handled by playerint (but by the client itself)
|
||||||
const TerrainTile2 &tile = CGI->mh->ttiles[hp.x-1][hp.y][hp.z];
|
const TerrainTile2 &tile = CGI->mh->ttiles[hp.x-1][hp.y][hp.z];
|
||||||
for(auto & elem : tile.objects)
|
for(auto & elem : tile.objects)
|
||||||
if(elem.first->id == details.id)
|
if(elem.obj->id == details.id)
|
||||||
hero = dynamic_cast<const CGHeroInstance *>(elem.first);
|
hero = dynamic_cast<const CGHeroInstance *>(elem.obj);
|
||||||
|
|
||||||
if(!hero) //still nothing...
|
if(!hero) //still nothing...
|
||||||
return;
|
return;
|
||||||
@ -1674,17 +1674,17 @@ void CPlayerInterface::initMovement( const TryMoveHero &details, const CGHeroIns
|
|||||||
{
|
{
|
||||||
//ho->moveDir = 1;
|
//ho->moveDir = 1;
|
||||||
ho->isStanding = false;
|
ho->isStanding = false;
|
||||||
CGI->mh->ttiles[hp.x-3][hp.y-2][hp.z].objects.push_back(std::make_pair(ho, genRect(32, 32, -31, -31)));
|
CGI->mh->ttiles[hp.x-3][hp.y-2][hp.z].objects.push_back(TerrainTileObject(ho, genRect(32, 32, -31, -31)));
|
||||||
CGI->mh->ttiles[hp.x-2][hp.y-2][hp.z].objects.push_back(std::make_pair(ho, genRect(32, 32, 1, -31)));
|
CGI->mh->ttiles[hp.x-2][hp.y-2][hp.z].objects.push_back(TerrainTileObject(ho, genRect(32, 32, 1, -31)));
|
||||||
CGI->mh->ttiles[hp.x-1][hp.y-2][hp.z].objects.push_back(std::make_pair(ho, genRect(32, 32, 33, -31)));
|
CGI->mh->ttiles[hp.x-1][hp.y-2][hp.z].objects.push_back(TerrainTileObject(ho, genRect(32, 32, 33, -31)));
|
||||||
CGI->mh->ttiles[hp.x][hp.y-2][hp.z].objects.push_back(std::make_pair(ho, genRect(32, 32, 65, -31)));
|
CGI->mh->ttiles[hp.x][hp.y-2][hp.z].objects.push_back(TerrainTileObject(ho, genRect(32, 32, 65, -31)));
|
||||||
|
|
||||||
CGI->mh->ttiles[hp.x-3][hp.y-1][hp.z].objects.push_back(std::make_pair(ho, genRect(32, 32, -31, 1)));
|
CGI->mh->ttiles[hp.x-3][hp.y-1][hp.z].objects.push_back(TerrainTileObject(ho, genRect(32, 32, -31, 1)));
|
||||||
subRect(hp.x-2, hp.y-1, hp.z, genRect(32, 32, 1, 1), ho->id);
|
subRect(hp.x-2, hp.y-1, hp.z, genRect(32, 32, 1, 1), ho->id);
|
||||||
subRect(hp.x-1, hp.y-1, hp.z, genRect(32, 32, 33, 1), ho->id);
|
subRect(hp.x-1, hp.y-1, hp.z, genRect(32, 32, 33, 1), ho->id);
|
||||||
subRect(hp.x, hp.y-1, hp.z, genRect(32, 32, 65, 1), ho->id);
|
subRect(hp.x, hp.y-1, hp.z, genRect(32, 32, 65, 1), ho->id);
|
||||||
|
|
||||||
CGI->mh->ttiles[hp.x-3][hp.y][hp.z].objects.push_back(std::make_pair(ho, genRect(32, 32, -31, 33)));
|
CGI->mh->ttiles[hp.x-3][hp.y][hp.z].objects.push_back(TerrainTileObject(ho, genRect(32, 32, -31, 33)));
|
||||||
subRect(hp.x-2, hp.y, hp.z, genRect(32, 32, 1, 33), ho->id);
|
subRect(hp.x-2, hp.y, hp.z, genRect(32, 32, 1, 33), ho->id);
|
||||||
subRect(hp.x-1, hp.y, hp.z, genRect(32, 32, 33, 33), ho->id);
|
subRect(hp.x-1, hp.y, hp.z, genRect(32, 32, 33, 33), ho->id);
|
||||||
subRect(hp.x, hp.y, hp.z, genRect(32, 32, 65, 33), ho->id);
|
subRect(hp.x, hp.y, hp.z, genRect(32, 32, 65, 33), ho->id);
|
||||||
@ -1702,9 +1702,9 @@ void CPlayerInterface::initMovement( const TryMoveHero &details, const CGHeroIns
|
|||||||
{
|
{
|
||||||
//ho->moveDir = 2;
|
//ho->moveDir = 2;
|
||||||
ho->isStanding = false;
|
ho->isStanding = false;
|
||||||
CGI->mh->ttiles[hp.x-2][hp.y-2][hp.z].objects.push_back(std::make_pair(ho, genRect(32, 32, 0, -31)));
|
CGI->mh->ttiles[hp.x-2][hp.y-2][hp.z].objects.push_back(TerrainTileObject(ho, genRect(32, 32, 0, -31)));
|
||||||
CGI->mh->ttiles[hp.x-1][hp.y-2][hp.z].objects.push_back(std::make_pair(ho, genRect(32, 32, 32, -31)));
|
CGI->mh->ttiles[hp.x-1][hp.y-2][hp.z].objects.push_back(TerrainTileObject(ho, genRect(32, 32, 32, -31)));
|
||||||
CGI->mh->ttiles[hp.x][hp.y-2][hp.z].objects.push_back(std::make_pair(ho, genRect(32, 32, 64, -31)));
|
CGI->mh->ttiles[hp.x][hp.y-2][hp.z].objects.push_back(TerrainTileObject(ho, genRect(32, 32, 64, -31)));
|
||||||
|
|
||||||
subRect(hp.x-2, hp.y-1, hp.z, genRect(32, 32, 0, 1), ho->id);
|
subRect(hp.x-2, hp.y-1, hp.z, genRect(32, 32, 0, 1), ho->id);
|
||||||
subRect(hp.x-1, hp.y-1, hp.z, genRect(32, 32, 32, 1), ho->id);
|
subRect(hp.x-1, hp.y-1, hp.z, genRect(32, 32, 32, 1), ho->id);
|
||||||
@ -1722,20 +1722,20 @@ void CPlayerInterface::initMovement( const TryMoveHero &details, const CGHeroIns
|
|||||||
{
|
{
|
||||||
//ho->moveDir = 3;
|
//ho->moveDir = 3;
|
||||||
ho->isStanding = false;
|
ho->isStanding = false;
|
||||||
CGI->mh->ttiles[hp.x-2][hp.y-2][hp.z].objects.push_back(std::make_pair(ho, genRect(32, 32, -1, -31)));
|
CGI->mh->ttiles[hp.x-2][hp.y-2][hp.z].objects.push_back(TerrainTileObject(ho, genRect(32, 32, -1, -31)));
|
||||||
CGI->mh->ttiles[hp.x-1][hp.y-2][hp.z].objects.push_back(std::make_pair(ho, genRect(32, 32, 31, -31)));
|
CGI->mh->ttiles[hp.x-1][hp.y-2][hp.z].objects.push_back(TerrainTileObject(ho, genRect(32, 32, 31, -31)));
|
||||||
CGI->mh->ttiles[hp.x][hp.y-2][hp.z].objects.push_back(std::make_pair(ho, genRect(32, 32, 63, -31)));
|
CGI->mh->ttiles[hp.x][hp.y-2][hp.z].objects.push_back(TerrainTileObject(ho, genRect(32, 32, 63, -31)));
|
||||||
CGI->mh->ttiles[hp.x+1][hp.y-2][hp.z].objects.push_back(std::make_pair(ho, genRect(32, 32, 95, -31)));
|
CGI->mh->ttiles[hp.x+1][hp.y-2][hp.z].objects.push_back(TerrainTileObject(ho, genRect(32, 32, 95, -31)));
|
||||||
|
|
||||||
subRect(hp.x-2, hp.y-1, hp.z, genRect(32, 32, -1, 1), ho->id);
|
subRect(hp.x-2, hp.y-1, hp.z, genRect(32, 32, -1, 1), ho->id);
|
||||||
subRect(hp.x-1, hp.y-1, hp.z, genRect(32, 32, 31, 1), ho->id);
|
subRect(hp.x-1, hp.y-1, hp.z, genRect(32, 32, 31, 1), ho->id);
|
||||||
subRect(hp.x, hp.y-1, hp.z, genRect(32, 32, 63, 1), ho->id);
|
subRect(hp.x, hp.y-1, hp.z, genRect(32, 32, 63, 1), ho->id);
|
||||||
CGI->mh->ttiles[hp.x+1][hp.y-1][hp.z].objects.push_back(std::make_pair(ho, genRect(32, 32, 95, 1)));
|
CGI->mh->ttiles[hp.x+1][hp.y-1][hp.z].objects.push_back(TerrainTileObject(ho, genRect(32, 32, 95, 1)));
|
||||||
|
|
||||||
subRect(hp.x-2, hp.y, hp.z, genRect(32, 32, -1, 33), ho->id);
|
subRect(hp.x-2, hp.y, hp.z, genRect(32, 32, -1, 33), ho->id);
|
||||||
subRect(hp.x-1, hp.y, hp.z, genRect(32, 32, 31, 33), ho->id);
|
subRect(hp.x-1, hp.y, hp.z, genRect(32, 32, 31, 33), ho->id);
|
||||||
subRect(hp.x, hp.y, hp.z, genRect(32, 32, 63, 33), ho->id);
|
subRect(hp.x, hp.y, hp.z, genRect(32, 32, 63, 33), ho->id);
|
||||||
CGI->mh->ttiles[hp.x+1][hp.y][hp.z].objects.push_back(std::make_pair(ho, genRect(32, 32, 95, 33)));
|
CGI->mh->ttiles[hp.x+1][hp.y][hp.z].objects.push_back(TerrainTileObject(ho, genRect(32, 32, 95, 33)));
|
||||||
|
|
||||||
std::stable_sort(CGI->mh->ttiles[hp.x-2][hp.y-2][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-2][hp.y-2][hp.z].objects.end(), objectBlitOrderSorter);
|
std::stable_sort(CGI->mh->ttiles[hp.x-2][hp.y-2][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-2][hp.y-2][hp.z].objects.end(), objectBlitOrderSorter);
|
||||||
std::stable_sort(CGI->mh->ttiles[hp.x-1][hp.y-2][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-1][hp.y-2][hp.z].objects.end(), objectBlitOrderSorter);
|
std::stable_sort(CGI->mh->ttiles[hp.x-1][hp.y-2][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-1][hp.y-2][hp.z].objects.end(), objectBlitOrderSorter);
|
||||||
@ -1753,12 +1753,12 @@ void CPlayerInterface::initMovement( const TryMoveHero &details, const CGHeroIns
|
|||||||
subRect(hp.x-2, hp.y-1, hp.z, genRect(32, 32, -1, 0), ho->id);
|
subRect(hp.x-2, hp.y-1, hp.z, genRect(32, 32, -1, 0), ho->id);
|
||||||
subRect(hp.x-1, hp.y-1, hp.z, genRect(32, 32, 31, 0), ho->id);
|
subRect(hp.x-1, hp.y-1, hp.z, genRect(32, 32, 31, 0), ho->id);
|
||||||
subRect(hp.x, hp.y-1, hp.z, genRect(32, 32, 63, 0), ho->id);
|
subRect(hp.x, hp.y-1, hp.z, genRect(32, 32, 63, 0), ho->id);
|
||||||
CGI->mh->ttiles[hp.x+1][hp.y-1][hp.z].objects.push_back(std::make_pair(ho, genRect(32, 32, 95, 0)));
|
CGI->mh->ttiles[hp.x+1][hp.y-1][hp.z].objects.push_back(TerrainTileObject(ho, genRect(32, 32, 95, 0)));
|
||||||
|
|
||||||
subRect(hp.x-2, hp.y, hp.z, genRect(32, 32, -1, 32), ho->id);
|
subRect(hp.x-2, hp.y, hp.z, genRect(32, 32, -1, 32), ho->id);
|
||||||
subRect(hp.x-1, hp.y, hp.z, genRect(32, 32, 31, 32), ho->id);
|
subRect(hp.x-1, hp.y, hp.z, genRect(32, 32, 31, 32), ho->id);
|
||||||
subRect(hp.x, hp.y, hp.z, genRect(32, 32, 63, 32), ho->id);
|
subRect(hp.x, hp.y, hp.z, genRect(32, 32, 63, 32), ho->id);
|
||||||
CGI->mh->ttiles[hp.x+1][hp.y][hp.z].objects.push_back(std::make_pair(ho, genRect(32, 32, 95, 32)));
|
CGI->mh->ttiles[hp.x+1][hp.y][hp.z].objects.push_back(TerrainTileObject(ho, genRect(32, 32, 95, 32)));
|
||||||
|
|
||||||
std::stable_sort(CGI->mh->ttiles[hp.x+1][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x+1][hp.y-1][hp.z].objects.end(), objectBlitOrderSorter);
|
std::stable_sort(CGI->mh->ttiles[hp.x+1][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x+1][hp.y-1][hp.z].objects.end(), objectBlitOrderSorter);
|
||||||
|
|
||||||
@ -1771,17 +1771,17 @@ void CPlayerInterface::initMovement( const TryMoveHero &details, const CGHeroIns
|
|||||||
subRect(hp.x-2, hp.y-1, hp.z, genRect(32, 32, -1, -1), ho->id);
|
subRect(hp.x-2, hp.y-1, hp.z, genRect(32, 32, -1, -1), ho->id);
|
||||||
subRect(hp.x-1, hp.y-1, hp.z, genRect(32, 32, 31, -1), ho->id);
|
subRect(hp.x-1, hp.y-1, hp.z, genRect(32, 32, 31, -1), ho->id);
|
||||||
subRect(hp.x, hp.y-1, hp.z, genRect(32, 32, 63, -1), ho->id);
|
subRect(hp.x, hp.y-1, hp.z, genRect(32, 32, 63, -1), ho->id);
|
||||||
CGI->mh->ttiles[hp.x+1][hp.y-1][hp.z].objects.push_back(std::make_pair(ho, genRect(32, 32, 95, -1)));
|
CGI->mh->ttiles[hp.x+1][hp.y-1][hp.z].objects.push_back(TerrainTileObject(ho, genRect(32, 32, 95, -1)));
|
||||||
|
|
||||||
subRect(hp.x-2, hp.y, hp.z, genRect(32, 32, -1, 31), ho->id);
|
subRect(hp.x-2, hp.y, hp.z, genRect(32, 32, -1, 31), ho->id);
|
||||||
subRect(hp.x-1, hp.y, hp.z, genRect(32, 32, 31, 31), ho->id);
|
subRect(hp.x-1, hp.y, hp.z, genRect(32, 32, 31, 31), ho->id);
|
||||||
subRect(hp.x, hp.y, hp.z, genRect(32, 32, 63, 31), ho->id);
|
subRect(hp.x, hp.y, hp.z, genRect(32, 32, 63, 31), ho->id);
|
||||||
CGI->mh->ttiles[hp.x+1][hp.y][hp.z].objects.push_back(std::make_pair(ho, genRect(32, 32, 95, 31)));
|
CGI->mh->ttiles[hp.x+1][hp.y][hp.z].objects.push_back(TerrainTileObject(ho, genRect(32, 32, 95, 31)));
|
||||||
|
|
||||||
CGI->mh->ttiles[hp.x-2][hp.y+1][hp.z].objects.push_back(std::make_pair(ho, genRect(32, 32, -1, 63)));
|
CGI->mh->ttiles[hp.x-2][hp.y+1][hp.z].objects.push_back(TerrainTileObject(ho, genRect(32, 32, -1, 63)));
|
||||||
CGI->mh->ttiles[hp.x-1][hp.y+1][hp.z].objects.push_back(std::make_pair(ho, genRect(32, 32, 31, 63)));
|
CGI->mh->ttiles[hp.x-1][hp.y+1][hp.z].objects.push_back(TerrainTileObject(ho, genRect(32, 32, 31, 63)));
|
||||||
CGI->mh->ttiles[hp.x][hp.y+1][hp.z].objects.push_back(std::make_pair(ho, genRect(32, 32, 63, 63)));
|
CGI->mh->ttiles[hp.x][hp.y+1][hp.z].objects.push_back(TerrainTileObject(ho, genRect(32, 32, 63, 63)));
|
||||||
CGI->mh->ttiles[hp.x+1][hp.y+1][hp.z].objects.push_back(std::make_pair(ho, genRect(32, 32, 95, 63)));
|
CGI->mh->ttiles[hp.x+1][hp.y+1][hp.z].objects.push_back(TerrainTileObject(ho, genRect(32, 32, 95, 63)));
|
||||||
|
|
||||||
std::stable_sort(CGI->mh->ttiles[hp.x+1][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x+1][hp.y-1][hp.z].objects.end(), objectBlitOrderSorter);
|
std::stable_sort(CGI->mh->ttiles[hp.x+1][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x+1][hp.y-1][hp.z].objects.end(), objectBlitOrderSorter);
|
||||||
|
|
||||||
@ -1804,9 +1804,9 @@ void CPlayerInterface::initMovement( const TryMoveHero &details, const CGHeroIns
|
|||||||
subRect(hp.x-1, hp.y, hp.z, genRect(32, 32, 32, 31), ho->id);
|
subRect(hp.x-1, hp.y, hp.z, genRect(32, 32, 32, 31), ho->id);
|
||||||
subRect(hp.x, hp.y, hp.z, genRect(32, 32, 64, 31), ho->id);
|
subRect(hp.x, hp.y, hp.z, genRect(32, 32, 64, 31), ho->id);
|
||||||
|
|
||||||
CGI->mh->ttiles[hp.x-2][hp.y+1][hp.z].objects.push_back(std::make_pair(ho, genRect(32, 32, 0, 63)));
|
CGI->mh->ttiles[hp.x-2][hp.y+1][hp.z].objects.push_back(TerrainTileObject(ho, genRect(32, 32, 0, 63)));
|
||||||
CGI->mh->ttiles[hp.x-1][hp.y+1][hp.z].objects.push_back(std::make_pair(ho, genRect(32, 32, 32, 63)));
|
CGI->mh->ttiles[hp.x-1][hp.y+1][hp.z].objects.push_back(TerrainTileObject(ho, genRect(32, 32, 32, 63)));
|
||||||
CGI->mh->ttiles[hp.x][hp.y+1][hp.z].objects.push_back(std::make_pair(ho, genRect(32, 32, 64, 63)));
|
CGI->mh->ttiles[hp.x][hp.y+1][hp.z].objects.push_back(TerrainTileObject(ho, genRect(32, 32, 64, 63)));
|
||||||
|
|
||||||
std::stable_sort(CGI->mh->ttiles[hp.x-2][hp.y+1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-2][hp.y+1][hp.z].objects.end(), objectBlitOrderSorter);
|
std::stable_sort(CGI->mh->ttiles[hp.x-2][hp.y+1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-2][hp.y+1][hp.z].objects.end(), objectBlitOrderSorter);
|
||||||
std::stable_sort(CGI->mh->ttiles[hp.x-1][hp.y+1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-1][hp.y+1][hp.z].objects.end(), objectBlitOrderSorter);
|
std::stable_sort(CGI->mh->ttiles[hp.x-1][hp.y+1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-1][hp.y+1][hp.z].objects.end(), objectBlitOrderSorter);
|
||||||
@ -1816,20 +1816,20 @@ void CPlayerInterface::initMovement( const TryMoveHero &details, const CGHeroIns
|
|||||||
{
|
{
|
||||||
//ho->moveDir = 7;
|
//ho->moveDir = 7;
|
||||||
ho->isStanding = false;
|
ho->isStanding = false;
|
||||||
CGI->mh->ttiles[hp.x-3][hp.y-1][hp.z].objects.push_back(std::make_pair(ho, genRect(32, 32, -31, -1)));
|
CGI->mh->ttiles[hp.x-3][hp.y-1][hp.z].objects.push_back(TerrainTileObject(ho, genRect(32, 32, -31, -1)));
|
||||||
subRect(hp.x-2, hp.y-1, hp.z, genRect(32, 32, 1, -1), ho->id);
|
subRect(hp.x-2, hp.y-1, hp.z, genRect(32, 32, 1, -1), ho->id);
|
||||||
subRect(hp.x-1, hp.y-1, hp.z, genRect(32, 32, 33, -1), ho->id);
|
subRect(hp.x-1, hp.y-1, hp.z, genRect(32, 32, 33, -1), ho->id);
|
||||||
subRect(hp.x, hp.y-1, hp.z, genRect(32, 32, 65, -1), ho->id);
|
subRect(hp.x, hp.y-1, hp.z, genRect(32, 32, 65, -1), ho->id);
|
||||||
|
|
||||||
CGI->mh->ttiles[hp.x-3][hp.y][hp.z].objects.push_back(std::make_pair(ho, genRect(32, 32, -31, 31)));
|
CGI->mh->ttiles[hp.x-3][hp.y][hp.z].objects.push_back(TerrainTileObject(ho, genRect(32, 32, -31, 31)));
|
||||||
subRect(hp.x-2, hp.y, hp.z, genRect(32, 32, 1, 31), ho->id);
|
subRect(hp.x-2, hp.y, hp.z, genRect(32, 32, 1, 31), ho->id);
|
||||||
subRect(hp.x-1, hp.y, hp.z, genRect(32, 32, 33, 31), ho->id);
|
subRect(hp.x-1, hp.y, hp.z, genRect(32, 32, 33, 31), ho->id);
|
||||||
subRect(hp.x, hp.y, hp.z, genRect(32, 32, 65, 31), ho->id);
|
subRect(hp.x, hp.y, hp.z, genRect(32, 32, 65, 31), ho->id);
|
||||||
|
|
||||||
CGI->mh->ttiles[hp.x-3][hp.y+1][hp.z].objects.push_back(std::make_pair(ho, genRect(32, 32, -31, 63)));
|
CGI->mh->ttiles[hp.x-3][hp.y+1][hp.z].objects.push_back(TerrainTileObject(ho, genRect(32, 32, -31, 63)));
|
||||||
CGI->mh->ttiles[hp.x-2][hp.y+1][hp.z].objects.push_back(std::make_pair(ho, genRect(32, 32, 1, 63)));
|
CGI->mh->ttiles[hp.x-2][hp.y+1][hp.z].objects.push_back(TerrainTileObject(ho, genRect(32, 32, 1, 63)));
|
||||||
CGI->mh->ttiles[hp.x-1][hp.y+1][hp.z].objects.push_back(std::make_pair(ho, genRect(32, 32, 33, 63)));
|
CGI->mh->ttiles[hp.x-1][hp.y+1][hp.z].objects.push_back(TerrainTileObject(ho, genRect(32, 32, 33, 63)));
|
||||||
CGI->mh->ttiles[hp.x][hp.y+1][hp.z].objects.push_back(std::make_pair(ho, genRect(32, 32, 65, 63)));
|
CGI->mh->ttiles[hp.x][hp.y+1][hp.z].objects.push_back(TerrainTileObject(ho, genRect(32, 32, 65, 63)));
|
||||||
|
|
||||||
std::stable_sort(CGI->mh->ttiles[hp.x-3][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-3][hp.y-1][hp.z].objects.end(), objectBlitOrderSorter);
|
std::stable_sort(CGI->mh->ttiles[hp.x-3][hp.y-1][hp.z].objects.begin(), CGI->mh->ttiles[hp.x-3][hp.y-1][hp.z].objects.end(), objectBlitOrderSorter);
|
||||||
|
|
||||||
@ -1844,12 +1844,12 @@ void CPlayerInterface::initMovement( const TryMoveHero &details, const CGHeroIns
|
|||||||
{
|
{
|
||||||
//ho->moveDir = 8;
|
//ho->moveDir = 8;
|
||||||
ho->isStanding = false;
|
ho->isStanding = false;
|
||||||
CGI->mh->ttiles[hp.x-3][hp.y-1][hp.z].objects.push_back(std::make_pair(ho, genRect(32, 32, -31, 0)));
|
CGI->mh->ttiles[hp.x-3][hp.y-1][hp.z].objects.push_back(TerrainTileObject(ho, genRect(32, 32, -31, 0)));
|
||||||
subRect(hp.x-2, hp.y-1, hp.z, genRect(32, 32, 1, 0), ho->id);
|
subRect(hp.x-2, hp.y-1, hp.z, genRect(32, 32, 1, 0), ho->id);
|
||||||
subRect(hp.x-1, hp.y-1, hp.z, genRect(32, 32, 33, 0), ho->id);
|
subRect(hp.x-1, hp.y-1, hp.z, genRect(32, 32, 33, 0), ho->id);
|
||||||
subRect(hp.x, hp.y-1, hp.z, genRect(32, 32, 65, 0), ho->id);
|
subRect(hp.x, hp.y-1, hp.z, genRect(32, 32, 65, 0), ho->id);
|
||||||
|
|
||||||
CGI->mh->ttiles[hp.x-3][hp.y][hp.z].objects.push_back(std::make_pair(ho, genRect(32, 32, -31, 32)));
|
CGI->mh->ttiles[hp.x-3][hp.y][hp.z].objects.push_back(TerrainTileObject(ho, genRect(32, 32, -31, 32)));
|
||||||
subRect(hp.x-2, hp.y, hp.z, genRect(32, 32, 1, 32), ho->id);
|
subRect(hp.x-2, hp.y, hp.z, genRect(32, 32, 1, 32), ho->id);
|
||||||
subRect(hp.x-1, hp.y, hp.z, genRect(32, 32, 33, 32), ho->id);
|
subRect(hp.x-1, hp.y, hp.z, genRect(32, 32, 33, 32), ho->id);
|
||||||
subRect(hp.x, hp.y, hp.z, genRect(32, 32, 65, 32), ho->id);
|
subRect(hp.x, hp.y, hp.z, genRect(32, 32, 65, 32), ho->id);
|
||||||
|
@ -336,7 +336,7 @@ void RemoveObject::applyFirstCl( CClient *cl )
|
|||||||
{
|
{
|
||||||
const CGObjectInstance *o = cl->getObj(id);
|
const CGObjectInstance *o = cl->getObj(id);
|
||||||
|
|
||||||
CGI->mh->hideObject(o);
|
CGI->mh->hideObject(o, true);
|
||||||
|
|
||||||
//notify interfaces about removal
|
//notify interfaces about removal
|
||||||
for(auto i=cl->playerint.begin(); i!=cl->playerint.end(); i++)
|
for(auto i=cl->playerint.begin(); i!=cl->playerint.end(); i++)
|
||||||
@ -908,7 +908,7 @@ void NewObject::applyCl(CClient *cl)
|
|||||||
cl->invalidatePaths();
|
cl->invalidatePaths();
|
||||||
|
|
||||||
const CGObjectInstance *obj = cl->getObj(id);
|
const CGObjectInstance *obj = cl->getObj(id);
|
||||||
CGI->mh->printObject(obj);
|
CGI->mh->printObject(obj, true);
|
||||||
|
|
||||||
for(auto i=cl->playerint.begin(); i!=cl->playerint.end(); i++)
|
for(auto i=cl->playerint.begin(); i!=cl->playerint.end(); i++)
|
||||||
{
|
{
|
||||||
|
@ -75,9 +75,9 @@ std::string nameFromType (int typ)
|
|||||||
return std::string();
|
return std::string();
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool objectBlitOrderSorter(const std::pair<const CGObjectInstance*,SDL_Rect> & a, const std::pair<const CGObjectInstance*,SDL_Rect> & b)
|
static bool objectBlitOrderSorter(const TerrainTileObject & a, const TerrainTileObject & b)
|
||||||
{
|
{
|
||||||
return CMapHandler::compareObjectBlitOrder(a.first, b.first);
|
return CMapHandler::compareObjectBlitOrder(a.obj, b.obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct NeighborTilesInfo
|
struct NeighborTilesInfo
|
||||||
@ -188,6 +188,7 @@ void CMapHandler::prepareFOWDefs()
|
|||||||
void CMapHandler::drawTerrainRectNew(SDL_Surface * targetSurface, const MapDrawingInfo * info)
|
void CMapHandler::drawTerrainRectNew(SDL_Surface * targetSurface, const MapDrawingInfo * info)
|
||||||
{
|
{
|
||||||
assert(info);
|
assert(info);
|
||||||
|
updateObjectsFade();
|
||||||
resolveBlitter(info)->blit(targetSurface, info);
|
resolveBlitter(info)->blit(targetSurface, info);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -346,7 +347,7 @@ void CMapHandler::initObjectRects()
|
|||||||
cr.h = 32;
|
cr.h = 32;
|
||||||
cr.x = bitmap->w - fx * 32 - 32;
|
cr.x = bitmap->w - fx * 32 - 32;
|
||||||
cr.y = bitmap->h - fy * 32 - 32;
|
cr.y = bitmap->h - fy * 32 - 32;
|
||||||
std::pair<const CGObjectInstance*,SDL_Rect> toAdd = std::make_pair(obj,cr);
|
TerrainTileObject toAdd(obj,cr);
|
||||||
|
|
||||||
|
|
||||||
if( map->isInTheMap(currTile) && // within map
|
if( map->isInTheMap(currTile) && // within map
|
||||||
@ -609,12 +610,12 @@ void CMapHandler::CMapWorldViewBlitter::drawTileOverlay(SDL_Surface * targetSurf
|
|||||||
auto & objects = tile.objects;
|
auto & objects = tile.objects;
|
||||||
for(auto & object : objects)
|
for(auto & object : objects)
|
||||||
{
|
{
|
||||||
const CGObjectInstance * obj = object.first;
|
const CGObjectInstance * obj = object.obj;
|
||||||
|
|
||||||
if (obj->pos.z != pos.z)
|
if (obj->pos.z != pos.z)
|
||||||
continue;
|
continue;
|
||||||
if (!(*info->visibilityMap)[pos.x][pos.y][pos.z])
|
if (!(*info->visibilityMap)[pos.x][pos.y][pos.z])
|
||||||
continue; // TODO needs to skip this check if we have artifacts-aura-like spell cast
|
continue; // TODO needs to skip this check if we have view-air-like spell cast
|
||||||
if (!obj->visitableAt(pos.x, pos.y))
|
if (!obj->visitableAt(pos.x, pos.y))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
@ -809,7 +810,24 @@ void CMapHandler::CMapBlitter::drawObjects(SDL_Surface * targetSurf, const Terra
|
|||||||
auto & objects = tile.objects;
|
auto & objects = tile.objects;
|
||||||
for(auto & object : objects)
|
for(auto & object : objects)
|
||||||
{
|
{
|
||||||
const CGObjectInstance * obj = object.first;
|
if (object.fading == EMapObjectFadingType::OUT)
|
||||||
|
{
|
||||||
|
auto &bitmap = graphics->advmapobjGraphics[object.image]->ourImages[0].bitmap;
|
||||||
|
if (!parent->fadingOffscreenBitmapSurface)
|
||||||
|
parent->fadingOffscreenBitmapSurface = CSDL_Ext::newSurface(tileSize, tileSize, targetSurf);
|
||||||
|
Rect r1(object.rect);
|
||||||
|
r1.w = tileSize;
|
||||||
|
r1.h = tileSize;
|
||||||
|
Rect r2(realTileRect);
|
||||||
|
SDL_SetSurfaceAlphaMod(parent->fadingOffscreenBitmapSurface, object.fadingCounter * 255);
|
||||||
|
SDL_BlitSurface(bitmap, &r1, parent->fadingOffscreenBitmapSurface, nullptr);
|
||||||
|
SDL_BlitSurface(parent->fadingOffscreenBitmapSurface, nullptr, targetSurf, &r2);
|
||||||
|
SDL_SetSurfaceAlphaMod(parent->fadingOffscreenBitmapSurface, 255);
|
||||||
|
SDL_FillRect(parent->fadingOffscreenBitmapSurface, nullptr, 0);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
const CGObjectInstance * obj = object.obj;
|
||||||
if (!graphics->getDef(obj))
|
if (!graphics->getDef(obj))
|
||||||
processDef(obj->appearance);
|
processDef(obj->appearance);
|
||||||
if (!graphics->getDef(obj) && !obj->appearance.animationFile.empty())
|
if (!graphics->getDef(obj) && !obj->appearance.animationFile.empty())
|
||||||
@ -820,7 +838,7 @@ void CMapHandler::CMapBlitter::drawObjects(SDL_Surface * targetSurf, const Terra
|
|||||||
|
|
||||||
PlayerColor color = obj->tempOwner;
|
PlayerColor color = obj->tempOwner;
|
||||||
|
|
||||||
SDL_Rect pp = object.second;
|
SDL_Rect pp = object.rect;
|
||||||
pp.h = tileSize;
|
pp.h = tileSize;
|
||||||
pp.w = tileSize;
|
pp.w = tileSize;
|
||||||
|
|
||||||
@ -828,6 +846,8 @@ void CMapHandler::CMapBlitter::drawObjects(SDL_Surface * targetSurf, const Terra
|
|||||||
? nullptr
|
? nullptr
|
||||||
: static_cast<const CGHeroInstance*>(obj));
|
: static_cast<const CGHeroInstance*>(obj));
|
||||||
|
|
||||||
|
// this block probably could be changed into templated methods for heroes/boats/other objects;
|
||||||
|
|
||||||
//print hero / boat and flag
|
//print hero / boat and flag
|
||||||
if((hero && hero->moveDir && hero->type) || (obj->ID == Obj::BOAT)) //it's hero or boat
|
if((hero && hero->moveDir && hero->type) || (obj->ID == Obj::BOAT)) //it's hero or boat
|
||||||
{
|
{
|
||||||
@ -1144,7 +1164,53 @@ std::pair<SDL_Surface *, bool> CMapHandler::CMapBlitter::getVisBitmap() const
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CMapHandler::printObject(const CGObjectInstance *obj)
|
void CMapHandler::updateObjectsFade()
|
||||||
|
{
|
||||||
|
// TODO caching fading objects indices for optimization?
|
||||||
|
for (size_t i=0; i<map->width; i++)
|
||||||
|
{
|
||||||
|
for (size_t j=0; j<map->height; j++)
|
||||||
|
{
|
||||||
|
for (size_t k=0; k<(map->twoLevel ? 2 : 1); k++)
|
||||||
|
{
|
||||||
|
for(size_t x=0; x < ttiles[i][j][k].objects.size(); )
|
||||||
|
{
|
||||||
|
auto &obj = ttiles[i][j][k].objects[x];
|
||||||
|
|
||||||
|
switch (obj.fading)
|
||||||
|
{
|
||||||
|
case EMapObjectFadingType::IN:
|
||||||
|
obj.fadingCounter += 0.2f;
|
||||||
|
if (obj.fadingCounter >= 1.0f)
|
||||||
|
{
|
||||||
|
obj.fadingCounter = 1.0f;
|
||||||
|
obj.fading = EMapObjectFadingType::NONE;
|
||||||
|
}
|
||||||
|
++x;
|
||||||
|
break;
|
||||||
|
case EMapObjectFadingType::OUT:
|
||||||
|
obj.fadingCounter -= 0.2f;
|
||||||
|
if (obj.fadingCounter <= 0.0f)
|
||||||
|
{
|
||||||
|
obj.fadingCounter = 0.0f;
|
||||||
|
obj.fading = EMapObjectFadingType::NONE;
|
||||||
|
ttiles[i][j][k].objects.erase(ttiles[i][j][k].objects.begin() + x);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
++x;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
// not fading
|
||||||
|
++x;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CMapHandler::printObject(const CGObjectInstance *obj, bool fadein /* = false */)
|
||||||
{
|
{
|
||||||
if (!graphics->getDef(obj))
|
if (!graphics->getDef(obj))
|
||||||
processDef(obj->appearance);
|
processDef(obj->appearance);
|
||||||
@ -1162,7 +1228,13 @@ bool CMapHandler::printObject(const CGObjectInstance *obj)
|
|||||||
cr.h = 32;
|
cr.h = 32;
|
||||||
cr.x = fx*32;
|
cr.x = fx*32;
|
||||||
cr.y = fy*32;
|
cr.y = fy*32;
|
||||||
std::pair<const CGObjectInstance*,SDL_Rect> toAdd = std::make_pair(obj, cr);
|
TerrainTileObject toAdd(obj, cr);
|
||||||
|
if (fadein)
|
||||||
|
{
|
||||||
|
toAdd.fading = EMapObjectFadingType::IN;
|
||||||
|
toAdd.fadingCounter = 0.0f;
|
||||||
|
}
|
||||||
|
|
||||||
if((obj->pos.x + fx - tilesW+1)>=0 && (obj->pos.x + fx - tilesW+1)<ttiles.size()-frameW && (obj->pos.y + fy - tilesH+1)>=0 && (obj->pos.y + fy - tilesH+1)<ttiles[0].size()-frameH)
|
if((obj->pos.x + fx - tilesW+1)>=0 && (obj->pos.x + fx - tilesW+1)<ttiles.size()-frameW && (obj->pos.y + fy - tilesH+1)>=0 && (obj->pos.y + fy - tilesH+1)<ttiles[0].size()-frameH)
|
||||||
{
|
{
|
||||||
TerrainTile2 & curt = ttiles[obj->pos.x + fx - tilesW+1][obj->pos.y + fy - tilesH+1][obj->pos.z];
|
TerrainTile2 & curt = ttiles[obj->pos.x + fx - tilesW+1][obj->pos.y + fy - tilesH+1][obj->pos.z];
|
||||||
@ -1187,7 +1259,7 @@ bool CMapHandler::printObject(const CGObjectInstance *obj)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CMapHandler::hideObject(const CGObjectInstance *obj)
|
bool CMapHandler::hideObject(const CGObjectInstance *obj, bool fadeout /* = false */)
|
||||||
{
|
{
|
||||||
for (size_t i=0; i<map->width; i++)
|
for (size_t i=0; i<map->width; i++)
|
||||||
{
|
{
|
||||||
@ -1197,9 +1269,17 @@ bool CMapHandler::hideObject(const CGObjectInstance *obj)
|
|||||||
{
|
{
|
||||||
for(size_t x=0; x < ttiles[i][j][k].objects.size(); x++)
|
for(size_t x=0; x < ttiles[i][j][k].objects.size(); x++)
|
||||||
{
|
{
|
||||||
if (ttiles[i][j][k].objects[x].first->id == obj->id)
|
if (ttiles[i][j][k].objects[x].obj->id == obj->id)
|
||||||
{
|
{
|
||||||
ttiles[i][j][k].objects.erase(ttiles[i][j][k].objects.begin() + x);
|
if (fadeout) // erase delayed until end of fadeout
|
||||||
|
{
|
||||||
|
ttiles[i][j][k].objects[x].fading = EMapObjectFadingType::OUT;
|
||||||
|
ttiles[i][j][k].objects[x].fadingCounter = 1.0f;
|
||||||
|
ttiles[i][j][k].objects[x].image = ttiles[i][j][k].objects[x].obj->appearance.animationFile;
|
||||||
|
// fadingObjectsCache.push_back(std::make_pair(int3(i, j, k), ttiles[i][j][k].objects[x].obj->ID));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
ttiles[i][j][k].objects.erase(ttiles[i][j][k].objects.begin() + x);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1330,6 +1410,8 @@ CMapHandler::~CMapHandler()
|
|||||||
{
|
{
|
||||||
delete graphics->FoWfullHide;
|
delete graphics->FoWfullHide;
|
||||||
delete graphics->FoWpartialHide;
|
delete graphics->FoWpartialHide;
|
||||||
|
if (fadingOffscreenBitmapSurface)
|
||||||
|
delete fadingOffscreenBitmapSurface;
|
||||||
|
|
||||||
delete normalBlitter;
|
delete normalBlitter;
|
||||||
delete worldViewBlitter;
|
delete worldViewBlitter;
|
||||||
@ -1354,6 +1436,7 @@ CMapHandler::CMapHandler()
|
|||||||
frameW = frameH = 0;
|
frameW = frameH = 0;
|
||||||
graphics->FoWfullHide = nullptr;
|
graphics->FoWfullHide = nullptr;
|
||||||
graphics->FoWpartialHide = nullptr;
|
graphics->FoWpartialHide = nullptr;
|
||||||
|
fadingOffscreenBitmapSurface = nullptr;
|
||||||
normalBlitter = new CMapNormalBlitter(this);
|
normalBlitter = new CMapNormalBlitter(this);
|
||||||
worldViewBlitter = new CMapWorldViewBlitter(this);
|
worldViewBlitter = new CMapWorldViewBlitter(this);
|
||||||
puzzleViewBlitter = new CMapPuzzleViewBlitter(this);
|
puzzleViewBlitter = new CMapPuzzleViewBlitter(this);
|
||||||
@ -1366,9 +1449,9 @@ void CMapHandler::getTerrainDescr( const int3 &pos, std::string & out, bool terN
|
|||||||
const TerrainTile &t = map->getTile(pos);
|
const TerrainTile &t = map->getTile(pos);
|
||||||
for(auto & elem : tt.objects)
|
for(auto & elem : tt.objects)
|
||||||
{
|
{
|
||||||
if(elem.first->ID == Obj::HOLE) //Hole
|
if(elem.obj->ID == Obj::HOLE) //Hole
|
||||||
{
|
{
|
||||||
out = elem.first->getObjectName();
|
out = elem.obj->getObjectName();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -50,11 +50,34 @@ enum class EWorldViewIcon
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum class EMapObjectFadingType
|
||||||
|
{
|
||||||
|
NONE,
|
||||||
|
IN,
|
||||||
|
OUT
|
||||||
|
};
|
||||||
|
|
||||||
|
struct TerrainTileObject
|
||||||
|
{
|
||||||
|
const CGObjectInstance *obj;
|
||||||
|
SDL_Rect rect;
|
||||||
|
EMapObjectFadingType fading;
|
||||||
|
float fadingCounter;
|
||||||
|
std::string image;
|
||||||
|
|
||||||
|
TerrainTileObject(const CGObjectInstance *obj_, SDL_Rect rect_)
|
||||||
|
: obj(obj_),
|
||||||
|
rect(rect_),
|
||||||
|
fading(EMapObjectFadingType::NONE),
|
||||||
|
fadingCounter(0.0f)
|
||||||
|
{}
|
||||||
|
};
|
||||||
|
|
||||||
struct TerrainTile2
|
struct TerrainTile2
|
||||||
{
|
{
|
||||||
SDL_Surface * terbitmap; //bitmap of terrain
|
SDL_Surface * terbitmap; //bitmap of terrain
|
||||||
|
|
||||||
std::vector < std::pair<const CGObjectInstance*,SDL_Rect> > objects; //pointers to objects being on this tile with rects to be easier to blit this tile on screen
|
std::vector<TerrainTileObject> objects; //pointers to objects being on this tile with rects to be easier to blit this tile on screen
|
||||||
TerrainTile2();
|
TerrainTile2();
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -220,6 +243,7 @@ class CMapHandler
|
|||||||
|
|
||||||
virtual bool canDrawObject(const CGObjectInstance * obj) const;
|
virtual bool canDrawObject(const CGObjectInstance * obj) const;
|
||||||
virtual bool canDrawCurrentTile() const;
|
virtual bool canDrawCurrentTile() const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CMapBlitter(CMapHandler * p) : parent(p) {}
|
CMapBlitter(CMapHandler * p) : parent(p) {}
|
||||||
virtual ~CMapBlitter(){}
|
virtual ~CMapBlitter(){}
|
||||||
@ -284,7 +308,11 @@ class CMapHandler
|
|||||||
CMapBlitter * worldViewBlitter;
|
CMapBlitter * worldViewBlitter;
|
||||||
CMapBlitter * puzzleViewBlitter;
|
CMapBlitter * puzzleViewBlitter;
|
||||||
|
|
||||||
|
// std::vector<std::pair<int3, int>> fadingObjectsCache;
|
||||||
|
SDL_Surface * fadingOffscreenBitmapSurface;
|
||||||
|
|
||||||
CMapBlitter * resolveBlitter(const MapDrawingInfo * info) const;
|
CMapBlitter * resolveBlitter(const MapDrawingInfo * info) const;
|
||||||
|
void updateObjectsFade();
|
||||||
public:
|
public:
|
||||||
PseudoV< PseudoV< PseudoV<TerrainTile2> > > ttiles; //informations about map tiles
|
PseudoV< PseudoV< PseudoV<TerrainTile2> > > ttiles; //informations about map tiles
|
||||||
int3 sizes; //map size (x = width, y = height, z = number of levels)
|
int3 sizes; //map size (x = width, y = height, z = number of levels)
|
||||||
@ -320,8 +348,8 @@ public:
|
|||||||
|
|
||||||
void getTerrainDescr(const int3 &pos, std::string & out, bool terName); //if tername == false => empty string when tile is clear
|
void getTerrainDescr(const int3 &pos, std::string & out, bool terName); //if tername == false => empty string when tile is clear
|
||||||
CGObjectInstance * createObject(int id, int subid, int3 pos, int owner=254); //creates a new object with a certain id and subid
|
CGObjectInstance * createObject(int id, int subid, int3 pos, int owner=254); //creates a new object with a certain id and subid
|
||||||
bool printObject(const CGObjectInstance * obj); //puts appropriate things to ttiles, so obj will be visible on map
|
bool printObject(const CGObjectInstance * obj, bool fadein = false); //puts appropriate things to ttiles, so obj will be visible on map
|
||||||
bool hideObject(const CGObjectInstance * obj); //removes appropriate things from ttiles, so obj will be no longer visible on map (but still will exist)
|
bool hideObject(const CGObjectInstance * obj, bool fadeout = false); //removes appropriate things from ttiles, so obj will be no longer visible on map (but still will exist)
|
||||||
bool removeObject(CGObjectInstance * obj); //removes object from each place in VCMI (I hope)
|
bool removeObject(CGObjectInstance * obj); //removes object from each place in VCMI (I hope)
|
||||||
void init();
|
void init();
|
||||||
void calculateBlockedPos();
|
void calculateBlockedPos();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user