void CMapGenerator::GenerateMapInfo(CVirtualArchive* archive) { CVirtualFile* fileMapInfo = archive->AddFile("mapinfo.lua"); //Open template mapinfo.lua const std::string luaTemplate = "mapgenerator/mapinfo_template.lua"; CFileHandler fh(luaTemplate, SPRING_VFS_PWD_ALL); if(!fh.FileExists()) { throw content_error("Error generating map: " + luaTemplate + " not found"); } std::string luaInfo; fh.LoadStringData(luaInfo); //Make info to put in mapinfo std::stringstream ss; std::string startPosString; const std::vector<int2>& startPositions = GetStartPositions(); for(size_t x = 0; x < startPositions.size(); x++) { ss << "[" << x << "] = {startPos = {x = " << startPositions[x].x << ", z = " << startPositions[x].y << "}},"; } startPosString = ss.str(); //Replace tags in mapinfo.lua boost::replace_first(luaInfo, "${NAME}", setup->mapName); boost::replace_first(luaInfo, "${DESCRIPTION}", GetMapDescription()); boost::replace_first(luaInfo, "${START_POSITIONS}", startPosString); //Copy to filebuffer fileMapInfo->buffer.assign(luaInfo.begin(), luaInfo.end()); }
void ProtocolGameBase::sendMapDescription(const Position& pos) { NetworkMessage msg; msg.addByte(0x64); msg.addPosition(player->getPosition()); GetMapDescription(pos.x - 8, pos.y - 6, pos.z, 18, 14, msg); writeToOutputBuffer(msg); }