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 | |
parent | 52d99fef31daa60903053bc565b6b9d3a31a2bc8 (diff) | |
download | minetest-21372749f5700632a0f136f1b1db29bd424bc448.tar.gz minetest-21372749f5700632a0f136f1b1db29bd424bc448.tar.bz2 minetest-21372749f5700632a0f136f1b1db29bd424bc448.zip |
now it works nicely
-rw-r--r-- | src/client.cpp | 2 | ||||
-rw-r--r-- | src/defaultsettings.cpp | 2 | ||||
-rw-r--r-- | src/map.cpp | 64 | ||||
-rw-r--r-- | src/map.h | 3 | ||||
-rw-r--r-- | src/mapblock.cpp | 10 |
5 files changed, 60 insertions, 21 deletions
diff --git a/src/client.cpp b/src/client.cpp index 4febdd4f7..21c911ec6 100644 --- a/src/client.cpp +++ b/src/client.cpp @@ -989,7 +989,7 @@ void Client::ProcessData(u8 *data, u32 datasize, u16 sender_peer_id) s32 t = (((m_time_of_day.get())%24000)/(24000/d)); u32 dr; if(t < nightlength/2 || t >= d - nightlength/2) - dr = 400; + dr = 300; else if(t >= d/2 - daytimelength/2 && t < d/2 + daytimelength/2) dr = 1000; else diff --git a/src/defaultsettings.cpp b/src/defaultsettings.cpp index de825ff0a..63163add9 100644 --- a/src/defaultsettings.cpp +++ b/src/defaultsettings.cpp @@ -39,7 +39,7 @@ void set_default_settings() g_settings.setDefault("random_input", "false"); g_settings.setDefault("client_delete_unused_sectors_timeout", "1200"); g_settings.setDefault("enable_fog", "true"); - g_settings.setDefault("new_style_water", "true"); + g_settings.setDefault("new_style_water", "false"); g_settings.setDefault("new_style_leaves", "true"); g_settings.setDefault("frametime_graph", "false"); 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; @@ -364,7 +364,8 @@ public: All chunks touching this one can be altered also. */ MapChunk* generateChunkRaw(v2s16 chunkpos, - core::map<v3s16, MapBlock*> &changed_blocks); + core::map<v3s16, MapBlock*> &changed_blocks, + bool force=false); /* Generate a chunk and its neighbors so that it won't be touched diff --git a/src/mapblock.cpp b/src/mapblock.cpp index bff366add..c5ede565a 100644 --- a/src/mapblock.cpp +++ b/src/mapblock.cpp @@ -661,7 +661,7 @@ void MapBlock::updateMesh(u32 daynight_ratio) float node_water_level = 1.0; if(new_style_water) - node_water_level = 0.9; + node_water_level = 0.85; /* We are including the faces of the trailing edges of the block. @@ -1157,13 +1157,13 @@ void MapBlock::updateMesh(u32 daynight_ratio) video::S3DVertex(BS/2,0,-BS/2, 0,0,0, c, 1,1), video::S3DVertex(BS/2,0,BS/2, 0,0,0, c, 1,0), video::S3DVertex(-BS/2,0,BS/2, 0,0,0, c, 0,0),*/ - video::S3DVertex(-BS/2,0,-BS/2, 0,0,0, c, + video::S3DVertex(-BS/2,0,BS/2, 0,0,0, c, pa_water1.x0(), pa_water1.y1()), - video::S3DVertex(BS/2,0,-BS/2, 0,0,0, c, - pa_water1.x1(), pa_water1.y1()), video::S3DVertex(BS/2,0,BS/2, 0,0,0, c, + pa_water1.x1(), pa_water1.y1()), + video::S3DVertex(BS/2,0,-BS/2, 0,0,0, c, pa_water1.x1(), pa_water1.y0()), - video::S3DVertex(-BS/2,0,BS/2, 0,0,0, c, + video::S3DVertex(-BS/2,0,-BS/2, 0,0,0, c, pa_water1.x0(), pa_water1.y0()), }; |