Move map item functions into a separate api object

This commit is contained in:
Hugues Ross 2020-06-10 19:45:13 -04:00
parent e53bd8af41
commit ad9c5e77b0
3 changed files with 17 additions and 10 deletions

View File

@ -56,11 +56,12 @@ local scanner = loadfile(modpath .. "/scanner.lua") (map_data, chunk);
local maps = loadfile(modpath .. "/map_api.lua") (map_data, chunk, scanner); local maps = loadfile(modpath .. "/map_api.lua") (map_data, chunk, scanner);
local markers = loadfile(modpath .. "/marker_api.lua") (marker_lookup); local markers = loadfile(modpath .. "/marker_api.lua") (marker_lookup);
local map_formspec = loadfile(modpath .. "/map_formspec.lua") (map_data, gui, skin, biomes, markers); local map_formspec = loadfile(modpath .. "/map_formspec.lua") (map_data, gui, skin, biomes, markers);
loadfile(modpath .. "/items.lua") (chunk, marker_lookup, gui, skin, audio, maps, map_formspec); local map_item = loadfile(modpath .. "/items.lua") (chunk, marker_lookup, gui, skin, audio, maps, map_formspec);
loadfile(modpath .. "/commands.lua") (chunk, audio, map_formspec); loadfile(modpath .. "/commands.lua") (chunk, audio, map_formspec);
loadfile(modpath .. "/table.lua") (gui, skin, audio, maps); loadfile(modpath .. "/table.lua") (gui, skin, audio, maps, map_item);
cartographer.skin = skin; cartographer.skin = skin;
cartographer.biomes = biomes; cartographer.biomes = biomes;
cartographer.markers = markers; cartographer.markers = markers;
cartographer.maps = maps; cartographer.maps = maps;
cartographer.map_item = map_item;

View File

@ -349,7 +349,7 @@ minetest.register_node("cartographer:map", {
end, end,
}); });
function cartographer.create_map_item(size, detail, scale) local function create_map_item(size, detail, scale)
local map = ItemStack("cartographer:map"); local map = ItemStack("cartographer:map");
local meta = map:get_meta(); local meta = map:get_meta();
meta:set_int("cartographer:size", size); meta:set_int("cartographer:size", size);
@ -364,14 +364,14 @@ end
-- stack: An itemstack containing a map -- stack: An itemstack containing a map
-- --
-- Returns an itemstack with the copied map -- Returns an itemstack with the copied map
function cartographer.copy_map_item(stack) local function copy_map_item(stack)
local meta = stack:get_meta(); local meta = stack:get_meta();
local size = meta:get_int("cartographer:size"); local size = meta:get_int("cartographer:size");
local detail = meta:get_int("cartographer:detail"); local detail = meta:get_int("cartographer:detail");
local scale = meta:get_int("cartographer:scale"); local scale = meta:get_int("cartographer:scale");
local copy = cartographer.create_map_item(size, detail, scale); local copy = create_map_item(size, detail, scale);
local copy_meta = copy:get_meta(); local copy_meta = copy:get_meta();
local id = meta:get_int("cartographer:map_id"); local id = meta:get_int("cartographer:map_id");
@ -396,7 +396,7 @@ function cartographer.copy_map_item(stack)
return copy; return copy;
end end
function cartographer.resize_map_item(meta, size) local function resize_map_item(meta, size)
local old_size = meta:get_int("cartographer:size"); local old_size = meta:get_int("cartographer:size");
if old_size >= size then if old_size >= size then
@ -415,3 +415,9 @@ function cartographer.resize_map_item(meta, size)
chunk.from(map.w), chunk.from(map.h))); chunk.from(map.w), chunk.from(map.h)));
end end
end end
return {
create = create_map_item,
copy = copy_map_item,
resize = resize_map_item,
};

View File

@ -1,4 +1,4 @@
local gui, gui_skin, audio, maps = ...; local gui, gui_skin, audio, maps, map_item = ...;
local MAP_SIZE = 40; local MAP_SIZE = 40;
local SCALE_SMALL = 1; local SCALE_SMALL = 1;
@ -715,11 +715,11 @@ minetest.register_on_player_receive_fields(function(player, name, fields)
local stack = inv:get_stack("output", 1); local stack = inv:get_stack("output", 1);
if stack:is_empty() then if stack:is_empty() then
inv:set_stack("output", 1, cartographer.create_map_item(size, 1 + detail, scale)); inv:set_stack("output", 1, map_item.create(size, 1 + detail, scale));
else else
local smeta = stack:get_meta(); local smeta = stack:get_meta();
smeta:set_int("cartographer:detail", 1 + detail); smeta:set_int("cartographer:detail", 1 + detail);
cartographer.resize_map_item(smeta, size); map_item.resize(smeta, size);
local map = maps.get(smeta:get_int("cartographer:map_id")); local map = maps.get(smeta:get_int("cartographer:map_id"));
if map then if map then
@ -739,7 +739,7 @@ minetest.register_on_player_receive_fields(function(player, name, fields)
audio.play_feedback("cartographer_write", player); audio.play_feedback("cartographer_write", player);
local inv = meta:get_inventory(); local inv = meta:get_inventory();
inv:set_stack("copy_output", 1, cartographer.copy_map_item(inv:get_stack("copy_input", 1))); inv:set_stack("copy_output", 1, map_item.copy(inv:get_stack("copy_input", 1)));
end end
elseif fields["1"] then elseif fields["1"] then
meta:set_int("detail", 0); meta:set_int("detail", 0);