diff options
author | Perttu Ahola <celeron55@gmail.com> | 2011-02-11 20:37:54 +0200 |
---|---|---|
committer | Perttu Ahola <celeron55@gmail.com> | 2011-02-11 20:37:54 +0200 |
commit | 21372749f5700632a0f136f1b1db29bd424bc448 (patch) | |
tree | 745b390591ab52a4c06d96c10a2d5f6e18c4c481 /src/map.cpp | |
parent | 52d99fef31daa60903053bc565b6b9d3a31a2bc8 (diff) | |
download | minetest-21372749f5700632a0f136f1b1db29bd424bc448.tar.gz minetest-21372749f5700632a0f136f1b1db29bd424bc448.tar.bz2 minetest-21372749f5700632a0f136f1b1db29bd424bc448.zip |
now it works nicely
Diffstat (limited to 'src/map.cpp')
-rw-r--r-- | src/map.cpp | 64 |
1 files changed, 51 insertions, 13 deletions
diff --git a/src/map.cpp b/src/map.cpp index ba958d148..8ac5352a4 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -2077,13 +2077,15 @@ double base_rock_level_2d(u64 seed, v2s16 p) */ MapChunk* ServerMap::generateChunkRaw(v2s16 chunkpos, - core::map<v3s16, MapBlock*> &changed_blocks) + core::map<v3s16, MapBlock*> &changed_blocks, + bool force) { DSTACK(__FUNCTION_NAME); /* Don't generate if already fully generated */ + if(force == false) { MapChunk *chunk = getChunk(chunkpos); if(chunk != NULL && chunk->getGenLevel() == GENERATED_FULLY) @@ -2427,7 +2429,7 @@ MapChunk* ServerMap::generateChunkRaw(v2s16 chunkpos, /* Make dungeons */ - u32 dungeons_count = relative_volume / 400000; + u32 dungeons_count = relative_volume / 600000; u32 bruises_count = relative_volume * stone_surface_max_y / 40000000; if(stone_surface_max_y < WATER_LEVEL) bruises_count = 0; @@ -2648,7 +2650,7 @@ MapChunk* ServerMap::generateChunkRaw(v2s16 chunkpos, /* Make ore veins */ - for(u32 jj=0; jj<relative_volume/2000; jj++) + for(u32 jj=0; jj<relative_volume/1000; jj++) { s16 max_vein_diameter = 3; @@ -2681,7 +2683,11 @@ MapChunk* ServerMap::generateChunkRaw(v2s16 chunkpos, ); // Randomize mineral - u8 mineral = myrand_range(1, MINERAL_COUNT-1); + u8 mineral; + if(myrand()%3 != 0) + mineral = MINERAL_COAL; + else + mineral = MINERAL_IRON; /* Generate some vein starting from orp @@ -2696,7 +2702,7 @@ MapChunk* ServerMap::generateChunkRaw(v2s16 chunkpos, ); v3f vec = rp - orp;*/ - v3s16 maxlen(10, 10, 10); + v3s16 maxlen(5, 5, 5); v3f vec( (float)(myrand()%(maxlen.X*2))-(float)maxlen.X, (float)(myrand()%(maxlen.Y*2))-(float)maxlen.Y, @@ -3756,9 +3762,38 @@ MapSector * ServerMap::emergeSector(v2s16 p2d, /* generateChunk should have generated the sector */ - assert(0); + //assert(0); + + dstream<<"WARNING: ServerMap::emergeSector: Cannot find sector (" + <<p2d.X<<","<<p2d.Y<<" and chunk is already generated. " + <<std::endl; + +#if 0 + dstream<<"WARNING: Creating an empty sector."<<std::endl; + + return createSector(p2d); + +#endif + +#if 1 + dstream<<"WARNING: Forcing regeneration of chunk."<<std::endl; + + // Generate chunk + generateChunkRaw(chunkpos, changed_blocks, true); /* + Return sector if it exists now + */ + sector = getSectorNoGenerateNoEx(p2d); + if(sector != NULL) + return sector; + + dstream<<"ERROR: Could not get sector from anywhere."<<std::endl; + + assert(0); +#endif + + /* Generate directly */ //return generateSector(); @@ -4763,7 +4798,7 @@ void ServerMap::saveMapMeta() createDir(m_savedir); - std::string fullpath = m_savedir + "/meta.txt"; + std::string fullpath = m_savedir + "/map_meta.txt"; std::ofstream os(fullpath.c_str(), std::ios_base::binary); if(os.good() == false) { @@ -4789,7 +4824,7 @@ void ServerMap::loadMapMeta() dstream<<"INFO: ServerMap::loadMapMeta(): Loading chunk metadata" <<std::endl; - std::string fullpath = m_savedir + "/meta.txt"; + std::string fullpath = m_savedir + "/map_meta.txt"; std::ifstream is(fullpath.c_str(), std::ios_base::binary); if(is.good() == false) { @@ -4921,10 +4956,10 @@ void ServerMap::saveSectorMeta(ServerMapSector *sector) std::string dir = getSectorDir(pos); createDir(dir); - std::string fullpath = dir + "/heightmap"; + std::string fullpath = dir + "/meta"; std::ofstream o(fullpath.c_str(), std::ios_base::binary); if(o.good() == false) - throw FileNotGoodException("Cannot open master heightmap"); + throw FileNotGoodException("Cannot open sector metafile"); sector->serialize(o, version); @@ -4938,10 +4973,10 @@ MapSector* ServerMap::loadSectorMeta(std::string dirname) v2s16 p2d = getSectorPos(dirname); std::string dir = m_savedir + "/sectors/" + dirname; - std::string fullpath = dir + "/heightmap"; + std::string fullpath = dir + "/meta"; std::ifstream is(fullpath.c_str(), std::ios_base::binary); if(is.good() == false) - throw FileNotGoodException("Cannot open sector heightmap"); + throw FileNotGoodException("Cannot open sector metafile"); ServerMapSector *sector = ServerMapSector::deSerialize (is, this, p2d, m_sectors); @@ -4975,7 +5010,10 @@ bool ServerMap::loadSectorFull(v2s16 p2d) { return false; } - + + /* + Load blocks + */ std::vector<fs::DirListNode> list2 = fs::GetDirListing (m_savedir+"/sectors/"+sectorsubdir); std::vector<fs::DirListNode>::iterator i2; |