diff options
Diffstat (limited to 'src/biome.h')
-rw-r--r-- | src/biome.h | 75 |
1 files changed, 33 insertions, 42 deletions
diff --git a/src/biome.h b/src/biome.h index c30af46ad..17703db5a 100644 --- a/src/biome.h +++ b/src/biome.h @@ -1,6 +1,6 @@ /* Minetest -Copyright (C) 2010-2013 kwolekr, Ryan Kwolek <kwolekr2@cs.scranton.edu> +Copyright (C) 2010-2013 kwolekr, Ryan Kwolek <kwolekr@minetest.net> This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by @@ -27,7 +27,6 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "noise.h" #include "mapgen.h" - enum BiomeTerrainType { BIOME_TERRAIN_NORMAL, @@ -37,62 +36,54 @@ enum BiomeTerrainType BIOME_TERRAIN_FLAT }; +extern NoiseParams nparams_biome_def_heat; +extern NoiseParams nparams_biome_def_humidity; + class Biome { public: - MapNode n_top; - MapNode n_filler; - s16 ntopnodes; - s8 groupid; - s8 flags; - s16 height_min; - s16 height_max; - float heat_min; - float heat_max; - float humidity_min; - float humidity_max; + u8 id; std::string name; - NoiseParams *np; + u32 flags; + + std::string top_nodename; + std::string filler_nodename; - virtual void genColumn(Mapgen *mg, int x, int z, int y1, int y2); - virtual int getSurfaceHeight(float noise_terrain); -}; - -class BiomeLiquid : public Biome { - virtual void genColumn(Mapgen *mg, int x, int z, int y1, int y2); -}; + content_t c_top; + s16 top_depth; -class BiomeHell : public Biome { - virtual void genColumn(Mapgen *mg, int x, int z, int y1, int y2); - virtual int getSurfaceHeight(float noise_terrain); -}; - -class BiomeAether : public Biome { - virtual void genColumn(Mapgen *mg, int x, int z, int y1, int y2); - virtual int getSurfaceHeight(float noise_terrain); + content_t c_filler; + s16 filler_height; + + s16 height_min; + s16 height_max; + float heat_point; + float humidity_point; }; -class BiomeSuperflat : public Biome { - virtual void genColumn(Mapgen *mg, int x, int z, int y1, int y2); - virtual int getSurfaceHeight(float noise_terrain); +struct BiomeNoiseInput { + v2s16 mapsize; + float *heat_map; + float *humidity_map; + s16 *height_map; }; class BiomeDefManager { public: - std::vector<float> bgroup_freqs; - std::vector<std::vector<Biome *> *> bgroups; - Biome *biome_default; - IGameDef *m_gamedef; - INodeDefManager *ndef; + std::vector<Biome *> biomes; - BiomeDefManager(IGameDef *gamedef); - ~BiomeDefManager(); + bool biome_registration_finished; + NoiseParams *np_heat; + NoiseParams *np_humidity; + BiomeDefManager(); + ~BiomeDefManager(); + Biome *createBiome(BiomeTerrainType btt); - Biome *getBiome(float bgfreq, float heat, float humidity); + void calcBiomes(BiomeNoiseInput *input, u8 *biomeid_map); + Biome *getBiome(float heat, float humidity, s16 y); - void addBiomeGroup(float freq); void addBiome(Biome *b); - void addDefaultBiomes(); + void resolveNodeNames(INodeDefManager *ndef); }; #endif |