X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fbiome.h;h=17703db5a13c476167256be58ae3a9b4adc97765;hb=c824abd7b2e199d9c7e3dcc2839a28275f4120f2;hp=265f1df442ec62412f49405e789bcabf51a0c2d9;hpb=f9a8efb99235c86eb61b6deb2bc034d5618e45ea;p=oweals%2Fminetest.git diff --git a/src/biome.h b/src/biome.h index 265f1df44..17703db5a 100644 --- a/src/biome.h +++ b/src/biome.h @@ -1,6 +1,6 @@ /* -Minetest-c55 -Copyright (C) 2010-2011 kwolekr, Ryan Kwolek +Minetest +Copyright (C) 2010-2013 kwolekr, Ryan Kwolek 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 bgroup_freqs; - std::vector *> bgroups; - Biome *biome_default; - IGameDef *m_gamedef; - INodeDefManager *ndef; + std::vector 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