Refactor marker api calls into marker_api.lua
This commit is contained in:
parent
a2e6597763
commit
e53bd8af41
6
init.lua
6
init.lua
@ -53,12 +53,14 @@ local audio = loadfile(modpath .. "/audio.lua") ();
|
|||||||
local biomes = loadfile(modpath .. "/biome_api.lua") ();
|
local biomes = loadfile(modpath .. "/biome_api.lua") ();
|
||||||
|
|
||||||
local scanner = loadfile(modpath .. "/scanner.lua") (map_data, chunk);
|
local scanner = loadfile(modpath .. "/scanner.lua") (map_data, chunk);
|
||||||
local maps = loadfile(modpath .. "/map_api.lua") (map_data, chunk, scanner, marker_lookup);
|
local maps = loadfile(modpath .. "/map_api.lua") (map_data, chunk, scanner);
|
||||||
local map_formspec = loadfile(modpath .. "/map_formspec.lua") (map_data, gui, skin, biomes);
|
local markers = loadfile(modpath .. "/marker_api.lua") (marker_lookup);
|
||||||
|
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);
|
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);
|
||||||
|
|
||||||
cartographer.skin = skin;
|
cartographer.skin = skin;
|
||||||
cartographer.biomes = biomes;
|
cartographer.biomes = biomes;
|
||||||
|
cartographer.markers = markers;
|
||||||
cartographer.maps = maps;
|
cartographer.maps = maps;
|
||||||
|
75
map_api.lua
75
map_api.lua
@ -1,4 +1,4 @@
|
|||||||
local map_data, chunk, scanner, marker_lookup = ...;
|
local map_data, chunk, scanner = ...;
|
||||||
|
|
||||||
local Map = {};
|
local Map = {};
|
||||||
Map.__index = Map;
|
Map.__index = Map;
|
||||||
@ -144,60 +144,6 @@ local function fill_loop()
|
|||||||
end
|
end
|
||||||
minetest.after(5, fill_loop);
|
minetest.after(5, fill_loop);
|
||||||
|
|
||||||
-- Format marker ids to allow their use as formspec element ids.
|
|
||||||
-- We're mostly concerned with guarding against the : character because it is
|
|
||||||
-- common for ids and has an alternate meaning in formspecs.
|
|
||||||
-- id: The id to format
|
|
||||||
--
|
|
||||||
-- Returns the formatted id
|
|
||||||
local function format_marker_id(id)
|
|
||||||
return id:gsub(":", "_");
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Find the marker data for a given id
|
|
||||||
-- id: The id to search for
|
|
||||||
--
|
|
||||||
-- Returns the marker data, or nil if not found
|
|
||||||
function cartographer.get_marker_data(id)
|
|
||||||
if not id then
|
|
||||||
return nil;
|
|
||||||
end
|
|
||||||
|
|
||||||
id = format_marker_id(id);
|
|
||||||
for _,marker in pairs(marker_lookup) do
|
|
||||||
if marker.id == id then
|
|
||||||
return marker;
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
return nil;
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Register a marker with textures to display
|
|
||||||
-- id: A string containing the id of the marker
|
|
||||||
-- name: A string containing the displayedname of the marker
|
|
||||||
-- textures: A table of texture names.
|
|
||||||
-- These should correspond with detail levels,
|
|
||||||
-- any detail level past the length of the table will return the last texture
|
|
||||||
function cartographer.register_marker(id, name, textures)
|
|
||||||
if not id then
|
|
||||||
return nil;
|
|
||||||
end
|
|
||||||
|
|
||||||
id = format_marker_id(id);
|
|
||||||
local existing_marker = cartographer.get_marker_data(id);
|
|
||||||
if existing_marker then
|
|
||||||
existing_marker.name = name;
|
|
||||||
existing_marker.textures = textures;
|
|
||||||
else
|
|
||||||
marker_lookup[#marker_lookup+1] = {
|
|
||||||
id = id,
|
|
||||||
name = name,
|
|
||||||
textures = textures,
|
|
||||||
};
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Get an entry from a list for a given detail level
|
-- Get an entry from a list for a given detail level
|
||||||
-- textures: An array of textures
|
-- textures: An array of textures
|
||||||
-- detail: The detail level
|
-- detail: The detail level
|
||||||
@ -207,23 +153,4 @@ function cartographer.detail_texture(textures, detail)
|
|||||||
return textures[math.min(detail, #textures)];
|
return textures[math.min(detail, #textures)];
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Get the texture name (minus extension) for the given marker and detail level.
|
|
||||||
-- id: A string containing the marker id
|
|
||||||
-- detail: The detail level
|
|
||||||
-- Returns a string with a texture name, or nil if no matching marker was found.
|
|
||||||
function cartographer.get_marker_texture(id, detail)
|
|
||||||
if not id then
|
|
||||||
return nil;
|
|
||||||
end
|
|
||||||
|
|
||||||
id = format_marker_id(id);
|
|
||||||
local marker = cartographer.get_marker_data(id);
|
|
||||||
|
|
||||||
if marker then
|
|
||||||
return marker.textures[math.min(detail, #marker.textures)];
|
|
||||||
end
|
|
||||||
|
|
||||||
return nil;
|
|
||||||
end
|
|
||||||
|
|
||||||
return maps;
|
return maps;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
-- Arguments
|
-- Arguments
|
||||||
-- map_data: The cartographer map data table
|
-- map_data: The cartographer map data table
|
||||||
local map_data, gui, skin, biomes = ...;
|
local map_data, gui, skin, biomes, markers = ...;
|
||||||
|
|
||||||
-- Constants
|
-- Constants
|
||||||
local TILE_SIZE = 0.25;
|
local TILE_SIZE = 0.25;
|
||||||
@ -112,7 +112,7 @@ local function generate_map(x, y, w, h, player_x, player_y, detail, map_scale, h
|
|||||||
};
|
};
|
||||||
|
|
||||||
if get_marker then
|
if get_marker then
|
||||||
local marker = cartographer.get_marker_texture(get_marker(..., i, j), detail);
|
local marker = markers.get_texture(get_marker(..., i, j), detail);
|
||||||
if marker then
|
if marker then
|
||||||
str = str .. gui.image {
|
str = str .. gui.image {
|
||||||
x = fx,
|
x = fx,
|
||||||
|
80
marker_api.lua
Normal file
80
marker_api.lua
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
local marker_lookup = ...;
|
||||||
|
|
||||||
|
-- Format marker ids to allow their use as formspec element ids.
|
||||||
|
-- We're mostly concerned with guarding against the : character because it is
|
||||||
|
-- common for ids and has an alternate meaning in formspecs.
|
||||||
|
-- id: The id to format
|
||||||
|
--
|
||||||
|
-- Returns the formatted id
|
||||||
|
local function format_marker_id(id)
|
||||||
|
return id:gsub(":", "_");
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Find the marker data for a given id
|
||||||
|
-- id: The id to search for
|
||||||
|
--
|
||||||
|
-- Returns the marker data, or nil if not found
|
||||||
|
local function get_marker(id)
|
||||||
|
if not id then
|
||||||
|
return nil;
|
||||||
|
end
|
||||||
|
|
||||||
|
id = format_marker_id(id);
|
||||||
|
for _,marker in pairs(marker_lookup) do
|
||||||
|
if marker.id == id then
|
||||||
|
return marker;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return nil;
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Register a marker with textures to display
|
||||||
|
-- id: A string containing the id of the marker
|
||||||
|
-- name: A string containing the displayedname of the marker
|
||||||
|
-- textures: A table of texture names.
|
||||||
|
-- These should correspond with detail levels,
|
||||||
|
-- any detail level past the length of the table will return the last texture
|
||||||
|
local function add_marker(id, name, textures)
|
||||||
|
if not id then
|
||||||
|
return nil;
|
||||||
|
end
|
||||||
|
|
||||||
|
id = format_marker_id(id);
|
||||||
|
local existing_marker = get_marker(id);
|
||||||
|
if existing_marker then
|
||||||
|
existing_marker.name = name;
|
||||||
|
existing_marker.textures = textures;
|
||||||
|
else
|
||||||
|
marker_lookup[#marker_lookup+1] = {
|
||||||
|
id = id,
|
||||||
|
name = name,
|
||||||
|
textures = textures,
|
||||||
|
};
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Get the texture name (minus extension) for the given marker and detail level.
|
||||||
|
-- id: A string containing the marker id
|
||||||
|
-- detail: The detail level
|
||||||
|
-- Returns a string with a texture name, or nil if no matching marker was found.
|
||||||
|
local function get_marker_texture(id, detail)
|
||||||
|
if not id then
|
||||||
|
return nil;
|
||||||
|
end
|
||||||
|
|
||||||
|
id = format_marker_id(id);
|
||||||
|
local marker = get_marker(id);
|
||||||
|
|
||||||
|
if marker then
|
||||||
|
return marker.textures[math.min(detail, #marker.textures)];
|
||||||
|
end
|
||||||
|
|
||||||
|
return nil;
|
||||||
|
end
|
||||||
|
|
||||||
|
return {
|
||||||
|
add = add_marker,
|
||||||
|
get = get_marker,
|
||||||
|
get_texture = get_marker_texture,
|
||||||
|
};
|
Loading…
Reference in New Issue
Block a user