X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fmapgen.h;h=7b8ff57ca42ee0bfe03043a7f8c623777b890d4d;hb=45589fae58157c8a66c640a1db5795a42a86fc1c;hp=0ed64f85c589784bf3668b0c7bd11e4c467aa057;hpb=d6ac3d8d9a6484f2d348d1caea203de0069b6bd6;p=dragonfireclient.git diff --git a/src/mapgen.h b/src/mapgen.h index 0ed64f85c..7b8ff57ca 100644 --- a/src/mapgen.h +++ b/src/mapgen.h @@ -23,6 +23,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "irrlichttypes_extrabloated.h" #include "util/container.h" // UniqueQueue #include "gamedef.h" +#include "nodedef.h" #include "mapnode.h" #include "noise.h" #include "settings.h" @@ -35,6 +36,9 @@ with this program; if not, write to the Free Software Foundation, Inc., #define MGV6_JUNGLES 0x08 #define MGV6_BIOME_BLEND 0x10 #define MG_FLAT 0x20 +#define MG_NOLIGHT 0x40 +#define MGV7_MOUNTAINS 0x80 +#define MGV7_RIDGES 0x100 /////////////////// Ore generation flags // Use absolute value of height to determine ore placement @@ -60,7 +64,6 @@ class EmergeManager; class MapBlock; class ManualMapVoxelManipulator; class VoxelManipulator; -class INodeDefManager; struct BlockMakeData; class VoxelArea; class Map; @@ -80,8 +83,8 @@ struct MapgenParams { flags = MG_TREES | MG_CAVES | MGV6_BIOME_BLEND; } - virtual bool readParams(Settings *settings) = 0; - virtual void writeParams(Settings *settings) = 0; + virtual bool readParams(Settings *settings) { return true; } + virtual void writeParams(Settings *settings) {} virtual ~MapgenParams() {} }; @@ -93,8 +96,10 @@ class Mapgen { int id; ManualMapVoxelManipulator *vm; INodeDefManager *ndef; + s16 *heightmap; u8 *biomemap; + v3s16 csize; Mapgen(); virtual ~Mapgen() {} @@ -124,6 +129,14 @@ struct MapgenFactory { virtual ~MapgenFactory() {} }; +enum MapgenObject { + MGOBJ_VMANIP, + MGOBJ_HEIGHTMAP, + MGOBJ_BIOMEMAP, + MGOBJ_HEATMAP, + MGOBJ_HUMIDMAP +}; + enum OreType { ORE_SCATTER, ORE_SHEET, @@ -136,9 +149,9 @@ enum OreType { class Ore { public: std::string ore_name; - std::string wherein_name; + std::vector wherein_names; content_t ore; - content_t wherein; // the node to be replaced + std::vector wherein; // the node to be replaced u32 clust_scarcity; // ore cluster has a 1-in-clust_scarcity chance of appearing at a node s16 clust_num_ores; // how many ore nodes are in a chunk s16 clust_size; // how large (in nodes) a chunk of ore is @@ -152,7 +165,6 @@ class Ore { Ore() { ore = CONTENT_IGNORE; - wherein = CONTENT_IGNORE; np = NULL; noise = NULL; } @@ -203,6 +215,8 @@ struct CutoffData { class Decoration { public: + INodeDefManager *ndef; + int mapseed; std::string place_on_name; content_t c_place_on; @@ -247,14 +261,18 @@ class DecoSimple : public Decoration { virtual std::string getName(); }; +#define MTSCHEM_FILE_SIGNATURE 0x4d54534d // 'MTSM' + class DecoSchematic : public Decoration { public: std::string filename; std::vector *node_names; std::vector c_nodes; + std::map replacements; u32 flags; + Rotation rotation; v3s16 size; MapNode *schematic; @@ -266,6 +284,9 @@ class DecoSchematic : public Decoration { virtual int getHeight(); virtual std::string getName(); + void blitToVManip(v3s16 p, ManualMapVoxelManipulator *vm, + Rotation rot, bool force_placement); + bool loadSchematicFile(); void saveSchematicFile(INodeDefManager *ndef);