Fix itemdef drop on NULL texture
[oweals/minetest.git] / src / biome.h
index 265f1df442ec62412f49405e789bcabf51a0c2d9..17703db5a13c476167256be58ae3a9b4adc97765 100644 (file)
@@ -1,6 +1,6 @@
 /*
-Minetest-c55
-Copyright (C) 2010-2011 kwolekr, Ryan Kwolek <kwolekr2@cs.scranton.edu>
+Minetest
+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