1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-07-01 00:45:26 +02:00

New terrain support - part 1 (#755)

Initial support of new terrains
This commit is contained in:
Nordsoft91
2022-06-20 17:39:50 +03:00
committed by Andrii Danylchenko
parent 205bb09880
commit aaa07e4d2e
103 changed files with 1066 additions and 1472 deletions

View File

@ -963,8 +963,8 @@ void CGameState::initGrailPosition()
const TerrainTile &t = map->getTile(int3(i, j, k));
if(!t.blocked
&& !t.visitable
&& t.terType != ETerrainType::WATER
&& t.terType != ETerrainType::ROCK
&& t.terType.isLand()
&& t.terType.isPassable()
&& (int)map->grailPos.dist2dSQ(int3(i, j, k)) <= (map->grailRadius * map->grailRadius))
allowedPos.push_back(int3(i,j,k));
}
@ -1940,31 +1940,31 @@ BFieldType CGameState::battleGetBattlefieldType(int3 tile, CRandomGenerator & ra
if(map->isCoastalTile(tile)) //coastal tile is always ground
return BFieldType::SAND_SHORE;
switch(t.terType)
{
case ETerrainType::DIRT:
if(t.terType == Terrain("dirt"))
return BFieldType(rand.nextInt(3, 5));
case ETerrainType::SAND:
if(t.terType == Terrain("sand"))
return BFieldType::SAND_MESAS; //TODO: coast support
case ETerrainType::GRASS:
if(t.terType == Terrain("grass"))
return BFieldType(rand.nextInt(6, 7));
case ETerrainType::SNOW:
if(t.terType == Terrain("snow"))
return BFieldType(rand.nextInt(10, 11));
case ETerrainType::SWAMP:
if(t.terType == Terrain("swamp"))
return BFieldType::SWAMP_TREES;
case ETerrainType::ROUGH:
if(t.terType == Terrain("rough"))
return BFieldType::ROUGH;
case ETerrainType::SUBTERRANEAN:
if(t.terType.isUnderground())
return BFieldType::SUBTERRANEAN;
case ETerrainType::LAVA:
if(t.terType == Terrain("lava"))
return BFieldType::LAVA;
case ETerrainType::WATER:
if(t.terType.isWater())
return BFieldType::SHIP;
case ETerrainType::ROCK:
if(!t.terType.isPassable())
return BFieldType::ROCKLANDS;
default:
return BFieldType::NONE;
}
//TODO: STUB, support new battlegrounds
return BFieldType::DIRT_HILLS;
return BFieldType::NONE;
}
UpgradeInfo CGameState::getUpgradeInfo(const CStackInstance &stack)
@ -2145,7 +2145,7 @@ void CGameState::updateRumor()
rumorId = *RandomGeneratorUtil::nextItem(sRumorTypes, rand);
if(rumorId == RumorState::RUMOR_GRAIL)
{
rumorExtra = getTile(map->grailPos)->terType;
rumorExtra = getTile(map->grailPos)->terType.id();
break;
}