Move marker formspec code into items.lua
This commit is contained in:
		
							
								
								
									
										1
									
								
								init.lua
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								init.lua
									
									
									
									
									
								
							| @@ -57,7 +57,6 @@ cartographer.gui = loadfile(modpath .. "/formspec.lua") (); | |||||||
| loadfile(modpath .. "/scanner.lua") (map_data, chunk); | loadfile(modpath .. "/scanner.lua") (map_data, chunk); | ||||||
| loadfile(modpath .. "/map_api.lua") (chunk, biome_lookup, marker_lookup); | loadfile(modpath .. "/map_api.lua") (chunk, biome_lookup, marker_lookup); | ||||||
| loadfile(modpath .. "/items.lua") (chunk, marker_lookup, cartographer.gui, cartographer.skin); | 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 .. "/map_formspec.lua") (map_data); | ||||||
| loadfile(modpath .. "/commands.lua") (); | loadfile(modpath .. "/commands.lua") (); | ||||||
| loadfile(modpath .. "/table.lua") (_cartographer.materials_by_name, _cartographer.materials_by_group, cartographer.gui, cartographer.skin); | loadfile(modpath .. "/table.lua") (_cartographer.materials_by_name, _cartographer.materials_by_group, cartographer.gui, cartographer.skin); | ||||||
|   | |||||||
							
								
								
									
										109
									
								
								items.lua
									
									
									
									
									
								
							
							
						
						
									
										109
									
								
								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 | -- The list of players looking at maps, and the map IDs that they're looking at | ||||||
| local player_maps = {}; | 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 | -- Show a map to a player from the ID | ||||||
| -- id: The map ID | -- id: The map ID | ||||||
| -- player_x: The X position (in world coordinates) | -- 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, |                 y = 1, | ||||||
|                 bg = skin.marker_bg, |                 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 { |             gui.container { | ||||||
|                 x = formspec_width - 0.01, |                 x = formspec_width - 0.01, | ||||||
| @@ -301,7 +406,7 @@ function cartographer.resize_map_item(meta, size) | |||||||
|         local map = cartographer.get_map(id); |         local map = cartographer.get_map(id); | ||||||
|         cartographer.resize_map(id, size, size); |         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.x), chunk.from(map.z), | ||||||
|                                                             chunk.from(map.w), chunk.from(map.h))); |                                                             chunk.from(map.w), chunk.from(map.h))); | ||||||
|     end |     end | ||||||
|   | |||||||
| @@ -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; |  | ||||||
		Reference in New Issue
	
	Block a user