From 5a34f40d80ea1a339b599bc11db549a6bd86912f Mon Sep 17 00:00:00 2001 From: kwolekr Date: Mon, 3 Feb 2014 22:42:10 -0500 Subject: Huge overhaul of the entire MapgenParams system MapgenParams is no longer a polymorphic class, eliminating the need for messy and bug-prone reallocations. Separation between the common and mapgen-specific parameters is now strongly defined. Mapgen parameters objects are now properly encapsulated within the proper subsystems. --- src/mapgen_v7.h | 43 ++++++++++++++++--------------------------- 1 file changed, 16 insertions(+), 27 deletions(-) (limited to 'src/mapgen_v7.h') diff --git a/src/mapgen_v7.h b/src/mapgen_v7.h index e7a72e464..a7c80928f 100644 --- a/src/mapgen_v7.h +++ b/src/mapgen_v7.h @@ -22,17 +22,16 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "mapgen.h" -extern NoiseParams nparams_v7_def_terrain_base; -extern NoiseParams nparams_v7_def_terrain_alt; -extern NoiseParams nparams_v7_def_terrain_persist; -extern NoiseParams nparams_v7_def_height_select; -extern NoiseParams nparams_v7_def_filler_depth; -extern NoiseParams nparams_v7_def_mount_height; -extern NoiseParams nparams_v7_def_ridge_uwater; -extern NoiseParams nparams_v7_def_mountain; -extern NoiseParams nparams_v7_def_ridge; - -struct MapgenV7Params : public MapgenParams { +/////////////////// Mapgen V7 flags +#define MGV7_MOUNTAINS 0x01 +#define MGV7_RIDGES 0x02 + + +extern FlagDesc flagdesc_mapgen_v7[]; + + +struct MapgenV7Params : public MapgenSpecificParams { + u32 spflags; NoiseParams np_terrain_base; NoiseParams np_terrain_alt; NoiseParams np_terrain_persist; @@ -43,21 +42,10 @@ struct MapgenV7Params : public MapgenParams { NoiseParams np_mountain; NoiseParams np_ridge; - MapgenV7Params() { - np_terrain_base = nparams_v7_def_terrain_base; - np_terrain_alt = nparams_v7_def_terrain_alt; - np_terrain_persist = nparams_v7_def_terrain_persist; - np_height_select = nparams_v7_def_height_select; - np_filler_depth = nparams_v7_def_filler_depth; - np_mount_height = nparams_v7_def_mount_height; - np_ridge_uwater = nparams_v7_def_ridge_uwater; - np_mountain = nparams_v7_def_mountain; - np_ridge = nparams_v7_def_ridge; - } - + MapgenV7Params(); ~MapgenV7Params() {} - bool readParams(Settings *settings); + void readParams(Settings *settings); void writeParams(Settings *settings); }; @@ -69,6 +57,7 @@ public: int ystride; int zstride; u32 flags; + u32 spflags; u32 blockseed; v3s16 node_min; @@ -103,7 +92,7 @@ public: content_t c_desert_sand; content_t c_desert_stone; - MapgenV7(int mapgenid, MapgenV7Params *params, EmergeManager *emerge); + MapgenV7(int mapgenid, MapgenParams *params, EmergeManager *emerge); ~MapgenV7(); virtual void makeChunk(BlockMakeData *data); @@ -132,10 +121,10 @@ public: struct MapgenFactoryV7 : public MapgenFactory { Mapgen *createMapgen(int mgid, MapgenParams *params, EmergeManager *emerge) { - return new MapgenV7(mgid, (MapgenV7Params *)params, emerge); + return new MapgenV7(mgid, params, emerge); }; - MapgenParams *createMapgenParams() { + MapgenSpecificParams *createMapgenParams() { return new MapgenV7Params(); }; }; -- cgit v1.2.3