93 lines
2.9 KiB
Lua
93 lines
2.9 KiB
Lua
-- Merges table2's contents into table1.
|
|
function bobmods.lib.table_merge(table1, table2)
|
|
for index, value in pairs(table2) do
|
|
if type(value) == "table" then
|
|
if type(table1[index]) == "table" then
|
|
bobmods.lib.table_merge(table1[index], table2[index])
|
|
else
|
|
table1[index] = util.table.deepcopy(table2[index])
|
|
end
|
|
else
|
|
table1[index] = value
|
|
end
|
|
end
|
|
end
|
|
|
|
function bobmods.lib.result_check(object)
|
|
if object then
|
|
if object.results == nil then
|
|
object.results = {}
|
|
end
|
|
|
|
if object.result then
|
|
local item = bobmods.lib.item.basic_item({ name = object.result })
|
|
if object.result_count then
|
|
item.amount = object.result_count
|
|
object.result_count = nil
|
|
end
|
|
bobmods.lib.item.add_new(object.results, item)
|
|
|
|
if object.ingredients then -- It's a recipe
|
|
if not object.main_product then
|
|
if object.icon or object.subgroup or object.order or item.type ~= "item" then -- if we already have one, add the rest
|
|
if not object.icon and data.raw[item.type][object.result].icon then
|
|
object.icon = data.raw[item.type][object.result].icon
|
|
object.icon_size = data.raw[item.type][object.result].icon_size
|
|
end
|
|
if not object.subgroup and data.raw[item.type][object.result].subgroup then
|
|
object.subgroup = data.raw[item.type][object.result].subgroup
|
|
end
|
|
if not object.order and data.raw[item.type][object.result].order then
|
|
object.order = data.raw[item.type][object.result].order
|
|
end
|
|
else -- otherwise just use main_product as a cheap way to set them all.
|
|
object.main_product = object.result
|
|
end
|
|
end
|
|
end
|
|
object.result = nil
|
|
end
|
|
else
|
|
log(object .. " does not exist.")
|
|
end
|
|
end
|
|
|
|
function bobmods.lib.belt_speed_ips(ips)
|
|
return ips * 1 / 480
|
|
end
|
|
|
|
--Inserts the new item into the table only if it doesn't already exist. (Designed to insert strings only)
|
|
function bobmods.lib.safe_insert(array, new_item)
|
|
local addit = true
|
|
for i, item in pairs(array) do
|
|
if item == new_item then
|
|
addit = false
|
|
end
|
|
end
|
|
if addit then
|
|
table.insert(array, new_item)
|
|
end
|
|
end
|
|
|
|
--takes an item/fluid/entity(maybe even recipe) and returns a complete icons array.
|
|
--if it has no icons= tag, it builds one from icon, icon_size and icon_mipmaps.
|
|
--Example use bobmods.lib.icons_from_item(data.raw.item.wood)
|
|
function bobmods.lib.icons_from_item(item)
|
|
if item and type(item) == "table" then
|
|
local icons = {}
|
|
if item.icons then
|
|
icons = item.icons
|
|
elseif item.icon then
|
|
icons = { { icon = item.icon, icon_size = item.icon_size, icon_mipmaps = item.icon_mipmaps } }
|
|
else
|
|
icons = nil
|
|
log(debug.traceback())
|
|
log(item.name .. " has no valid icons.")
|
|
end
|
|
return icons
|
|
end
|
|
log(debug.traceback())
|
|
log("object does not exist.")
|
|
return nil
|
|
end
|