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/mg_biome.h | 92 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 src/mg_biome.h (limited to 'src/mg_biome.h') diff --git a/src/mg_biome.h b/src/mg_biome.h new file mode 100644 index 000000000..3724652bd --- /dev/null +++ b/src/mg_biome.h @@ -0,0 +1,92 @@ +/* +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 +the Free Software Foundation; either version 2.1 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +*/ + +#ifndef MG_BIOME_HEADER +#define MG_BIOME_HEADER + +#include +#include "nodedef.h" +#include "gamedef.h" +#include "mapnode.h" +#include "noise.h" +#include "mapgen.h" + +enum BiomeTerrainType +{ + BIOME_TERRAIN_NORMAL, + BIOME_TERRAIN_LIQUID, + BIOME_TERRAIN_NETHER, + BIOME_TERRAIN_AETHER, + BIOME_TERRAIN_FLAT +}; + +extern NoiseParams nparams_biome_def_heat; +extern NoiseParams nparams_biome_def_humidity; + +class Biome { +public: + u8 id; + std::string name; + u32 flags; + + content_t c_top; + content_t c_filler; + content_t c_water; + content_t c_dust; + content_t c_dust_water; + + s16 depth_top; + s16 depth_filler; + + s16 height_min; + s16 height_max; + float heat_point; + float humidity_point; +}; + +struct BiomeNoiseInput { + v2s16 mapsize; + float *heat_map; + float *humidity_map; + s16 *height_map; +}; + +class BiomeDefManager { +public: + std::vector biomes; + + bool biome_registration_finished; + NoiseParams *np_heat; + NoiseParams *np_humidity; + + BiomeDefManager(NodeResolver *resolver); + ~BiomeDefManager(); + + Biome *createBiome(BiomeTerrainType btt); + void calcBiomes(BiomeNoiseInput *input, u8 *biomeid_map); + Biome *getBiome(float heat, float humidity, s16 y); + + bool addBiome(Biome *b); + u8 getBiomeIdByName(const char *name); + + s16 calcBlockHeat(v3s16 p, u64 seed, float timeofday, float totaltime); + s16 calcBlockHumidity(v3s16 p, u64 seed, float timeofday, float totaltime); +}; + +#endif -- cgit v1.2.3