diff options
author | Ilya Zhuravlev <zhuravlevilya@ya.ru> | 2012-10-23 01:18:44 +0400 |
---|---|---|
committer | Sfan5 <sfan5@live.de> | 2013-09-09 22:50:50 +0200 |
commit | 58841ef12f6cba1bb622353c1fcaa0e3c6fb46c9 (patch) | |
tree | 6012bbb1905231025dff89aa73782a7c38666839 /src/database.cpp | |
parent | 71a8769bb5ded4acb3f9e5a8502bb8af277f824d (diff) | |
download | minetest-58841ef12f6cba1bb622353c1fcaa0e3c6fb46c9.tar.gz minetest-58841ef12f6cba1bb622353c1fcaa0e3c6fb46c9.tar.bz2 minetest-58841ef12f6cba1bb622353c1fcaa0e3c6fb46c9.zip |
Add dummy and LevelDB database backends
Diffstat (limited to 'src/database.cpp')
-rw-r--r-- | src/database.cpp | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/database.cpp b/src/database.cpp new file mode 100644 index 000000000..771d9b962 --- /dev/null +++ b/src/database.cpp @@ -0,0 +1,50 @@ +#include "map.h" +#include "mapsector.h" +#include "mapblock.h" +#include "main.h" +#include "filesys.h" +#include "voxel.h" +#include "porting.h" +#include "mapgen.h" +#include "nodemetadata.h" +#include "settings.h" +#include "log.h" +#include "profiler.h" +#include "nodedef.h" +#include "gamedef.h" +#include "util/directiontables.h" +#include "rollback_interface.h" + + +#include "database.h" + +static s32 unsignedToSigned(s32 i, s32 max_positive) +{ + if(i < max_positive) + return i; + else + return i - 2*max_positive; +} + +// modulo of a negative number does not work consistently in C +static s64 pythonmodulo(s64 i, s64 mod) +{ + if(i >= 0) + return i % mod; + return mod - ((-i) % mod); +} + +long long Database::getBlockAsInteger(const v3s16 pos) { + return (unsigned long long)pos.Z*16777216 + + (unsigned long long)pos.Y*4096 + + (unsigned long long)pos.X; +} + +v3s16 Database::getIntegerAsBlock(long long i) { + s32 x = unsignedToSigned(pythonmodulo(i, 4096), 2048); + i = (i - x) / 4096; + s32 y = unsignedToSigned(pythonmodulo(i, 4096), 2048); + i = (i - y) / 4096; + s32 z = unsignedToSigned(pythonmodulo(i, 4096), 2048); + return v3s16(x,y,z); +} |