From 9e811a92e7846b958e4bc84aeb30bad8b51e8e1d Mon Sep 17 00:00:00 2001 From: kwolekr Date: Sat, 1 Nov 2014 13:16:23 -0400 Subject: Split up mapgen.cpp --- src/mapgen.h | 185 ----------------------------------------------------------- 1 file changed, 185 deletions(-) (limited to 'src/mapgen.h') diff --git a/src/mapgen.h b/src/mapgen.h index b6efe8200..e29616342 100644 --- a/src/mapgen.h +++ b/src/mapgen.h @@ -37,30 +37,10 @@ with this program; if not, write to the Free Software Foundation, Inc., #define MG_FLAT 0x08 #define MG_LIGHT 0x10 -/////////////////// Ore generation flags -// Use absolute value of height to determine ore placement -#define OREFLAG_ABSHEIGHT 0x01 -// Use 3d noise to get density of ore placement, instead of just the position -#define OREFLAG_DENSITY 0x02 // not yet implemented -// For claylike ore types, place ore if the number of surrounding -// nodes isn't the specified node -#define OREFLAG_NODEISNT 0x04 // not yet implemented - -/////////////////// Decoration flags -#define DECO_PLACE_CENTER_X 1 -#define DECO_PLACE_CENTER_Y 2 -#define DECO_PLACE_CENTER_Z 4 -#define DECO_SCHEM_CIDS_UPDATED 8 - -#define ORE_RANGE_ACTUAL 1 -#define ORE_RANGE_MIRROR 2 - #define NUM_GEN_NOTIFY 6 extern FlagDesc flagdesc_mapgen[]; -extern FlagDesc flagdesc_ore[]; -extern FlagDesc flagdesc_deco_schematic[]; extern FlagDesc flagdesc_gennotify[]; class BiomeDefManager; @@ -92,13 +72,6 @@ enum GenNotify { GENNOTIFY_LARGECAVE_END }; -enum OreType { - ORE_SCATTER, - ORE_SHEET, - ORE_CLAYLIKE -}; - - struct MapgenSpecificParams { virtual void readParams(Settings *settings) = 0; virtual void writeParams(Settings *settings) = 0; @@ -163,163 +136,5 @@ struct MapgenFactory { virtual ~MapgenFactory() {} }; -class Ore { -public: - content_t c_ore; // the node to place - std::vector c_wherein; // the nodes to be placed in - 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 - s16 height_min; - s16 height_max; - u8 ore_param2; // to set node-specific attributes - u32 flags; // attributes for this ore - float nthresh; // threshhold for noise at which an ore is placed - NoiseParams *np; // noise for distribution of clusters (NULL for uniform scattering) - Noise *noise; - - Ore() { - c_ore = CONTENT_IGNORE; - np = NULL; - noise = NULL; - } - - virtual ~Ore(); - - void placeOre(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax); - virtual void generate(ManualMapVoxelManipulator *vm, int seed, - u32 blockseed, v3s16 nmin, v3s16 nmax) = 0; -}; - -class OreScatter : public Ore { - ~OreScatter() {} - virtual void generate(ManualMapVoxelManipulator *vm, int seed, - u32 blockseed, v3s16 nmin, v3s16 nmax); -}; - -class OreSheet : public Ore { - ~OreSheet() {} - virtual void generate(ManualMapVoxelManipulator *vm, int seed, - u32 blockseed, v3s16 nmin, v3s16 nmax); -}; - -Ore *createOre(OreType type); - - -enum DecorationType { - DECO_SIMPLE, - DECO_SCHEMATIC, - DECO_LSYSTEM -}; - -#if 0 -struct CutoffData { - VoxelArea a; - Decoration *deco; - //v3s16 p; - //v3s16 size; - //s16 height; - - CutoffData(s16 x, s16 y, s16 z, s16 h) { - p = v3s16(x, y, z); - height = h; - } -}; -#endif - -class Decoration { -public: - INodeDefManager *ndef; - - int mapseed; - std::vector c_place_on; - s16 sidelen; - float fill_ratio; - NoiseParams *np; - - std::set biomes; - //std::list cutoffs; - //JMutex cutoff_mutex; - - Decoration(); - virtual ~Decoration(); - - void placeDeco(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax); - void placeCutoffs(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax); - - virtual void generate(Mapgen *mg, PseudoRandom *pr, s16 max_y, v3s16 p) = 0; - virtual int getHeight() = 0; - virtual std::string getName() = 0; -}; - -class DecoSimple : public Decoration { -public: - std::vector c_decos; - std::vector c_spawnby; - s16 deco_height; - s16 deco_height_max; - s16 nspawnby; - - ~DecoSimple() {} - - bool canPlaceDecoration(ManualMapVoxelManipulator *vm, v3s16 p); - virtual void generate(Mapgen *mg, PseudoRandom *pr, s16 max_y, v3s16 p); - virtual int getHeight(); - virtual std::string getName(); -}; - -#define MTSCHEM_FILE_SIGNATURE 0x4d54534d // 'MTSM' -#define MTSCHEM_FILE_VER_HIGHEST_READ 3 -#define MTSCHEM_FILE_VER_HIGHEST_WRITE 3 - -#define MTSCHEM_PROB_NEVER 0x00 -#define MTSCHEM_PROB_ALWAYS 0xFF - -class DecoSchematic : public Decoration { -public: - std::string filename; - - std::vector c_nodes; - - u32 flags; - Rotation rotation; - v3s16 size; - MapNode *schematic; - u8 *slice_probs; - - DecoSchematic(); - ~DecoSchematic(); - - void updateContentIds(); - virtual void generate(Mapgen *mg, PseudoRandom *pr, s16 max_y, v3s16 p); - virtual int getHeight(); - virtual std::string getName(); - - void blitToVManip(v3s16 p, ManualMapVoxelManipulator *vm, - Rotation rot, bool force_placement); - - bool loadSchematicFile(NodeResolver *resolver, - std::map &replace_names); - void saveSchematicFile(INodeDefManager *ndef); - - bool getSchematicFromMap(Map *map, v3s16 p1, v3s16 p2); - void placeStructure(Map *map, v3s16 p, bool force_placement); - void applyProbabilities(v3s16 p0, - std::vector > *plist, - std::vector > *splist); -}; - -void build_nnlist_and_update_ids(MapNode *nodes, u32 nodecount, - std::vector *usednodes); - -/* -class DecoLSystem : public Decoration { -public: - virtual void generate(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax); -}; -*/ - -Decoration *createDecoration(DecorationType type); - #endif -- cgit v1.2.3