From 5af69ccd14034321c0337402d651ab937a260509 Mon Sep 17 00:00:00 2001 From: Hugues Ross Date: Mon, 8 Jun 2020 18:12:05 -0400 Subject: [PATCH] Move marker formspec code into items.lua --- init.lua | 1 - items.lua | 109 ++++++++++++++++++++++++++++++++++++++++++- marker_formspec.lua | 110 -------------------------------------------- 3 files changed, 107 insertions(+), 113 deletions(-) delete mode 100644 marker_formspec.lua diff --git a/init.lua b/init.lua index cdb290d..fcfe005 100644 --- a/init.lua +++ b/init.lua @@ -57,7 +57,6 @@ cartographer.gui = loadfile(modpath .. "/formspec.lua") (); loadfile(modpath .. "/scanner.lua") (map_data, chunk); loadfile(modpath .. "/map_api.lua") (chunk, biome_lookup, marker_lookup); loadfile(modpath .. "/items.lua") (chunk, marker_lookup, cartographer.gui, cartographer.skin); -_cartographer.generate_marker_formspec = loadfile(modpath .. "/marker_formspec.lua") (marker_lookup, cartographer.gui); loadfile(modpath .. "/map_formspec.lua") (map_data); loadfile(modpath .. "/commands.lua") (); loadfile(modpath .. "/table.lua") (_cartographer.materials_by_name, _cartographer.materials_by_group, cartographer.gui, cartographer.skin); diff --git a/items.lua b/items.lua index dcdc9f4..f155273 100644 --- a/items.lua +++ b/items.lua @@ -3,6 +3,111 @@ local chunk, marker_lookup, gui, skin = ... -- The list of players looking at maps, and the map IDs that they're looking at local player_maps = {}; +-- Generates formspec data for the map marker editor +-- selected_id: The id of the currently selected marker, or nil if no marker is +-- selected +-- detail: The map's detail level +-- page: The current page +-- +-- Returns a formspec string for use in containers +local function marker_formspec(selected_id, detail, page) + local formspec = { + gui.bg9 { + x = 0, + y = 0, + + w = 3.25, + h = 3.875, + + skin = skin.marker_bg, + }, + gui.style_type { + selector = "button,image_button", + properties = { + border = false, + bgimg = skin.marker_button.texture .. ".png", + bgimg_hovered = skin.marker_button.hovered_texture .. ".png", + bgimg_pressed = skin.marker_button.pressed_texture .. ".png", + bgimg_middle = skin.marker_button.radius, + textcolor = skin.marker_button.font_color, + }, + }, + gui.button { + x = 0.125, + y = 0.125, + + w = 1.125, + h = 0.5, + + id = "clear_marker", + text = "Erase", + tooltip = "Remove the selected marker", + }, + + gui.label { + x = 1.375, + y = 3.5, + + text = string.format("%d / %d", page, math.ceil(#marker_lookup / 20)), + }, + }; + + if selected_id then + table.insert(formspec, gui.style { + selector = "marker-" .. selected_id, + properties = { + bgimg = skin.marker_button.selected_texture .. ".png", + bgimg_hovered = skin.marker_button.selected_texture .. ".png", + bgimg_pressed = skin.marker_button.selected_texture .. ".png", + } + }); + end + + local starting_id = ((page - 1) * 20) + 1; + for i = starting_id,math.min(#marker_lookup,starting_id + 19),1 do + local marker = marker_lookup[i]; + table.insert(formspec, gui.image_button { + x = (i - starting_id) % 5 * 0.625 + 0.125, + y = math.floor((i - starting_id) / 5) * 0.625 + 0.75, + + w = 0.5, + h = 0.5, + + image = marker.textures[math.min(detail, #marker.textures)] .. ".png", + id = "marker-" .. marker.id, + tooltip = marker.name, + }); + end + + if page > 1 then + table.insert(formspec, gui.button { + x = 0.125, + y = 3.25, + + w = 0.5, + h = 0.5, + + id = "prev_button", + text = "<" + }); + end + + if starting_id + 19 < #marker_lookup then + table.insert(formspec, gui.button { + x = 2.625, + y = 3.25, + + w = 0.5, + h = 0.5, + + id = "next_button", + text = ">" + }); + end + + return table.concat(formspec); +end + -- Show a map to a player from the ID -- id: The map ID -- player_x: The X position (in world coordinates) @@ -42,7 +147,7 @@ local function show_map_id_formspec(id, player_x, player_z, player_name, height_ y = 1, bg = skin.marker_bg, - _cartographer.generate_marker_formspec(cartographer.get_marker(map, player_x, player_z), map.detail, marker_page or 1, skin.marker_bg, skin.marker_button), + marker_formspec(cartographer.get_marker(map, player_x, player_z), map.detail, marker_page or 1), }, gui.container { x = formspec_width - 0.01, @@ -301,7 +406,7 @@ function cartographer.resize_map_item(meta, size) local map = cartographer.get_map(id); cartographer.resize_map(id, size, size); - copy_meta:set_string("description", map_description(id, + meta:set_string("description", map_description(id, chunk.from(map.x), chunk.from(map.z), chunk.from(map.w), chunk.from(map.h))); end diff --git a/marker_formspec.lua b/marker_formspec.lua deleted file mode 100644 index 6886c66..0000000 --- a/marker_formspec.lua +++ /dev/null @@ -1,110 +0,0 @@ -local marker_lookup, gui = ...; - --- Generates formspec data for the map marker editor --- selected_id: The id of the currently selected marker, or nil if no marker is --- selected --- detail: The map's detail level --- page: The current page --- bg: A 9-slice background skin table --- button: A button skin table --- --- Returns a formspec string for use in containers -local function generate_marker_formspec(selected_id, detail, page, bg, button) - local formspec = { - gui.bg9 { - x = 0, - y = 0, - - w = 3.25, - h = 3.875, - - skin = bg, - }, - gui.style_type { - selector = "button,image_button", - properties = { - border = false, - bgimg = button.texture .. ".png", - bgimg_hovered = button.hovered_texture .. ".png", - bgimg_pressed = button.pressed_texture .. ".png", - bgimg_middle = button.radius, - textcolor = button.font_color, - }, - }, - gui.button { - x = 0.125, - y = 0.125, - - w = 1.125, - h = 0.5, - - id = "clear_marker", - text = "Erase", - tooltip = "Remove the selected marker", - }, - - gui.label { - x = 1.375, - y = 3.5, - - text = string.format("%d / %d", page, math.ceil(#marker_lookup / 20)), - }, - }; - - if selected_id then - table.insert(formspec, gui.style { - selector = "marker-" .. selected_id, - properties = { - bgimg = button.selected_texture .. ".png", - bgimg_hovered = button.selected_texture .. ".png", - bgimg_pressed = button.selected_texture .. ".png", - } - }); - end - - local starting_id = ((page - 1) * 20) + 1; - for i = starting_id,math.min(#marker_lookup,starting_id + 19),1 do - local marker = marker_lookup[i]; - table.insert(formspec, gui.image_button { - x = (i - starting_id) % 5 * 0.625 + 0.125, - y = math.floor((i - starting_id) / 5) * 0.625 + 0.75, - - w = 0.5, - h = 0.5, - - image = marker.textures[math.min(detail, #marker.textures)] .. ".png", - id = "marker-" .. marker.id, - tooltip = marker.name, - }); - end - - if page > 1 then - table.insert(formspec, gui.button { - x = 0.125, - y = 3.25, - - w = 0.5, - h = 0.5, - - id = "prev_button", - text = "<" - }); - end - - if starting_id + 19 < #marker_lookup then - table.insert(formspec, gui.button { - x = 2.625, - y = 3.25, - - w = 0.5, - h = 0.5, - - id = "next_button", - text = ">" - }); - end - - return table.concat(formspec); -end - -return generate_marker_formspec;