[Client] Avoid sending map tiles for Wilderness cells

0.6.3
David Cernat 7 years ago
parent 17c234d9ca
commit c23fc3446f

@ -65,9 +65,6 @@ void Worldstate::sendMapExplored(int cellX, int cellY, const std::vector<char>&
getNetworking()->getWorldstatePacket(ID_WORLD_MAP)->setWorldstate(this);
getNetworking()->getWorldstatePacket(ID_WORLD_MAP)->Send();
// Keep this tile marked as explored so we don't send any more packets for it
markExploredMapTile(mapTile.x, mapTile.y);
}
void Worldstate::setMapExplored()

@ -651,6 +651,7 @@ namespace MWRender
Send an ID_PLAYER_MAP packet with this map tile to the server, but only if:
1) We have recorded the exterior cell corresponding to this tile's coordinates
2) The tile has not previously been marked as explored in this client's mwmp::Worldstate
3) The tile does not belong to a Wilderness cell
*/
if (originToCellX.count(imageDest.mX) > 0 && originToCellY.count(imageDest.mY) > 0)
{
@ -661,28 +662,34 @@ namespace MWRender
if (!worldstate->containsExploredMapTile(cellX, cellY))
{
LOG_MESSAGE_SIMPLE(Log::LOG_ERROR, "New global map tile corresponds to cell %i, %i", originToCellX.at(imageDest.mX), originToCellY.at(imageDest.mY));
// Keep this tile marked as explored so we don't send any more packets for it
worldstate->markExploredMapTile(cellX, cellY);
osgDB::ReaderWriter* readerwriter = osgDB::Registry::instance()->getReaderWriterForExtension("png");
if (!readerwriter)
if (MWBase::Environment::get().getWorld()->getExterior(cellX, cellY)->getCell()->mContextList.empty() == false)
{
std::cerr << "Error: Can't write temporary map image, no '" << "png" << "' readerwriter found" << std::endl;
return;
}
LOG_MESSAGE_SIMPLE(Log::LOG_ERROR, "New global map tile corresponds to cell %i, %i", originToCellX.at(imageDest.mX), originToCellY.at(imageDest.mY));
std::ostringstream ostream;
osgDB::ReaderWriter* readerwriter = osgDB::Registry::instance()->getReaderWriterForExtension("png");
if (!readerwriter)
{
std::cerr << "Error: Can't write temporary map image, no '" << "png" << "' readerwriter found" << std::endl;
return;
}
osgDB::ReaderWriter::WriteResult result = readerwriter->writeImage(*imageDest.mImage, ostream);
std::ostringstream ostream;
if (!result.success())
{
std::cerr << "Error: Can't write temporary map image: " << result.message() << " code " << result.status() << std::endl;
}
osgDB::ReaderWriter::WriteResult result = readerwriter->writeImage(*imageDest.mImage, ostream);
std::string stringData = ostream.str();
std::vector<char> vectorData = std::vector<char>(stringData.begin(), stringData.end());
if (!result.success())
{
std::cerr << "Error: Can't write temporary map image: " << result.message() << " code " << result.status() << std::endl;
}
worldstate->sendMapExplored(cellX, cellY, vectorData);
std::string stringData = ostream.str();
std::vector<char> vectorData = std::vector<char>(stringData.begin(), stringData.end());
worldstate->sendMapExplored(cellX, cellY, vectorData);
}
}
}
/*

Loading…
Cancel
Save