#include "util/container.h"
#include "nodetimer.h"
+class Settings;
class Database;
class ClientMap;
class MapSector;
//bool updateChangedVisibleArea();
// Call these before and after saving of many blocks
- virtual void beginSave() {return;};
- virtual void endSave() {return;};
+ virtual void beginSave() { return; }
+ virtual void endSave() { return; }
- virtual void save(ModifiedState save_level){assert(0);};
+ virtual void save(ModifiedState save_level) { FATAL_ERROR("FIXME"); }
// Server implements these.
// Client leaves them as no-op.
- virtual bool saveBlock(MapBlock *block) { return false; };
- virtual bool deleteBlock(v3s16 blockpos) { return false; };
+ virtual bool saveBlock(MapBlock *block) { return false; }
+ virtual bool deleteBlock(v3s16 blockpos) { return false; }
/*
Updates usage timers and unloads unused blocks and sectors.
Saves modified blocks before unloading on MAPTYPE_SERVER.
*/
void timerUpdate(float dtime, float unload_timeout,
- std::list<v3s16> *unloaded_blocks=NULL);
+ std::vector<v3s16> *unloaded_blocks=NULL);
/*
Unloads all blocks with a zero refCount().
Saves modified blocks before unloading on MAPTYPE_SERVER.
*/
- void unloadUnreferencedBlocks(std::list<v3s16> *unloaded_blocks=NULL);
+ void unloadUnreferencedBlocks(std::vector<v3s16> *unloaded_blocks=NULL);
// Deletes sectors and their blocks from memory
// Takes cache into account
// If deleted sector is in sector cache, clears cache
- void deleteSectors(std::list<v2s16> &list);
-
-#if 0
- /*
- Unload unused data
- = flush changed to disk and delete from memory, if usage timer of
- block is more than timeout
- */
- void unloadUnusedData(float timeout,
- core::list<v3s16> *deleted_blocks=NULL);
-#endif
+ void deleteSectors(std::vector<v2s16> &list);
// For debug printing. Prints "Map: ", "ServerMap: " or "ClientMap: "
virtual void PrintInfo(std::ostream &out);
These are basically coordinate wrappers to MapBlock
*/
- NodeMetadata* getNodeMetadata(v3s16 p);
+ std::vector<v3s16> findNodesWithMetadata(v3s16 p1, v3s16 p2);
+ NodeMetadata *getNodeMetadata(v3s16 p);
/**
* Sets metadata for a node.
/*
Database functions
*/
+ static Database *createDatabase(const std::string &name, const std::string &savedir, Settings &conf);
// Verify we can read/write to the database
void verifyDatabase();
// Returns true if sector now resides in memory
//bool deFlushSector(v2s16 p2d);
- bool saveBlock(MapBlock *block, Database *db);
bool saveBlock(MapBlock *block);
+ static bool saveBlock(MapBlock *block, Database *db);
// This will generate a sector with getSector if not found.
void loadBlock(std::string sectordir, std::string blockfile, MapSector *sector, bool save_after_load=false);
MapBlock* loadBlock(v3s16 p);