X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fdatabase-dummy.cpp;h=a3d8cd5791c7acbcca66a67fe905220ebad33137;hb=1105a14bccefb48a0e264fe19190c39629259338;hp=c4794d281a282330f1e8ba2e55eb3199396e7678;hpb=18577f25277f269c8dd8d2bdcaaccbac72d9370d;p=minetest.git diff --git a/src/database-dummy.cpp b/src/database-dummy.cpp index c4794d281..a3d8cd579 100644 --- a/src/database-dummy.cpp +++ b/src/database-dummy.cpp @@ -18,148 +18,42 @@ with this program; if not, write to the Free Software Foundation, Inc., */ /* -Dummy "database" class +Dummy database class */ - #include "database-dummy.h" -#include "map.h" -#include "mapsector.h" -#include "mapblock.h" -#include "serialization.h" -#include "main.h" -#include "settings.h" -#include "log.h" -Database_Dummy::Database_Dummy(ServerMap *map) +bool Database_Dummy::saveBlock(const v3s16 &pos, const std::string &data) { - srvmap = map; + m_database[getBlockAsInteger(pos)] = data; + return true; } -int Database_Dummy::Initialized(void) -{ - return 1; -} - -void Database_Dummy::beginSave() {} -void Database_Dummy::endSave() {} - -void Database_Dummy::saveBlock(MapBlock *block) +void Database_Dummy::loadBlock(const v3s16 &pos, std::string *block) { - DSTACK(__FUNCTION_NAME); - /* - Dummy blocks are not written - */ - if(block->isDummy()) - { + s64 i = getBlockAsInteger(pos); + auto it = m_database.find(i); + if (it == m_database.end()) { + *block = ""; return; } - // Format used for writing - u8 version = SER_FMT_VER_HIGHEST_WRITE; - // Get destination - v3s16 p3d = block->getPos(); - - /* - [0] u8 serialization version - [1] data - */ - - std::ostringstream o(std::ios_base::binary); - o.write((char*)&version, 1); - // Write basic data - block->serialize(o, version, true); - // Write block to database - std::string tmp = o.str(); - - m_database[getBlockAsInteger(p3d)] = tmp; - // We just wrote it to the disk so clear modified flag - block->resetModified(); + *block = it->second; } -MapBlock* Database_Dummy::loadBlock(v3s16 blockpos) +bool Database_Dummy::deleteBlock(const v3s16 &pos) { - v2s16 p2d(blockpos.X, blockpos.Z); - - if(m_database.count(getBlockAsInteger(blockpos))) { - /* - Make sure sector is loaded - */ - MapSector *sector = srvmap->createSector(p2d); - /* - Load block - */ - std::string datastr = m_database[getBlockAsInteger(blockpos)]; -// srvmap->loadBlock(&datastr, blockpos, sector, false); - - try { - std::istringstream is(datastr, std::ios_base::binary); - u8 version = SER_FMT_VER_INVALID; - is.read((char*)&version, 1); - - if(is.fail()) - throw SerializationError("ServerMap::loadBlock(): Failed" - " to read MapBlock version"); - - MapBlock *block = NULL; - bool created_new = false; - block = sector->getBlockNoCreateNoEx(blockpos.Y); - if(block == NULL) - { - block = sector->createBlankBlockNoInsert(blockpos.Y); - created_new = true; - } - // Read basic data - block->deSerialize(is, version, true); - // If it's a new block, insert it to the map - if(created_new) - sector->insertBlock(block); - /* - Save blocks loaded in old format in new format - */ - - //if(version < SER_FMT_VER_HIGHEST || save_after_load) - // Only save if asked to; no need to update version - //if(save_after_load) - // saveBlock(block); - // We just loaded it from, so it's up-to-date. - block->resetModified(); - - } - catch(SerializationError &e) - { - errorstream<<"Invalid block data in database" - <<" ("<getBool("ignore_world_load_errors")){ - errorstream<<"Ignoring block load error. Duck and cover! " - <<"(ignore_world_load_errors)"<getBlockNoCreateNoEx(blockpos); // should not be using this here - } - return(NULL); + m_database.erase(getBlockAsInteger(pos)); + return true; } -void Database_Dummy::listAllLoadableBlocks(std::list &dst) +void Database_Dummy::listAllLoadableBlocks(std::vector &dst) { - for(std::map::iterator x = m_database.begin(); x != m_database.end(); ++x) - { - v3s16 p = getIntegerAsBlock(x->first); - //dstream<<"block_i="<