2012-11-25 21:16:48 -05:00
|
|
|
/*
|
|
|
|
Minetest-c55
|
|
|
|
Copyright (C) 2010-2011 kwolekr, Ryan Kwolek <kwolekr2@cs.scranton.edu>
|
|
|
|
|
|
|
|
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 BIOME_HEADER
|
|
|
|
#define BIOME_HEADER
|
|
|
|
|
2012-12-18 13:23:16 -05:00
|
|
|
#include <string>
|
2012-11-25 21:16:48 -05:00
|
|
|
#include "nodedef.h"
|
|
|
|
#include "gamedef.h"
|
|
|
|
#include "mapnode.h"
|
|
|
|
#include "noise.h"
|
|
|
|
#include "mapgen.h"
|
|
|
|
|
2012-12-18 13:23:16 -05:00
|
|
|
|
|
|
|
enum BiomeTerrainType
|
|
|
|
{
|
|
|
|
BIOME_TERRAIN_NORMAL,
|
|
|
|
BIOME_TERRAIN_LIQUID,
|
|
|
|
BIOME_TERRAIN_NETHER,
|
|
|
|
BIOME_TERRAIN_AETHER,
|
|
|
|
BIOME_TERRAIN_FLAT
|
|
|
|
};
|
|
|
|
|
2012-11-25 21:16:48 -05:00
|
|
|
class Biome {
|
|
|
|
public:
|
|
|
|
MapNode n_top;
|
|
|
|
MapNode n_filler;
|
|
|
|
s16 ntopnodes;
|
2012-12-22 00:34:35 -05:00
|
|
|
s8 groupid;
|
|
|
|
s8 flags;
|
2012-11-25 21:16:48 -05:00
|
|
|
s16 height_min;
|
|
|
|
s16 height_max;
|
|
|
|
float heat_min;
|
|
|
|
float heat_max;
|
|
|
|
float humidity_min;
|
|
|
|
float humidity_max;
|
2012-12-18 13:23:16 -05:00
|
|
|
std::string name;
|
2012-11-25 21:16:48 -05:00
|
|
|
NoiseParams *np;
|
|
|
|
|
2013-01-18 14:12:19 -05:00
|
|
|
virtual void genColumn(Mapgen *mg, int x, int z, int y1, int y2);
|
2012-11-25 21:16:48 -05:00
|
|
|
virtual int getSurfaceHeight(float noise_terrain);
|
|
|
|
};
|
|
|
|
|
2012-12-18 13:23:16 -05:00
|
|
|
class BiomeLiquid : public Biome {
|
2013-01-18 14:12:19 -05:00
|
|
|
virtual void genColumn(Mapgen *mg, int x, int z, int y1, int y2);
|
2012-11-25 21:16:48 -05:00
|
|
|
};
|
|
|
|
|
|
|
|
class BiomeHell : public Biome {
|
2013-01-18 14:12:19 -05:00
|
|
|
virtual void genColumn(Mapgen *mg, int x, int z, int y1, int y2);
|
2012-11-25 21:16:48 -05:00
|
|
|
virtual int getSurfaceHeight(float noise_terrain);
|
|
|
|
};
|
|
|
|
|
2012-12-18 13:23:16 -05:00
|
|
|
class BiomeAether : public Biome {
|
2013-01-18 14:12:19 -05:00
|
|
|
virtual void genColumn(Mapgen *mg, int x, int z, int y1, int y2);
|
2012-12-18 13:23:16 -05:00
|
|
|
virtual int getSurfaceHeight(float noise_terrain);
|
|
|
|
};
|
|
|
|
|
2012-11-25 21:16:48 -05:00
|
|
|
class BiomeSuperflat : public Biome {
|
2013-01-18 14:12:19 -05:00
|
|
|
virtual void genColumn(Mapgen *mg, int x, int z, int y1, int y2);
|
2012-11-25 21:16:48 -05:00
|
|
|
virtual int getSurfaceHeight(float noise_terrain);
|
|
|
|
};
|
|
|
|
|
|
|
|
class BiomeDefManager {
|
|
|
|
public:
|
|
|
|
std::vector<float> bgroup_freqs;
|
|
|
|
std::vector<std::vector<Biome *> *> bgroups;
|
|
|
|
Biome *biome_default;
|
|
|
|
IGameDef *m_gamedef;
|
|
|
|
INodeDefManager *ndef;
|
|
|
|
|
|
|
|
BiomeDefManager(IGameDef *gamedef);
|
|
|
|
~BiomeDefManager();
|
|
|
|
|
2012-12-18 13:23:16 -05:00
|
|
|
Biome *createBiome(BiomeTerrainType btt);
|
2012-11-25 21:16:48 -05:00
|
|
|
Biome *getBiome(float bgfreq, float heat, float humidity);
|
|
|
|
|
2012-12-18 13:23:16 -05:00
|
|
|
void addBiomeGroup(float freq);
|
2012-12-22 00:34:35 -05:00
|
|
|
void addBiome(Biome *b);
|
2012-11-25 21:16:48 -05:00
|
|
|
void addDefaultBiomes();
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|