SX 96eb3b2016 CNC Mk2 (#183)
* CNC Mk2

* Formspec protection, mk2 textures, more digiline commands, fix digging

* Documentation, adjust formspec, add tests, adjust API and digilines

* Fix CLU and filter injectors, add few interaction tests

* Upgrade machines, adjust formspecs and textures, add few tests

* Adjust formspec, do check protection for quit event

* Remove unnecessary real_coordinates
2021-06-13 23:33:30 +03:00

75 lines
2.8 KiB
Lua

-- Technic CNC v2.0 by SX
-- Based on Technic CNC v1.0 by kpoppel
-- Based on the NonCubic Blocks MOD v1.4 by yves_de_beck
local S = technic_cnc.getter
-- This should handle both onesize_products and twosize_products, currently
-- twosize_products are hardcoded for formspec definitions.
local programs = {}
for key,_ in pairs(technic_cnc.onesize_products) do table.insert(programs, key) end
table.sort(programs)
--
-- Register technic:cnc machine
--
do
technic_cnc.register_cnc_machine("technic:cnc", {
description = technic_cnc.use_technic and S("LV CNC Machine") or S("CNC Machine"),
output_size = 4,
programs = programs,
demand = 450,
recipe = technic_cnc.use_technic and ({
{'default:glass', 'technic:diamond_drill_head', 'default:glass'},
{'technic:control_logic_unit', 'technic:machine_casing', 'basic_materials:motor'},
{'technic:carbon_steel_ingot', 'technic:lv_cable', 'technic:carbon_steel_ingot'},
}) or ({
{'default:glass', 'default:diamond', 'default:glass'},
{'basic_materials:ic', 'default:steelblock', 'basic_materials:motor'},
{'default:steel_ingot', 'default:mese', 'default:steel_ingot'},
}),
tiles = {
"technic_cnc_top.png", "technic_cnc_bottom.png", "technic_cnc_side.png",
"technic_cnc_side.png", "technic_cnc_side.png", "technic_cnc_front.png"
},
tiles_active = {
"technic_cnc_top_active.png", "technic_cnc_bottom.png", "technic_cnc_side.png",
"technic_cnc_side.png", "technic_cnc_side.png", "technic_cnc_front_active.png"
},
})
end
--
-- Register technic:cnc_mk2 machine
--
if technic_cnc.use_technic or technic_cnc.pipeworks or technic_cnc.digilines then
local tiles = {
"technic_cnc_mk2_top.png", "technic_cnc_bottom.png", "technic_cnc_mk2_side.png",
"technic_cnc_mk2_side.png", "technic_cnc_mk2_side.png", "technic_cnc_mk2_front.png"
}
local tiles_active = {
"technic_cnc_mk2_top_active.png", "technic_cnc_bottom.png", "technic_cnc_mk2_side.png",
"technic_cnc_mk2_side.png", "technic_cnc_mk2_side.png", "technic_cnc_mk2_front_active.png"
}
if technic_cnc.pipeworks then
tiles = technic_cnc.pipeworks.tube_entry_overlay(tiles)
tiles_active = technic_cnc.pipeworks.tube_entry_overlay(tiles_active)
end
technic_cnc.register_cnc_machine("technic:cnc_mk2", {
description = S("LV CNC Machine") .. " Mk2",
output_size = 4,
digilines = technic_cnc.digilines,
upgrade = true,
tube = technic_cnc.pipeworks and technic_cnc.pipeworks.new_tube() or nil,
programs = programs,
demand = 900,
recipe = {
{'basic_materials:ic', 'technic:cnc', 'basic_materials:ic'},
{'pipeworks:tube_1', 'technic:machine_casing', 'pipeworks:tube_1'},
{'technic:cnc', 'digilines:wire_std_00000000', 'technic:cnc'},
},
tiles = tiles,
tiles_active = tiles_active,
})
end