mirror of
https://github.com/bdnugget/freeminer.git
synced 2026-11-07 06:57:27 +00:00
mapgen presets
This commit is contained in:
1 parent
59fd60e430
commit
0ca69b3a5d
9 files changed
+89
-79
No files matched your search
@@ -19,7 +19,7 @@ if [ -z "$NO_DEPS" ]; then
|
||||
SUDO=${SUDO=$(which sudo ||:)}
|
||||
if [ "$DIST" = "Debian" ] || [ "$DIST" = "Ubuntu" ]; then
|
||||
${SUDO} apt update
|
||||
${SUDO} env DEBIAN_FRONTEND=noninteractive apt install -y git subversion build-essential cmake ninja-build ccache libsdl2-dev libbz2-dev libzstd-dev libjpeg-dev libfreetype6-dev libxxf86vm-dev libxi-dev libsqlite3-dev libhiredis-dev libvorbis-dev libopenal-dev libcurl4-openssl-dev libssl-dev libluajit-5.1-dev libgettextpo0 libmsgpack-dev libboost-system-dev clang lld llvm libc++-dev libc++abi-dev
|
||||
${SUDO} env DEBIAN_FRONTEND=noninteractive apt install -y git subversion build-essential cmake ninja-build ccache libsdl2-dev libbz2-dev libzstd-dev libjpeg-dev libfreetype6-dev libxxf86vm-dev libxi-dev libsqlite3-dev libhiredis-dev libvorbis-dev libopenal-dev libcurl4-openssl-dev libssl-dev libluajit-5.1-dev libgettextpo0 libmsgpack-dev libboost-system-dev clang lld llvm libc++-dev libc++abi-dev libosmium2-dev
|
||||
for PACKAGE in libpng12-dev libpng-dev libgles1-mesa-dev libgles2-mesa-dev libgl1-mesa-dev ; do
|
||||
${SUDO} apt install -y $PACKAGE ||:
|
||||
done
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
-- Copyright (C) 2014 sapier
|
||||
-- SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
|
||||
dofile(core.get_mainmenu_path()..DIR_DELIM.."dlg_create_world_fm.lua")
|
||||
|
||||
local function table_to_flags(ftable)
|
||||
-- Convert e.g. { jungles = true, caves = false } to "jungles,nocaves"
|
||||
local str = {}
|
||||
@@ -35,6 +37,10 @@ local flag_checkboxes = {
|
||||
{ "floatlands", fgettext("Floatlands (experimental)"),
|
||||
fgettext("Floating landmasses in the sky") },
|
||||
},
|
||||
earth = {
|
||||
cb_caverns,
|
||||
--{ "floatlands", fgettext("Floatlands (experimental)"), fgettext("Floating landmasses in the sky") },
|
||||
},
|
||||
|
||||
v5 = {
|
||||
cb_caverns,
|
||||
@@ -230,6 +236,22 @@ local function create_world_formspec(dialogdata)
|
||||
y = y + 0.5
|
||||
end
|
||||
|
||||
-- fm:
|
||||
y = y + 0.2
|
||||
form = form .. "label[0,"..(y+0.1)..";" .. fgettext("Preset") .. "]"
|
||||
y = y + 0.5
|
||||
if mg_preset[mapgen] then
|
||||
form = form .. "dropdown[0,"..y..";6.3;mg_preset;"
|
||||
|
||||
for preset, opt in pairs(mg_preset[mapgen]) do
|
||||
form = form .. preset .. ","
|
||||
for opt, val in pairs(mg_preset[mapgen][preset]) do
|
||||
end
|
||||
end
|
||||
end
|
||||
form = form .. ";" .. "]"
|
||||
-- ===
|
||||
|
||||
if mapgen ~= "v6" then
|
||||
-- No special treatment
|
||||
return form, y
|
||||
@@ -408,6 +430,15 @@ local function create_world_buttonhandler(this, fields)
|
||||
mgvalleys_spflags = table_to_flags(this.data.flags.valleys),
|
||||
mgflat_spflags = table_to_flags(this.data.flags.flat),
|
||||
}
|
||||
|
||||
-- fm:
|
||||
if fields["mg_preset"] then
|
||||
for opt, val in pairs(mg_preset[settings.mg_name][fields["mg_preset"]]) do
|
||||
settings[opt] = val;
|
||||
end
|
||||
end
|
||||
-- ===
|
||||
|
||||
message = core.create_world(worldname, game.id, settings)
|
||||
end
|
||||
|
||||
@@ -483,8 +514,11 @@ function create_create_world_dlg()
|
||||
mg = core.settings:get("mg_name"),
|
||||
flags = {
|
||||
main = core.settings:get_flags("mg_flags"),
|
||||
|
||||
indev = core.settings:get_flags("mgindev_spflags"),
|
||||
math = core.settings:get_flags("mgmath_spflags"),
|
||||
earth = core.settings:get_flags("mgearth_spflags"),
|
||||
|
||||
v5 = core.settings:get_flags("mgv5_spflags"),
|
||||
v6 = core.settings:get_flags("mgv6_spflags"),
|
||||
v7 = core.settings:get_flags("mgv7_spflags"),
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
|
||||
mg_preset = {
|
||||
math = {
|
||||
xenodreambuie1 = {
|
||||
mg_math = '{"generator":"xenodreambuie", "N":12, "scale":0.003, "power":2, "julia_mode":1, "julia_a":-1.13}',
|
||||
mg_float_islands = 0,
|
||||
},
|
||||
aexion = {
|
||||
mg_math = '{"generator" : "aexion", "N" : 11,"cadd" : -1.0002,"size" : 30000 }',
|
||||
water_level = -30000,
|
||||
mg_float_islands = 0,
|
||||
static_spawnpoint = '0, 2, 0',
|
||||
},
|
||||
hypercomplex = {
|
||||
mg_math = '{"generator":"hypercomplex", "scale":0.0001, "N":12, "interior_mode": 1, "center":{"x":20000, "y":1, "z":0}}',
|
||||
mg_float_islands = 0,
|
||||
static_spawnpoint = '0, 2, 0',
|
||||
},
|
||||
xenodreambuie2 = {
|
||||
mg_math = '{"generator":"xenodreambuie", "N":20, "scale":0.0000001, "power":2, "julia_mode":1, "julia_a": 0.999, "julia_b": 0.1, "julia_c": 1.01, "center":{"x":6021817,"z":-11938439,"y":-3601800}}',
|
||||
mg_float_islands = 0,
|
||||
},
|
||||
rooms = {
|
||||
mg_math = '{"generator":"rooms"}',
|
||||
light_ambient = '1'
|
||||
}
|
||||
},
|
||||
earth = {
|
||||
hong_kong = { mg_earth = '{"center": {"z": 22.28422, "x": 114.15996, "y":0} }', },
|
||||
new_york = { mg_earth = '{"center": {"z": 40.781137, "x": -73.966487, "y":0} }', },
|
||||
everest = { mg_earth = '{"center": {"z": 27.9878279, "x": 86.923833, "y":0} }', },
|
||||
big_canyon = { mg_earth = '{"center": {"z": 34.2139435, "x": -111.1582085, "y":0} }', },
|
||||
dolomites = { mg_earth = '{"center": {"z": 46.4084595, "x": 11.8393018 } }', },
|
||||
matterhorn = { mg_earth = '{"center": {"z": 45.976400, "x": 7.658600 } }', },
|
||||
dubai = { mg_earth = '{"center": {"z": 25.19715, "x": 55.27288 } }', },
|
||||
}
|
||||
}
|
||||
@@ -1440,7 +1440,7 @@ fixed_map_seed (Fixed map seed) string
|
||||
# Creating a world in the main menu will override this.
|
||||
# Current mapgens in a highly unstable state:
|
||||
# - The optional floatlands of v7 (disabled by default).
|
||||
mg_name (Mapgen name) enum v7 indev,math,v7,valleys,carpathian,v5,flat,fractal,singlenode,v6
|
||||
mg_name (Mapgen name) enum earth earth,indev,math,v7,valleys,carpathian,v5,flat,fractal,singlenode,v6
|
||||
|
||||
# Water surface level of the world.
|
||||
water_level (Water level) int 1 -31000 31000
|
||||
|
||||
@@ -110,7 +110,7 @@ if(ENABLE_OSMIUM AND (OSMIUM_INCLUDE_DIR OR EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/e
|
||||
set(BUILD_EXAMPLES 0 CACHE INTERNAL "")
|
||||
set(BUILD_BENCHMARKS 0 CACHE INTERNAL "")
|
||||
|
||||
if (NOT OSMIUM_INCLUDE_DIR)
|
||||
if (NOT OSMIUM_INCLUDE_DIR AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/external/libosmium/CMakeLists.txt)
|
||||
add_subdirectory(external/libosmium)
|
||||
set(OSMIUM_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/libosmium/include)
|
||||
include_directories(BEFORE SYSTEM ${OSMIUM_INCLUDE_DIR})
|
||||
@@ -168,6 +168,5 @@ set(FMcommon_SRCS ${FMcommon_SRCS}
|
||||
fm_abm.cpp
|
||||
fm_clientiface.cpp
|
||||
fm_serverenvironment.cpp
|
||||
${DEBUG_SRCS}
|
||||
)
|
||||
# == end freeminer:
|
||||
+4
-2
@@ -1,5 +1,8 @@
|
||||
project(freeminer)
|
||||
|
||||
include(freeminer_src)
|
||||
|
||||
|
||||
INCLUDE(CheckTypeSize)
|
||||
INCLUDE(CheckIncludeFiles)
|
||||
INCLUDE(CheckLibraryExists)
|
||||
@@ -445,8 +448,6 @@ add_subdirectory(script)
|
||||
add_subdirectory(util)
|
||||
add_subdirectory(server)
|
||||
|
||||
include(freeminer_src)
|
||||
|
||||
# Source files that are identical between server & client builds.
|
||||
# This means they don't use or include anything that depends on the
|
||||
# CHECK_CLIENT_BUILD() macro. If you wrongly add something here there will be
|
||||
@@ -493,6 +494,7 @@ file(GLOB common_HDRS "${CMAKE_CURRENT_SOURCE_DIR}/*.h")
|
||||
# /!\ Consider carefully before adding files here /!\
|
||||
set(common_SRCS
|
||||
${FMcommon_SRCS}
|
||||
${DEBUG_SRCS}
|
||||
${contrib_SRCS}
|
||||
|
||||
${common_HDRS}
|
||||
|
||||
@@ -84,6 +84,12 @@ struct MapgenDesc {
|
||||
// Of the remaining, v5 last due to age, v7 first due to being the default.
|
||||
// The order of 'enum MapgenType' in mapgen.h must match this order.
|
||||
static MapgenDesc g_reg_mapgens[] = {
|
||||
// fm:
|
||||
{"earth", true},
|
||||
{"math", true},
|
||||
{"indev", true},
|
||||
// ===
|
||||
|
||||
{"v7", true},
|
||||
{"valleys", true},
|
||||
{"carpathian", true},
|
||||
@@ -92,10 +98,6 @@ static MapgenDesc g_reg_mapgens[] = {
|
||||
{"fractal", true},
|
||||
{"singlenode", true},
|
||||
{"v6", true},
|
||||
|
||||
{"indev", true},
|
||||
{"math", true},
|
||||
{"earth", true},
|
||||
};
|
||||
|
||||
static_assert(
|
||||
|
||||
+5
-4
@@ -102,6 +102,11 @@ private:
|
||||
|
||||
// Order must match the order of 'static MapgenDesc g_reg_mapgens[]' in mapgen.cpp
|
||||
enum MapgenType {
|
||||
MAPGEN_EARTH,
|
||||
MAPGEN_INDEV,
|
||||
MAPGEN_MATH,
|
||||
|
||||
|
||||
MAPGEN_V7,
|
||||
MAPGEN_VALLEYS,
|
||||
MAPGEN_CARPATHIAN,
|
||||
@@ -111,10 +116,6 @@ enum MapgenType {
|
||||
MAPGEN_SINGLENODE,
|
||||
MAPGEN_V6,
|
||||
|
||||
MAPGEN_INDEV,
|
||||
MAPGEN_MATH,
|
||||
MAPGEN_EARTH,
|
||||
|
||||
MAPGEN_INVALID,
|
||||
};
|
||||
|
||||
|
||||
@@ -280,71 +280,6 @@ int MapgenEarth::getGroundLevelAtPoint(v2pos_t p)
|
||||
return get_height(p.X, p.Y); // + MGV6_AVERAGE_MUD_AMOUNT;
|
||||
}
|
||||
|
||||
#if 0
|
||||
// https://www.roguebasin.com/index.php?title=Bresenham%27s_Line_Algorithm
|
||||
void MapgenEarth::bresenham(pos_t x1, pos_t y1, const pos_t x2, const pos_t y2, pos_t y,
|
||||
pos_t h, const MapNode &n)
|
||||
{
|
||||
pos_t delta_x(x2 - x1);
|
||||
// if x1 == x2, then it does not matter what we set here
|
||||
const int8_t ix((delta_x > 0) - (delta_x < 0));
|
||||
delta_x = std::abs(delta_x) << 1;
|
||||
|
||||
pos_t delta_y(y2 - y1);
|
||||
// if y1 == y2, then it does not matter what we set here
|
||||
const int8_t iy((delta_y > 0) - (delta_y < 0));
|
||||
delta_y = std::abs(delta_y) << 1;
|
||||
|
||||
for (pos_t yi = y; yi <= y + h; ++yi) {
|
||||
if (vm->exists({x1, yi, y1})) {
|
||||
vm->setNode({x1, yi, y1}, n);
|
||||
}
|
||||
}
|
||||
|
||||
if (delta_x >= delta_y) {
|
||||
// error may go below zero
|
||||
pos_t error(delta_y - (delta_x >> 1));
|
||||
|
||||
while (x1 != x2) {
|
||||
// reduce error, while taking into account the corner case of error == 0
|
||||
if ((error > 0) || (!error && (ix > 0))) {
|
||||
error -= delta_x;
|
||||
y1 += iy;
|
||||
}
|
||||
|
||||
error += delta_y;
|
||||
x1 += ix;
|
||||
|
||||
for (pos_t yi = y; yi <= y + h; ++yi) {
|
||||
if (vm->exists({x1, yi, y1})) {
|
||||
vm->setNode({x1, yi, y1}, n);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// error may go below zero
|
||||
int error(delta_x - (delta_y >> 1));
|
||||
|
||||
while (y1 != y2) {
|
||||
// reduce error, while taking into account the corner case of error == 0
|
||||
if ((error > 0) || (!error && (iy > 0))) {
|
||||
error -= delta_y;
|
||||
x1 += ix;
|
||||
}
|
||||
|
||||
error += delta_x;
|
||||
y1 += iy;
|
||||
|
||||
for (pos_t yi = y; yi <= y + h; ++yi) {
|
||||
if (vm->exists({x1, yi, y1})) {
|
||||
vm->setNode({x1, yi, y1}, n);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
int MapgenEarth::generateTerrain()
|
||||
{
|
||||
MapNode n_ice(c_ice);
|
||||
|
||||
Reference in new issue
Block a user