Minor changes in Mapgens and HUD text pos
parent
5b5ed93bc3
commit
73affb7b0c
|
@ -360,6 +360,7 @@ void set_default_settings(Settings *settings)
|
||||||
settings->setDefault("mapgen_limit", "31000");
|
settings->setDefault("mapgen_limit", "31000");
|
||||||
settings->setDefault("chunksize", "5");
|
settings->setDefault("chunksize", "5");
|
||||||
settings->setDefault("mg_flags", "dungeons");
|
settings->setDefault("mg_flags", "dungeons");
|
||||||
|
settings->setDefault("mgflat_spflags", "nocaves");
|
||||||
settings->setDefault("fixed_map_seed", "");
|
settings->setDefault("fixed_map_seed", "");
|
||||||
settings->setDefault("max_block_generate_distance", "8");
|
settings->setDefault("max_block_generate_distance", "8");
|
||||||
settings->setDefault("projecting_dungeons", "false");
|
settings->setDefault("projecting_dungeons", "false");
|
||||||
|
|
|
@ -331,17 +331,17 @@ void Hud::drawLuaElements(const v3s16 &camera_offset)
|
||||||
if (e->pos.X == 0.5) {
|
if (e->pos.X == 0.5) {
|
||||||
v2s32 offset((e->align.X - 1.0) * (textsize.Width / 2),
|
v2s32 offset((e->align.X - 1.0) * (textsize.Width / 2),
|
||||||
#if defined(__ANDROID__)
|
#if defined(__ANDROID__)
|
||||||
(e->align.Y - 1.0) * (textsize.Height) * 4);
|
(e->align.Y - 1.0) * (textsize.Height) * 4);
|
||||||
#elif defined(__IOS__)
|
#elif defined(__IOS__)
|
||||||
(e->align.Y - 1.0) * (textsize.Height) * 3);
|
(e->align.Y - 1.0) * (textsize.Height) * 3 * g_settings->getFloat("hud_scaling"));
|
||||||
#else
|
#else
|
||||||
(e->align.Y - 1.0) * (textsize.Height / 2));
|
(e->align.Y - 1.0) * (textsize.Height / 2));
|
||||||
#endif
|
#endif
|
||||||
v2s32 offs(e->offset.X, e->offset.Y);
|
v2s32 offs(e->offset.X, e->offset.Y);
|
||||||
font->draw(text.c_str(), size + pos + offset + offs, color);
|
font->draw(text.c_str(), size + pos + offset + offs, color);
|
||||||
} else {
|
} else {
|
||||||
v2s32 offset((e->align.X - 1.0) * (textsize.Width / 2),
|
v2s32 offset((e->align.X - 1.0) * (textsize.Width / 2),
|
||||||
(e->align.Y - 1.0) * (textsize.Height / 2));
|
(e->align.Y - 1.0) * (textsize.Height / 2));
|
||||||
v2s32 offs(e->offset.X, e->offset.Y);
|
v2s32 offs(e->offset.X, e->offset.Y);
|
||||||
font->draw(text.c_str(), size + pos + offset + offs, color);
|
font->draw(text.c_str(), size + pos + offset + offs, color);
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,8 +28,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
#include "util/string.h"
|
#include "util/string.h"
|
||||||
#include "util/container.h"
|
#include "util/container.h"
|
||||||
|
|
||||||
#define MAPGEN_DEFAULT MAPGEN_V7
|
#define MAPGEN_DEFAULT MAPGEN_V7P
|
||||||
#define MAPGEN_DEFAULT_NAME "v7"
|
#define MAPGEN_DEFAULT_NAME "v7p"
|
||||||
|
|
||||||
/////////////////// Mapgen flags
|
/////////////////// Mapgen flags
|
||||||
#define MG_TREES 0x01 // Deprecated. Moved into mgv6 flags
|
#define MG_TREES 0x01 // Deprecated. Moved into mgv6 flags
|
||||||
|
|
|
@ -42,6 +42,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
FlagDesc flagdesc_mapgen_flat[] = {
|
FlagDesc flagdesc_mapgen_flat[] = {
|
||||||
{"lakes", MGFLAT_LAKES},
|
{"lakes", MGFLAT_LAKES},
|
||||||
{"hills", MGFLAT_HILLS},
|
{"hills", MGFLAT_HILLS},
|
||||||
|
{"caves", MGFLAT_CAVES},
|
||||||
{NULL, 0}
|
{NULL, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -68,6 +69,10 @@ MapgenFlat::MapgenFlat(int mapgenid, MapgenFlatParams *params, EmergeManager *em
|
||||||
// 3D noise
|
// 3D noise
|
||||||
MapgenBasic::np_cave1 = params->np_cave1;
|
MapgenBasic::np_cave1 = params->np_cave1;
|
||||||
MapgenBasic::np_cave2 = params->np_cave2;
|
MapgenBasic::np_cave2 = params->np_cave2;
|
||||||
|
|
||||||
|
bedrock_level = water_level - 64;
|
||||||
|
// Resolve additional nodes
|
||||||
|
c_bedrock = ndef->getId("mapgen_bedrock");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -83,7 +88,7 @@ MapgenFlat::~MapgenFlat()
|
||||||
MapgenFlatParams::MapgenFlatParams()
|
MapgenFlatParams::MapgenFlatParams()
|
||||||
{
|
{
|
||||||
spflags = 0;
|
spflags = 0;
|
||||||
ground_level = 8;
|
ground_level = 2;
|
||||||
large_cave_depth = -33;
|
large_cave_depth = -33;
|
||||||
cave_width = 0.09;
|
cave_width = 0.09;
|
||||||
lake_threshold = -0.45;
|
lake_threshold = -0.45;
|
||||||
|
@ -187,35 +192,40 @@ void MapgenFlat::makeChunk(BlockMakeData *data)
|
||||||
|
|
||||||
blockseed = getBlockSeed2(full_node_min, seed);
|
blockseed = getBlockSeed2(full_node_min, seed);
|
||||||
|
|
||||||
// Generate base terrain, mountains, and ridges with initial heightmaps
|
if (node_max.Y <= bedrock_level) {
|
||||||
s16 stone_surface_max_y = generateTerrain();
|
// Only generate bedrock
|
||||||
|
generateBedrock();
|
||||||
|
} else {
|
||||||
|
// Generate base and mountain terrain
|
||||||
|
s16 stone_surface_max_y = generateTerrain();
|
||||||
|
|
||||||
// Create heightmap
|
// Create heightmap
|
||||||
updateHeightmap(node_min, node_max);
|
updateHeightmap(node_min, node_max);
|
||||||
|
|
||||||
// Init biome generator, place biome-specific nodes, and build biomemap
|
// Init biome generator, place biome-specific nodes, and build biomemap
|
||||||
biomegen->calcBiomeNoise(node_min);
|
biomegen->calcBiomeNoise(node_min);
|
||||||
MgStoneType stone_type = generateBiomes();
|
MgStoneType stone_type = generateBiomes();
|
||||||
|
|
||||||
if (flags & MG_CAVES)
|
if (flags & MGFLAT_CAVES)
|
||||||
generateCaves(stone_surface_max_y, large_cave_depth);
|
generateCaves(stone_surface_max_y, large_cave_depth);
|
||||||
|
|
||||||
if (flags & MG_DUNGEONS)
|
if (flags & MG_DUNGEONS)
|
||||||
generateDungeons(stone_surface_max_y, stone_type);
|
generateDungeons(stone_surface_max_y, stone_type);
|
||||||
|
|
||||||
// Generate the registered decorations
|
// Generate the registered decorations
|
||||||
if (flags & MG_DECORATIONS)
|
if (flags & MG_DECORATIONS)
|
||||||
m_emerge->decomgr->placeAllDecos(this, blockseed, node_min, node_max);
|
m_emerge->decomgr->placeAllDecos(this, blockseed, node_min, node_max);
|
||||||
|
|
||||||
// Generate the registered ores
|
// Generate the registered ores
|
||||||
m_emerge->oremgr->placeAllOres(this, blockseed, node_min, node_max);
|
m_emerge->oremgr->placeAllOres(this, blockseed, node_min, node_max);
|
||||||
|
|
||||||
// Sprinkle some dust on top after everything else was generated
|
// Sprinkle some dust on top after everything else was generated
|
||||||
dustTopNodes();
|
dustTopNodes();
|
||||||
|
|
||||||
//printf("makeChunk: %dms\n", t.stop());
|
//printf("makeChunk: %dms\n", t.stop());
|
||||||
|
|
||||||
updateLiquid(&data->transforming_liquid, full_node_min, full_node_max);
|
updateLiquid(&data->transforming_liquid, full_node_min, full_node_max);
|
||||||
|
}
|
||||||
|
|
||||||
if (flags & MG_LIGHT)
|
if (flags & MG_LIGHT)
|
||||||
calcLighting(node_min - v3s16(0, 1, 0), node_max + v3s16(0, 1, 0),
|
calcLighting(node_min - v3s16(0, 1, 0), node_max + v3s16(0, 1, 0),
|
||||||
|
@ -227,11 +237,26 @@ void MapgenFlat::makeChunk(BlockMakeData *data)
|
||||||
this->generating = false;
|
this->generating = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MapgenFlat::generateBedrock()
|
||||||
|
{
|
||||||
|
MapNode n_bedrock(c_bedrock);
|
||||||
|
|
||||||
|
for (s16 z = node_min.Z; z <= node_max.Z; z++)
|
||||||
|
for (s16 y = node_min.Y - 1; y <= node_max.Y + 1; y++) {
|
||||||
|
u32 vi = vm->m_area.index(node_min.X, y, z);
|
||||||
|
|
||||||
|
for (s16 x = node_min.X; x <= node_max.X; x++, vi++) {
|
||||||
|
if (vm->m_data[vi].getContent() == CONTENT_IGNORE)
|
||||||
|
vm->m_data[vi] = n_bedrock;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
s16 MapgenFlat::generateTerrain()
|
s16 MapgenFlat::generateTerrain()
|
||||||
{
|
{
|
||||||
MapNode n_air(CONTENT_AIR);
|
MapNode n_air(CONTENT_AIR);
|
||||||
MapNode n_stone(c_stone);
|
MapNode n_stone(c_stone);
|
||||||
|
MapNode n_bedrock(c_bedrock);
|
||||||
MapNode n_water(c_water_source);
|
MapNode n_water(c_water_source);
|
||||||
|
|
||||||
v3s16 em = vm->m_area.getExtent();
|
v3s16 em = vm->m_area.getExtent();
|
||||||
|
@ -256,10 +281,14 @@ s16 MapgenFlat::generateTerrain()
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 vi = vm->m_area.index(x, node_min.Y - 1, z);
|
u32 vi = vm->m_area.index(x, node_min.Y - 1, z);
|
||||||
|
|
||||||
for (s16 y = node_min.Y - 1; y <= node_max.Y + 1; y++) {
|
for (s16 y = node_min.Y - 1; y <= node_max.Y + 1; y++) {
|
||||||
if (vm->m_data[vi].getContent() == CONTENT_IGNORE) {
|
if (vm->m_data[vi].getContent() == CONTENT_IGNORE) {
|
||||||
if (y <= stone_level) {
|
if (y <= stone_level) {
|
||||||
vm->m_data[vi] = n_stone;
|
if (y <= bedrock_level)
|
||||||
|
vm->m_data[vi] = n_bedrock; // Bedrock
|
||||||
|
else
|
||||||
|
vm->m_data[vi] = n_stone; // Base and mountain terrain
|
||||||
if (y > stone_surface_max_y)
|
if (y > stone_surface_max_y)
|
||||||
stone_surface_max_y = y;
|
stone_surface_max_y = y;
|
||||||
} else if (y <= water_level) {
|
} else if (y <= water_level) {
|
||||||
|
|
|
@ -26,6 +26,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
/////// Mapgen Flat flags
|
/////// Mapgen Flat flags
|
||||||
#define MGFLAT_LAKES 0x01
|
#define MGFLAT_LAKES 0x01
|
||||||
#define MGFLAT_HILLS 0x02
|
#define MGFLAT_HILLS 0x02
|
||||||
|
#define MGFLAT_CAVES 0x04
|
||||||
|
|
||||||
class BiomeManager;
|
class BiomeManager;
|
||||||
|
|
||||||
|
@ -63,6 +64,7 @@ public:
|
||||||
|
|
||||||
virtual void makeChunk(BlockMakeData *data);
|
virtual void makeChunk(BlockMakeData *data);
|
||||||
int getSpawnLevelAtPoint(v2s16 p);
|
int getSpawnLevelAtPoint(v2s16 p);
|
||||||
|
void generateBedrock();
|
||||||
s16 generateTerrain();
|
s16 generateTerrain();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -73,6 +75,9 @@ private:
|
||||||
float hill_threshold;
|
float hill_threshold;
|
||||||
float hill_steepness;
|
float hill_steepness;
|
||||||
Noise *noise_terrain;
|
Noise *noise_terrain;
|
||||||
|
|
||||||
|
s16 bedrock_level;
|
||||||
|
content_t c_bedrock;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -168,7 +168,7 @@ int MapgenV7P::getSpawnLevelAtPoint(v2s16 p)
|
||||||
if (spflags & MGV7P_MOUNTAINS)
|
if (spflags & MGV7P_MOUNTAINS)
|
||||||
y = MYMAX(mountainLevelAtPoint(p.X, p.Y), y);
|
y = MYMAX(mountainLevelAtPoint(p.X, p.Y), y);
|
||||||
|
|
||||||
if (y < water_level || y > water_level + 16)
|
if (y <= water_level || y > water_level + 16)
|
||||||
return MAX_MAP_GENERATION_LIMIT; // Unsuitable spawn point
|
return MAX_MAP_GENERATION_LIMIT; // Unsuitable spawn point
|
||||||
else
|
else
|
||||||
return y + 2; // +2 because surface is at y and due to biome 'dust'
|
return y + 2; // +2 because surface is at y and due to biome 'dust'
|
||||||
|
|
Loading…
Reference in New Issue