mirror of
https://github.com/vcmi/vcmi.git
synced 2025-08-13 19:54:17 +02:00
* walls block movement now
* minor change
This commit is contained in:
@@ -476,12 +476,6 @@ void CBattleInterface::show(SDL_Surface * to)
|
|||||||
blitAt(images[((animCount+1)/(4/settings.animSpeed))%images.size()].bitmap, x, y, to);
|
blitAt(images[((animCount+1)/(4/settings.animSpeed))%images.size()].bitmap, x, y, to);
|
||||||
}
|
}
|
||||||
|
|
||||||
//showing siege background
|
|
||||||
if(siegeH)
|
|
||||||
{
|
|
||||||
siegeH->printSiegeBackground(to);
|
|
||||||
}
|
|
||||||
|
|
||||||
//showing hero animations
|
//showing hero animations
|
||||||
if(attackingHero)
|
if(attackingHero)
|
||||||
attackingHero->show(to);
|
attackingHero->show(to);
|
||||||
@@ -2428,7 +2422,7 @@ void CBattleInterface::showPieceOfWall(SDL_Surface * to, int hex)
|
|||||||
if(!siegeH)
|
if(!siegeH)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
static std::map<int, int> hexToPart = boost::assign::map_list_of(12, 8)(29, 7)(62, 12)(78, 6)(112, 10)(147, 5)(165, 11)(182, 4);
|
static std::map<int, int> hexToPart = boost::assign::map_list_of(12, 8)(16, 1)(29, 7)(62, 12)(78, 6)(112, 10)(147, 5)(165, 11)(182, 4);
|
||||||
|
|
||||||
std::map<int, int>::const_iterator it = hexToPart.find(hex);
|
std::map<int, int>::const_iterator it = hexToPart.find(hex);
|
||||||
if(it != hexToPart.end())
|
if(it != hexToPart.end())
|
||||||
@@ -3272,16 +3266,14 @@ std::string CBattleInterface::SiegeHelper::getSiegeName(ui16 what, ui16 additInf
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CBattleInterface::SiegeHelper::printSiegeBackground(SDL_Surface * to)
|
|
||||||
{
|
|
||||||
blitAt(backWall, owner->pos.w + owner->pos.x - backWall->w, 50 + owner->pos.y, to);
|
|
||||||
}
|
|
||||||
|
|
||||||
void CBattleInterface::SiegeHelper::printPartOfWall(SDL_Surface * to, int what)
|
void CBattleInterface::SiegeHelper::printPartOfWall(SDL_Surface * to, int what)
|
||||||
{
|
{
|
||||||
Point pos = Point(-1, -1);
|
Point pos = Point(-1, -1);
|
||||||
switch(what)
|
switch(what)
|
||||||
{
|
{
|
||||||
|
case 1: //background wall
|
||||||
|
pos = Point(owner->pos.w + owner->pos.x - backWall->w, 55 + owner->pos.y);
|
||||||
|
break;
|
||||||
case 2: //keep
|
case 2: //keep
|
||||||
pos = Point(owner->pos.w + owner->pos.x - walls[what-2]->w, 154 + owner->pos.y);
|
pos = Point(owner->pos.w + owner->pos.x - walls[what-2]->w, 154 + owner->pos.y);
|
||||||
break;
|
break;
|
||||||
|
@@ -244,8 +244,7 @@ private:
|
|||||||
//filename getters
|
//filename getters
|
||||||
std::string getSiegeName(ui16 what, ui16 additInfo = 1) const; //what: 0 - background, 1 - background wall, 2 - keep, 3 - bottom tower, 4 - bottom wall, 5 - below gate, 6 - over gate, 7 - upper wall, 8 - uppert tower, 9 - gate, 10 - gate arch, 11 - bottom static wall, 12 - upper static wall; additInfo: 1 - intact, 2 - damaged, 3 - destroyed
|
std::string getSiegeName(ui16 what, ui16 additInfo = 1) const; //what: 0 - background, 1 - background wall, 2 - keep, 3 - bottom tower, 4 - bottom wall, 5 - below gate, 6 - over gate, 7 - upper wall, 8 - uppert tower, 9 - gate, 10 - gate arch, 11 - bottom static wall, 12 - upper static wall; additInfo: 1 - intact, 2 - damaged, 3 - destroyed
|
||||||
|
|
||||||
void printSiegeBackground(SDL_Surface * to);
|
void printPartOfWall(SDL_Surface * to, int what);//what: 1 - background wall, 2 - keep, 3 - bottom tower, 4 - bottom wall, 5 - below gate, 6 - over gate, 7 - upper wall, 8 - uppert tower, 9 - gate, 10 - gate arch, 11 - bottom static wall, 12 - upper static wall
|
||||||
void printPartOfWall(SDL_Surface * to, int what);//what: 2 - keep, 3 - bottom tower, 4 - bottom wall, 5 - below gate, 6 - over gate, 7 - upper wall, 8 - uppert tower, 9 - gate, 10 - gate arch, 11 - bottom static wall, 12 - upper static wall
|
|
||||||
} * siegeH;
|
} * siegeH;
|
||||||
public:
|
public:
|
||||||
CBattleInterface(CCreatureSet * army1, CCreatureSet * army2, CGHeroInstance *hero1, CGHeroInstance *hero2, const SDL_Rect & myRect); //c-tor
|
CBattleInterface(CCreatureSet * army1, CCreatureSet * army2, CGHeroInstance *hero1, CGHeroInstance *hero2, const SDL_Rect & myRect); //c-tor
|
||||||
|
@@ -300,6 +300,27 @@ void BattleInfo::getAccessibilityMap(bool *accessibility, bool twoHex, bool atta
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//walls
|
||||||
|
if(siege >= 0)
|
||||||
|
{
|
||||||
|
static int permanentlyLocked[] = {12, 45, 78, 112, 147, 182};
|
||||||
|
for(int b=0; b<ARRAY_COUNT(permanentlyLocked); ++b)
|
||||||
|
{
|
||||||
|
accessibility[permanentlyLocked[b]] = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
static std::pair<int, int> lockedIfNotDestroyed[] = //(which part of wall, which hex is blocked if this part of wall is not destroyed
|
||||||
|
{std::make_pair(2, 165), std::make_pair(3, 130), std::make_pair(4, 62), std::make_pair(5, 29)};
|
||||||
|
for(int b=0; b<ARRAY_COUNT(lockedIfNotDestroyed); ++b)
|
||||||
|
{
|
||||||
|
if(si.wallState[lockedIfNotDestroyed[b].first] < 3)
|
||||||
|
{
|
||||||
|
accessibility[lockedIfNotDestroyed[b].second] = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//occupyability
|
||||||
if(addOccupiable && twoHex)
|
if(addOccupiable && twoHex)
|
||||||
{
|
{
|
||||||
std::set<int> rem; //tiles to unlock
|
std::set<int> rem; //tiles to unlock
|
||||||
|
Reference in New Issue
Block a user