now it works nicely
authorPerttu Ahola <celeron55@gmail.com>
Fri, 11 Feb 2011 18:37:54 +0000 (20:37 +0200)
committerPerttu Ahola <celeron55@gmail.com>
Fri, 11 Feb 2011 18:37:54 +0000 (20:37 +0200)
src/client.cpp
src/defaultsettings.cpp
src/map.cpp
src/map.h
src/mapblock.cpp

index 4febdd4f7536f4f0bd023235d9de8fcc7b911465..21c911ec6fe3eb99ece4e8eed052e4f2df973c11 100644 (file)
@@ -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
index de825ff0ad85f4aba6e701472b642a5ca8338ce3..63163add9344a089f574e8d73381820ef3990847 100644 (file)
@@ -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");
        
index ba958d148f00ec665cc5a8b3d05d8ae2d1f8d257..8ac5352a4361a821920c950be3dbc4033e4b6402 100644 (file)
@@ -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,8 +3762,37 @@ 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
        */
@@ -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;
index fb05558245a2b9f2c220db80c69f2033e5d3008e..e93ba2cd354c390f8c291afbe4f1bb2b1aa941df 100644 (file)
--- a/src/map.h
+++ b/src/map.h
@@ -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
index bff366addc2e4bee975b40d39b1feecdd0ced727..c5ede565a6520163e1ee01a3781d778b31f658c7 100644 (file)
@@ -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()),
                        };