Move material methods into separate api object
This commit is contained in:
parent
3d6ebe66c1
commit
9099390842
4
init.lua
4
init.lua
@ -55,14 +55,16 @@ local biomes = loadfile(modpath .. "/biome_api.lua") (util);
|
|||||||
|
|
||||||
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);
|
local maps = loadfile(modpath .. "/map_api.lua") (map_data, chunk, scanner);
|
||||||
|
local materials = loadfile(modpath .. "/material_api.lua") ();
|
||||||
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, util, biomes, markers);
|
local map_formspec = loadfile(modpath .. "/map_formspec.lua") (map_data, gui, skin, util, biomes, markers);
|
||||||
local map_item = 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, map_item);
|
loadfile(modpath .. "/table.lua") (gui, skin, audio, maps, materials, 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;
|
cartographer.map_item = map_item;
|
||||||
|
cartographer.materials = materials;
|
||||||
|
61
table.lua
61
table.lua
@ -1,4 +1,4 @@
|
|||||||
local gui, gui_skin, audio, maps, map_item = ...;
|
local gui, gui_skin, audio, maps, materials, map_item = ...;
|
||||||
|
|
||||||
local MAP_SIZE = 40;
|
local MAP_SIZE = 40;
|
||||||
local SCALE_SMALL = 1;
|
local SCALE_SMALL = 1;
|
||||||
@ -6,9 +6,6 @@ local SCALE_MEDIUM = 2;
|
|||||||
local SCALE_LARGE = 4;
|
local SCALE_LARGE = 4;
|
||||||
local SCALE_HUGE = 8;
|
local SCALE_HUGE = 8;
|
||||||
|
|
||||||
local materials_by_name = {};
|
|
||||||
local materials_by_group = {};
|
|
||||||
|
|
||||||
-- Get the material cost for the given map scale and detail level
|
-- Get the material cost for the given map scale and detail level
|
||||||
-- scale: The map scale
|
-- scale: The map scale
|
||||||
-- detail: The detail level
|
-- detail: The detail level
|
||||||
@ -90,38 +87,6 @@ local function get_copy_material_cost(meta)
|
|||||||
};
|
};
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Get the converted material value of the given itemstack
|
|
||||||
-- stack: The itemstack to convert
|
|
||||||
--
|
|
||||||
-- Returns a table with the material values
|
|
||||||
local function get_material_value(stack)
|
|
||||||
local item_name = stack:get_name();
|
|
||||||
local item_count = stack:get_count();
|
|
||||||
|
|
||||||
for name,mats in pairs(materials_by_name) do
|
|
||||||
if name == item_name then
|
|
||||||
return {
|
|
||||||
paper = (mats.paper or 0) * item_count,
|
|
||||||
pigment = (mats.pigment or 0) * item_count,
|
|
||||||
}
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
for group,mats in pairs(materials_by_group) do
|
|
||||||
if minetest.get_item_group(item_name, group) ~= 0 then
|
|
||||||
return {
|
|
||||||
paper = (mats.paper or 0) * item_count,
|
|
||||||
pigment = (mats.pigment or 0) * item_count,
|
|
||||||
}
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
return {
|
|
||||||
paper = 0,
|
|
||||||
pigment = 0,
|
|
||||||
};
|
|
||||||
end
|
|
||||||
|
|
||||||
local fs = {};
|
local fs = {};
|
||||||
|
|
||||||
-- Draw a 1px thick horizontal separator formspec element
|
-- Draw a 1px thick horizontal separator formspec element
|
||||||
@ -380,7 +345,7 @@ end
|
|||||||
-- Returns a formspec string
|
-- Returns a formspec string
|
||||||
function fs.convert(x, y, pos, skin)
|
function fs.convert(x, y, pos, skin)
|
||||||
local meta = minetest.get_meta(pos);
|
local meta = minetest.get_meta(pos);
|
||||||
local value = get_material_value(meta:get_inventory():get_stack("input", 1));
|
local value = materials.get_stack_value(meta:get_inventory():get_stack("input", 1));
|
||||||
|
|
||||||
return gui.container {
|
return gui.container {
|
||||||
x = x,
|
x = x,
|
||||||
@ -694,7 +659,7 @@ minetest.register_on_player_receive_fields(function(player, name, fields)
|
|||||||
local inv = meta:get_inventory();
|
local inv = meta:get_inventory();
|
||||||
local stack = inv:get_stack("input", 1);
|
local stack = inv:get_stack("input", 1);
|
||||||
|
|
||||||
local value = get_material_value(stack);
|
local value = materials.get_stack_value(stack);
|
||||||
|
|
||||||
if value.paper + value.pigment > 0 then
|
if value.paper + value.pigment > 0 then
|
||||||
meta:set_int("paper", meta:get_int("paper") + value.paper);
|
meta:set_int("paper", meta:get_int("paper") + value.paper);
|
||||||
@ -955,23 +920,3 @@ minetest.register_node("cartographer:advanced_table", {
|
|||||||
on_metadata_inventory_put = table_on_items_changed,
|
on_metadata_inventory_put = table_on_items_changed,
|
||||||
on_metadata_inventory_take = table_on_items_changed,
|
on_metadata_inventory_take = table_on_items_changed,
|
||||||
});
|
});
|
||||||
|
|
||||||
function cartographer.register_map_material_name(name, material, value)
|
|
||||||
if materials_by_name[name] then
|
|
||||||
materials_by_name[name][material] = value or 1;
|
|
||||||
else
|
|
||||||
materials_by_name[name] = {
|
|
||||||
[material] = value or 1,
|
|
||||||
};
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function cartographer.register_map_material_group(name, material, value)
|
|
||||||
if materials_by_group[name] then
|
|
||||||
materials_by_group[name][material] = value or 1;
|
|
||||||
else
|
|
||||||
materials_by_group[name] = {
|
|
||||||
[material] = value or 1,
|
|
||||||
};
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
Loading…
Reference in New Issue
Block a user