1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-08-13 19:54:17 +02:00

boat offsets for shipyards are counted from visitable position

This commit is contained in:
Ivan Savenko
2023-06-20 22:38:47 +03:00
parent 6a08a96d0c
commit caccd58eb0
4 changed files with 25 additions and 10 deletions

View File

@@ -953,11 +953,15 @@ BoatId CGHeroInstance::getBoatType() const
void CGHeroInstance::getOutOffsets(std::vector<int3> &offsets) const
{
// FIXME: Offsets need to be fixed once we get rid of convertPosition
// Check issue 515 for details
offsets =
{
int3(-1,1,0), int3(-1,-1,0), int3(-2,0,0), int3(0,0,0), int3(0,1,0), int3(-2,1,0), int3(0,-1,0), int3(-2,-1,0)
offsets = {
{0, -1, 0},
{+1, -1, 0},
{+1, 0, 0},
{+1, +1, 0},
{0, +1, 0},
{-1, +1, 0},
{-1, 0, 0},
{-1, -1, 0},
};
}

View File

@@ -585,7 +585,7 @@ bool CGTownInstance::passableFor(PlayerColor color) const
void CGTownInstance::getOutOffsets( std::vector<int3> &offsets ) const
{
offsets = {int3(-1,2,0), int3(-3,2,0)};
offsets = {int3(-1,2,0), int3(+1,2,0)};
}
CGTownInstance::EGeneratorState CGTownInstance::shipyardStatus() const

View File

@@ -92,7 +92,9 @@ int3 IBoatGenerator::bestLocation() const
for (auto & offset : offsets)
{
if(const TerrainTile *tile = getObject()->cb->getTile(getObject()->getPosition() + offset, false)) //tile is in the map
const TerrainTile *tile = getObject()->cb->getTile(getObject()->visitablePos() + offset, false);
if(tile) //tile is in the map
{
if(tile->terType->isWater() && (!tile->blocked || tile->blockingObjects.front()->ID == Obj::BOAT)) //and is water and is not blocked or is blocked by boat
return getObject()->getPosition() + offset;

View File

@@ -1355,9 +1355,18 @@ void CGShipyard::getOutOffsets( std::vector<int3> &offsets ) const
// A x S x B
// C E G F D
offsets = {
int3(-3,0,0), int3(1,0,0), //AB
int3(-3,1,0), int3(1,1,0), int3(-2,1,0), int3(0,1,0), int3(-1,1,0), //CDEFG
int3(-3,-1,0), int3(1,-1,0), int3(-2,-1,0), int3(0,-1,0), int3(-1,-1,0) //HIJKL
{-2, 0, 0}, // A
{+2, 0, 0}, // B
{-2, 1, 0}, // C
{+2, 1, 0}, // D
{-1, 1, 0}, // E
{+1, 1, 0}, // F
{0, 1, 0}, // G
{-2, -1, 0}, // H
{+2, -1, 0}, // I
{-1, -1, 0}, // G
{+1, -1, 0}, // K
{0, -1, 0}, // L
};
}