本文整理汇总了C++中Map::GetTilesBegin方法的典型用法代码示例。如果您正苦于以下问题:C++ Map::GetTilesBegin方法的具体用法?C++ Map::GetTilesBegin怎么用?C++ Map::GetTilesBegin使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Map
的用法示例。
在下文中一共展示了Map::GetTilesBegin方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: PostProcessMap
void Generator::PostProcessMap(Map& map)
{
// Sort tiles by connectivity
std::map<std::pair<unsigned int, unsigned int>, unsigned int> tiles;
unsigned int id = 0;
for (Map::TileIterator itr = map.GetTilesBegin(); itr != map.GetTilesEnd(); ++itr)
{
if (!itr->second->IsBlocked())
{
std::map<std::pair<unsigned int, unsigned int>, unsigned int>::iterator itr2 = tiles.find(itr->first);
if (itr2 == tiles.end())
{
tiles.insert(std::make_pair(itr->first, id));
PostProcessTile(map, *itr->second, tiles, id);
++id;
}
}
}
// Find largest connected area
std::vector<unsigned int> count;
for (unsigned int i = 0; i != id; ++i)
{
count.push_back(0);
}
for (std::map<std::pair<unsigned int, unsigned int>, unsigned int>::iterator itr = tiles.begin(); itr != tiles.end(); ++itr)
{
++count[itr->second];
}
unsigned int max = 0;
unsigned int max_id = 0;
for (unsigned int i = 0; i != id; ++i)
{
if (count[i] > max)
{
max = count[i];
max_id = i;
}
}
// Blcok all tiles that aren't connected to the largest connected area
for (std::map<std::pair<unsigned int, unsigned int>, unsigned int>::iterator itr = tiles.begin(); itr != tiles.end(); ++itr)
{
if (itr->second != max_id)
{
Tile* tile = map.GetTile(itr->first.first, itr->first.second);
tile->SetType(TT_FOREST);
}
}
}