X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fbiome.h;h=aa83c4e0b25ff9ec22b6ed375d8b8d3bd601d418;hb=62ea342ad1b725ac44a787c60388cbc8a1c383c5;hp=265f1df442ec62412f49405e789bcabf51a0c2d9;hpb=bcc0ca93d463ec7bdf6ff1ef621f7777014c404a;p=dragonfireclient.git diff --git a/src/biome.h b/src/biome.h index 265f1df44..aa83c4e0b 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,64 @@ 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; + u8 id; + std::string name; + u32 flags; + + std::string nname_top; + std::string nname_filler; + std::string nname_water; + std::string nname_dust; + std::string nname_dust_water; + + 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_min; - float heat_max; - float humidity_min; - float humidity_max; - std::string name; - NoiseParams *np; - - 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); + float heat_point; + float humidity_point; }; -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); -}; - -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); + 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