diff options
author | FaceDeer <derksenmobile@gmail.com> | 2017-10-12 22:53:30 -0600 |
---|---|---|
committer | FaceDeer <derksenmobile@gmail.com> | 2017-10-12 22:53:30 -0600 |
commit | d582f106aa4f1be3bda41113a4893c39d35223a7 (patch) | |
tree | 7add8ad141d837b4287bf6a708b5426742d0c5d7 /nodes/node_power_connector.lua | |
parent | 65f5ac8520a286ae062824147c2f0e3b0253c8ff (diff) |
finishing up technic power tap, other misc fixes
Diffstat (limited to 'nodes/node_power_connector.lua')
-rw-r--r-- | nodes/node_power_connector.lua | 74 |
1 files changed, 51 insertions, 23 deletions
diff --git a/nodes/node_power_connector.lua b/nodes/node_power_connector.lua index 4e51e36..6c4f903 100644 --- a/nodes/node_power_connector.lua +++ b/nodes/node_power_connector.lua @@ -6,36 +6,48 @@ local size = 3/16 local max_dig_cost = math.max(digtron.config.dig_cost_cracky, digtron.config.dig_cost_crumbly, digtron.config.dig_cost_choppy, digtron.config.dig_cost_default) +local get_formspec_string = function(current_val, current_max) + return "size[4.5,0.6]" .. + default.gui_bg .. + default.gui_bg_img .. + default.gui_slots .. + "field[0.2,0.3;1,1;value;;".. current_val .. "]" .. + "button[1,0;1,1;maximize;" .. S("Maximize\nPower") .."]" .. + "label[2,0;"..S("Maximum Power\nRequired: @1", current_max) .."]".. + "button[3.5,0;1,1;refresh;" .. S("Refresh\nMax") .."]" +end + +local connector_groups = {cracky = 3, oddly_breakable_by_hand=3, digtron = 8, technic_machine=1, technic_hv=1} +if not minetest.get_modpath("technic") then + -- Technic is not installed, hide this away. + connector_groups.not_in_creative_inventory = 1 +end + minetest.register_node("digtron:power_connector", { - description = S("DPC"), + description = S("Digtron HV Power Connector"), _doc_items_longdesc = digtron.doc.power_connector_longdesc, _doc_items_usagehelp = digtron.doc.power_connector_usagehelp, - groups = {cracky = 3, oddly_breakable_by_hand=3, digtron = 8, technic_machine=1, technic_hv=1}, - tiles = {"digtron_plate.png"}, + _digtron_formspec = get_formspec_string(0,0), + groups = connector_groups, + tiles = {"digtron_plate.png^digtron_power_connector_top.png^digtron_digger_yb_frame.png", "digtron_plate.png^digtron_digger_yb_frame.png", + "digtron_plate.png^digtron_digger_yb_frame.png^digtron_power_connector_side.png", "digtron_plate.png^digtron_digger_yb_frame.png^digtron_power_connector_side.png", + "digtron_plate.png^digtron_digger_yb_frame.png^digtron_power_connector_side.png", "digtron_plate.png^digtron_digger_yb_frame.png^digtron_power_connector_side.png", + }, connect_sides = {"bottom", "top", "left", "right", "front", "back"}, drawtype = "nodebox", sounds = digtron.metal_sounds, paramtype = "light", paramtype2 = "facedir", is_ground_content = false, --- node_box = { --- type = "fixed", --- fixed = { --- {-0.5, 0.5, -0.5, 0.5, 0, 0.5}, -- NodeBox1 --- {-0.1875, 0, -0.1875, 0.1875, -0.5, 0.1875}, -- NodeBox2 --- {-0.3125, -0.0625, -0.3125, 0.3125, -0.1875, 0.3125}, -- NodeBox3 --- {-0.3125, -0.25, -0.3125, 0.3125, -0.375, 0.3125}, -- NodeBox4 --- } --- }, connects_to = {"group:technic_hv_cable"}, node_box = { type = "connected", fixed = { - {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, -- NodeBox1 - {-0.1875, 0, -0.1875, 0.1875, 0.5, 0.1875}, -- NodeBox2 - {-0.3125, 0.0625, -0.3125, 0.3125, 0.1875, 0.3125}, -- NodeBox3 - {-0.3125, 0.25, -0.3125, 0.3125, 0.375, 0.3125}, -- NodeBox4 + {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, -- Main body + {-0.1875, 0, -0.1875, 0.1875, 0.5, 0.1875}, -- post + {-0.3125, 0.0625, -0.3125, 0.3125, 0.1875, 0.3125}, -- vane + {-0.3125, 0.25, -0.3125, 0.3125, 0.375, 0.3125}, -- vane }, connect_front = {-size, -size, -0.5, size, size, size}, -- z- connect_back = {-size, -size, size, size, size, 0.5 }, -- z+ @@ -43,15 +55,20 @@ minetest.register_node("digtron:power_connector", { connect_right = {-size, -size, -size, 0.5, size, size}, -- x+ }, + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("formspec", get_formspec_string(0,0)) + end, + technic_run = function(pos, node) local meta = minetest.get_meta(pos) local eu_input = meta:get_int("HV_EU_input") local demand = meta:get_int("HV_EU_demand") - meta:set_string("infotext", S("Digtron Power @1/@2\nRight-click to update", eu_input, demand)) + meta:set_string("infotext", S("Digtron Power @1/@2", eu_input, demand)) end, - on_rightclick = function(pos, node, player, itemstack, pointed_thing) - local layout = DigtronLayout.create(pos, player) + on_receive_fields = function(pos, formname, fields, sender) + local layout = DigtronLayout.create(pos, sender) local max_cost = 0 for _, node_image in pairs(layout.builders) do max_cost = max_cost + digtron.config.build_cost @@ -59,11 +76,22 @@ minetest.register_node("digtron:power_connector", { for _, node_image in pairs(layout.diggers) do max_cost = max_cost + max_dig_cost end + local current_max = max_cost * digtron.config.power_ratio + local meta = minetest.get_meta(pos) - meta:set_int("HV_EU_demand", max_cost * digtron.config.power_ratio) + + if fields.maximize then + meta:set_int("HV_EU_demand", current_max) + elseif fields.value ~= nil then + local number = tonumber(fields.value) or 0 + local number = math.min(math.max(number, 0), current_max) + meta:set_int("HV_EU_demand", number) + end + + meta:set_string("formspec", get_formspec_string(meta:get_int("HV_EU_demand"), current_max)) end, - }) - -technic.register_machine("HV", "digtron:power_connector", technic.receiver)
\ No newline at end of file +if minetest.get_modpath("technic") then + technic.register_machine("HV", "digtron:power_connector", technic.receiver) +end
\ No newline at end of file |