summaryrefslogtreecommitdiff
path: root/src/script/lua_api/l_mapgen.cpp
diff options
context:
space:
mode:
authorparamat <paramat@users.noreply.github.com>2018-02-23 13:42:48 +0000
committerparamat <mat.gregory@virginmedia.com>2018-02-27 19:39:05 +0000
commitc610643c4ca1d1c32ca3e400b5cb055f25401107 (patch)
tree73e1efd9fa3ba3c8269262d221a760e25a2b91e1 /src/script/lua_api/l_mapgen.cpp
parent6c9df2ffa7ee81a05b28fdd6123a926abd284c72 (diff)
downloadminetest-c610643c4ca1d1c32ca3e400b5cb055f25401107.tar.gz
minetest-c610643c4ca1d1c32ca3e400b5cb055f25401107.tar.bz2
minetest-c610643c4ca1d1c32ca3e400b5cb055f25401107.zip
Place schematic (on vmanip): Enable use of 'place center' flags
For 'place schematic' and 'place schematic on vmanip' APIs. Fix 'place center' code to properly centre schematics. Fix some comments.
Diffstat (limited to 'src/script/lua_api/l_mapgen.cpp')
-rw-r--r--src/script/lua_api/l_mapgen.cpp19
1 files changed, 16 insertions, 3 deletions
diff --git a/src/script/lua_api/l_mapgen.cpp b/src/script/lua_api/l_mapgen.cpp
index 775f4a76d..ccbe9a4b0 100644
--- a/src/script/lua_api/l_mapgen.cpp
+++ b/src/script/lua_api/l_mapgen.cpp
@@ -1529,7 +1529,8 @@ int ModApiMapgen::l_create_schematic(lua_State *L)
}
-// place_schematic(p, schematic, rotation, replacement)
+// place_schematic(p, schematic, rotation,
+// replacements, force_placement, flagstring)
int ModApiMapgen::l_place_schematic(lua_State *L)
{
MAP_LOCK_REQUIRED;
@@ -1565,12 +1566,19 @@ int ModApiMapgen::l_place_schematic(lua_State *L)
return 0;
}
- schem->placeOnMap(map, p, 0, (Rotation)rot, force_placement);
+ //// Read flags
+ u32 flags = 0;
+ read_flags(L, 6, flagdesc_deco, &flags, NULL);
+
+ schem->placeOnMap(map, p, flags, (Rotation)rot, force_placement);
lua_pushboolean(L, true);
return 1;
}
+
+// place_schematic_on_vmanip(vm, p, schematic, rotation,
+// replacements, force_placement, flagstring)
int ModApiMapgen::l_place_schematic_on_vmanip(lua_State *L)
{
NO_MAP_LOCK_REQUIRED;
@@ -1606,13 +1614,18 @@ int ModApiMapgen::l_place_schematic_on_vmanip(lua_State *L)
return 0;
}
+ //// Read flags
+ u32 flags = 0;
+ read_flags(L, 7, flagdesc_deco, &flags, NULL);
+
bool schematic_did_fit = schem->placeOnVManip(
- vm, p, 0, (Rotation)rot, force_placement);
+ vm, p, flags, (Rotation)rot, force_placement);
lua_pushboolean(L, schematic_did_fit);
return 1;
}
+
// serialize_schematic(schematic, format, options={...})
int ModApiMapgen::l_serialize_schematic(lua_State *L)
{