diff options
-rw-r--r-- | src/main.cpp | 23 | ||||
-rw-r--r-- | src/map.cpp | 8 | ||||
-rw-r--r-- | src/mapblock.cpp | 20 | ||||
-rw-r--r-- | src/mapnode.h | 15 | ||||
-rw-r--r-- | src/tile.cpp | 39 | ||||
-rw-r--r-- | src/voxel.cpp | 2 |
6 files changed, 41 insertions, 66 deletions
diff --git a/src/main.cpp b/src/main.cpp index 858d25fa1..171f1538a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -236,7 +236,7 @@ Map: NOTE: There are some lighting-related todos and fixmes in
ServerMap::emergeBlock. And there always will be. 8)
-TODO: Map generator version 2
+FEATURE: Map generator version 2
- Create surface areas based on central points; a given point's
area type is given by the nearest central point
- Separate points for heightmap, caves, plants and minerals?
@@ -246,18 +246,33 @@ TODO: Map generator version 2 where some minerals are found
- Create a system that allows a huge amount of different "map
generator modules/filters"
+
+FEATURE: The map could be generated procedually:
+ - This would need the map to be generated in larger pieces
+ - How large? How do they connect to each other?
+ * Make the stone level with a heightmap
+ * Carve out stuff in the stone
+ * Dump dirt all around, and simulate it falling off steep
+ places
+ * Erosion simulation at map generation time
+ - Simulate water flows, which would carve out dirt fast and
+ then turn stone into gravel and sand and relocate it.
+ - How about relocating minerals, too? Coal and gold in
+ downstream sand and gravel would be kind of cool
+ - This would need a better way of handling minerals, mainly
+ to have mineral content as a separate field
+ - Simulate rock falling from cliffs when water has removed
+ enough solid rock from the bottom
TODO: Change AttributeList to split the area into smaller sections so
that searching won't be as heavy.
-TODO: Change AttributeList to be 2D, as it would be too slow to search
- in 3D fields anyway.
TODO: Remove HMParams
TODO: Flowing water to actually contain flow direction information
TODO: Remove duplicate lighting implementation from Map (leave
- VoxelManipulator)
+ VoxelManipulator, which is faster)
Doing now:
----------
diff --git a/src/map.cpp b/src/map.cpp index bbcc0f36f..0b5872e05 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -1804,7 +1804,7 @@ ServerMap::ServerMap(std::string savedir, HMParams hmp, MapParams mp): float randmax = 0; float randfactor = 0; - if(myrand()%5 == 0) + /*if(myrand()%5 == 0) { baseheight = 100; randmax = 50; @@ -1833,7 +1833,11 @@ ServerMap::ServerMap(std::string savedir, HMParams hmp, MapParams mp): baseheight = -3; randmax = 20; randfactor = 0.5; - } + }*/ + + baseheight = 0; + randmax = 15; + randfactor = 0.63; list_baseheight->addPoint(p, Attribute(baseheight)); list_randmax->addPoint(p, Attribute(randmax)); diff --git a/src/mapblock.cpp b/src/mapblock.cpp index 620c29fdd..3eb65b4da 100644 --- a/src/mapblock.cpp +++ b/src/mapblock.cpp @@ -1504,13 +1504,13 @@ void MapBlock::serialize(std::ostream &os, u8 version) if(version >= 10) { - // Get and compress pressure - SharedBuffer<u8> pressuredata(nodecount); + // Get and compress param2 + SharedBuffer<u8> param2data(nodecount); for(u32 i=0; i<nodecount; i++) { - pressuredata[i] = data[i].pressure; + param2data[i] = data[i].param2; } - compress(pressuredata, os, version); + compress(param2data, os, version); } } // All other versions (newest) @@ -1544,10 +1544,10 @@ void MapBlock::serialize(std::ostream &os, u8 version) databuf[i+nodecount] = data[i].param; } - // Get pressure + // Get param2 for(u32 i=0; i<nodecount; i++) { - databuf[i+nodecount*2] = data[i].pressure; + databuf[i+nodecount*2] = data[i].param2; } /* @@ -1621,7 +1621,7 @@ void MapBlock::deSerialize(std::istream &is, u8 version) if(version >= 10) { - // Uncompress and set pressure data + // Uncompress and set param2 data std::ostringstream os(std::ios_base::binary); decompress(is, os, version); std::string s = os.str(); @@ -1630,7 +1630,7 @@ void MapBlock::deSerialize(std::istream &is, u8 version) ("MapBlock::deSerialize: invalid format"); for(u32 i=0; i<s.size(); i++) { - data[i].pressure = s[i]; + data[i].param2 = s[i]; } } } @@ -1662,10 +1662,10 @@ void MapBlock::deSerialize(std::istream &is, u8 version) { data[i].param = s[i+nodecount]; } - // Set pressure + // Set param2 for(u32 i=0; i<nodecount; i++) { - data[i].pressure = s[i+nodecount*2]; + data[i].param2 = s[i+nodecount*2]; } } } diff --git a/src/mapnode.h b/src/mapnode.h index 286edcc2b..69a5a08cd 100644 --- a/src/mapnode.h +++ b/src/mapnode.h @@ -374,11 +374,6 @@ struct MapNode union { u8 param2; - - /* - Pressure for liquids - */ - u8 pressure; /* Direction for torches and other stuff. @@ -392,18 +387,18 @@ struct MapNode *this = n; } - MapNode(u8 data=CONTENT_AIR, u8 a_param=0, u8 a_pressure=0) + MapNode(u8 data=CONTENT_AIR, u8 a_param=0, u8 a_param2=0) { d = data; param = a_param; - pressure = a_pressure; + param2 = a_param2; } bool operator==(const MapNode &other) { return (d == other.d && param == other.param - && pressure == other.pressure); + && param2 == other.param2); } bool light_propagates() @@ -557,7 +552,7 @@ struct MapNode { dest[0] = d; dest[1] = param; - dest[2] = pressure; + dest[2] = param2; } } void deSerialize(u8 *source, u8 version) @@ -587,7 +582,7 @@ struct MapNode { d = source[0]; param = source[1]; - pressure = source[2]; + param2 = source[2]; } } }; diff --git a/src/tile.cpp b/src/tile.cpp index 79d68d4c3..18a2f155a 100644 --- a/src/tile.cpp +++ b/src/tile.cpp @@ -23,51 +23,12 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "main.h" #include <string> -// A mapping from tiles to paths of textures - -/*const char * g_tile_texture_filenames[TILES_COUNT] = -{ - NULL, - "stone.png", - "water.png", - "grass.png", - "tree.png", - "leaves.png", - "grass_footsteps.png", - "mese.png", - "mud.png", - "tree_top.png", - "mud.png_sidegrass", - "cloud.png", - "coalstone.png", - "wood.png", -};*/ - /* These can either be real paths or generated names of preloaded textures (like "mud.png_sidegrass") */ std::string g_tile_texture_paths[TILES_COUNT]; -/*std::string g_tile_texture_path_strings[TILES_COUNT]; -const char * g_tile_texture_paths[TILES_COUNT] = {0}; - -void init_tile_texture_paths() -{ - for(s32 i=0; i<TILES_COUNT; i++) - { - const char *filename = g_tile_texture_filenames[i]; - - if(filename != NULL) - { - g_tile_texture_path_strings[i] = - porting::getDataPath(filename); - g_tile_texture_paths[i] = - g_tile_texture_path_strings[i].c_str(); - } - } -}*/ - const char * tile_texture_path_get(u32 i) { assert(i < TILES_COUNT); diff --git a/src/voxel.cpp b/src/voxel.cpp index a0cc44d71..272e11ccc 100644 --- a/src/voxel.cpp +++ b/src/voxel.cpp @@ -96,7 +96,7 @@ void VoxelManipulator::print(std::ostream &o, VoxelPrintMode mode) { c = 'X'; u8 m = m_data[m_area.index(x,y,z)].d; - u8 pr = m_data[m_area.index(x,y,z)].pressure; + u8 pr = m_data[m_area.index(x,y,z)].param2; if(mode == VOXELPRINT_MATERIAL) { if(m <= 9) |