diff --git a/computers/demo.lua b/computers/demo.lua index 00ca7b3..87ff13b 100644 --- a/computers/demo.lua +++ b/computers/demo.lua @@ -20,202 +20,4 @@ minetest.override_item("computers:server_on", { computers.load_gui(pos, node, clicker) end, groups = old_node.groups -}) - -minetest.override_item("computers:router", { - on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) - local formspec = { - formspec_version = 4, - { - type = "size", - w = 10, - h = 5, - }, - { - type = "no_prepend" - }, - { - type = "bgcolor", - bgcolor = "black", - fullscreen = "neither" - }, - { - type = "background9", - x = 0, - y = 0, - w = 10, - h = 5, - texture_name = "kuto_button.png^[combine:16x16^[noalpha^[colorize:#ffffff70", - auto_clip = false, - middle_x = 4, - middle_y = 4, - }, - { - type = "hypertext", - name = "label", - x = 0, - y = 0, - w = 10, - h = 2, - text = "
Choose Option Below
", - }, - { - type = "button", - x = 0.5, - y = 3.5, - w = 4, - h = 1, - name = "newnetwork_btn", - label = "New Network", - on_event = function(form, player, element, value, fields) - if element.label == "New Network" then - element.label = "Submit" - table.remove(form, computers.formspec.get_index_by_name(form, "existingnetwork_btn")) - form[computers.formspec.get_index_by_name(form, "label")].text = [[ -
Enter New Network Name
- ]] - table.insert( - form, - { - type = "box", - x = 3, - y = 1.75, - w = 4, - h = 1, - color = "#ffffff" - } - ) - table.insert( - form, - { - type = "field", - x = 3, - y = 1.75, - w = 4, - h = 1, - name = "id_field", - close_on_enter = false, - props = { - border = false, - }, - } - ) - else - if fields.id_field == "" and not computers.formspec.get_index_by_name(form, "warning") then - table.insert( - form, - { - type = "hypertext", - name = "warning", - x = 5.5, - y = 3.5, - w = 4, - h = 1, - text = [[ - -
- ]] - } - ) - elseif fields.id_field ~= "" then - local status, id = computers.networks.create(player, fields.id_field) - if status then - form = nil - minetest.get_meta(pos):set_string("net_id", id) - computers.networks.add_device(id, pos) - computers.api.chat_send_player(player, "network " .. fields.id_field .. " created") - computers.formspec.close_formspec(player) - elseif not computers.formspec.get_index_by_name(form, "warning") then - table.insert( - form, - { - type = "hypertext", - name = "warning", - x = 5.5, - y = 3.5, - w = 4, - h = 1, - text = [[ - -
- ]] - } - ) - end - end - end - --minetest.chat_send_all("test") - - if form then return form end - end, - props = { - border = false, - bgimg = "kuto_button.png^[combine:16x16^[noalpha^[colorize:#ffffff70", - bgimg_hovered = "kuto_button.png^[combine:16x16^[noalpha^[colorize:#ffffff90", - bgimg_middle = "4,4", - } - }, - { - type = "button", - x = 5.5, - y = 3.5, - w = 4, - h = 1, - name = "existingnetwork_btn", - label = "Existing Network", - on_event = function(form, player, element, value, fields) - if element.label == "Existing Network" then - element.label = "Submit" - table.remove(form, computers.formspec.get_index_by_name(form, "newnetwork_btn")) - form[computers.formspec.get_index_by_name(form, "label")].text = [[ -
Enter Network
- ]] - table.insert( - form, - { - type = "box", - x = 3, - y = 1.75, - w = 4, - h = 1, - color = "#ffffff" - } - ) - table.insert( - form, - { - type = "field", - x = 3, - y = 1.75, - w = 4, - h = 1, - name = "id_field", - close_on_enter = false, - props = { - border = false, - }, - } - ) - else - minetest.chat_send_all("submitted") - end - - return form - end, - props = { - border = false, - bgimg = "kuto_button.png^[combine:16x16^[noalpha^[colorize:#ffffff70", - bgimg_hovered = "kuto_button.png^[combine:16x16^[noalpha^[colorize:#ffffff90", - bgimg_middle = "4,4", - } - }, - } - - if minetest.get_meta(pos):get("net_id") then - local net_name = computers.networks.get_net_name(minetest.get_meta(pos):get("net_id")) - computers.api.chat_send_player(clicker, "router attached to network: " .. net_name) - else - computers.formspec.show_formspec(clicker, "computers:router", formspec) - end - end }) \ No newline at end of file diff --git a/computers/nodes/init.lua b/computers/nodes/init.lua index f15f95d..bea7750 100644 --- a/computers/nodes/init.lua +++ b/computers/nodes/init.lua @@ -2,6 +2,7 @@ local path = computers.modpath .. "/nodes" dofile(path .. "/node_api.lua") dofile(path .. "/nodes.lua") +dofile(path .. "/router.lua") dofile(path .. "/tetris.lua") dofile(path .. "/aliases.lua") diff --git a/computers/nodes/nodes.lua b/computers/nodes/nodes.lua index 2454b6e..b9f26e9 100644 --- a/computers/nodes/nodes.lua +++ b/computers/nodes/nodes.lua @@ -154,38 +154,6 @@ minetest.register_node("computers:monitor_on", { end }) ---WIFI Router (linksys look-a-like) -minetest.register_node("computers:router", { - description = S("WIFI Router"), - inventory_image = "computers_router_inv.png", - tiles = { - "computers_router_t.png", - "computers_router_bt.png", - "computers_router_l.png", - "computers_router_r.png", - "computers_router_b.png", - { - name = "computers_router_f_animated.png", - animation = {type="vertical_frames", aspect_w=32, aspect_h=32, length=1.0} - }, - }, --"computers_router_f.png"}, - paramtype = "light", - paramtype2 = "facedir", - walkable = false, - groups = {snappy=3}, - sound = default and default.node_sound_wood_defaults() or nil, - drawtype = "nodebox", - node_box = { - type = "fixed", - fixed = { - {-0.25, -0.5, -0.0625, 0.25, -0.375, 0.3125}, - {-0.1875, -0.4375, 0.3125, -0.125, -0.1875, 0.375}, - {0.125, -0.4375, 0.3125, 0.1875, -0.1875, 0.375}, - {-0.0625, -0.4375, 0.3125, 0.0625, -0.25, 0.375} - } - } -}) - local pct_cbox = { type = "fixed", fixed = { -0.1875, -0.5, -0.36, 0.1875, 0.34, 0.46 } diff --git a/computers/nodes/router.lua b/computers/nodes/router.lua new file mode 100644 index 0000000..bcd444e --- /dev/null +++ b/computers/nodes/router.lua @@ -0,0 +1,227 @@ +local S = minetest.get_translator("computers") + +minetest.register_node("computers:router", { + description = S("WIFI Router"), + inventory_image = "computers_router_inv.png", + tiles = { + "computers_router_t.png", + "computers_router_bt.png", + "computers_router_l.png", + "computers_router_r.png", + "computers_router_b.png", + { + name = "computers_router_f_animated.png", + animation = {type="vertical_frames", aspect_w=32, aspect_h=32, length=1.0} + }, + }, --"computers_router_f.png"}, + paramtype = "light", + paramtype2 = "facedir", + walkable = false, + groups = {snappy=3}, + sound = default and default.node_sound_wood_defaults() or nil, + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + {-0.25, -0.5, -0.0625, 0.25, -0.375, 0.3125}, + {-0.1875, -0.4375, 0.3125, -0.125, -0.1875, 0.375}, + {0.125, -0.4375, 0.3125, 0.1875, -0.1875, 0.375}, + {-0.0625, -0.4375, 0.3125, 0.0625, -0.25, 0.375} + } + }, + on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) + local formspec = { + formspec_version = 4, + { + type = "size", + w = 10, + h = 5, + }, + { + type = "no_prepend" + }, + { + type = "bgcolor", + bgcolor = "black", + fullscreen = "neither" + }, + { + type = "background9", + x = 0, + y = 0, + w = 10, + h = 5, + texture_name = "kuto_button.png^[combine:16x16^[noalpha^[colorize:#ffffff70", + auto_clip = false, + middle_x = 4, + middle_y = 4, + }, + { + type = "hypertext", + name = "label", + x = 0, + y = 0, + w = 10, + h = 2, + text = "
Choose Option Below
", + }, + { + type = "button", + x = 0.5, + y = 3.5, + w = 4, + h = 1, + name = "newnetwork_btn", + label = "New Network", + on_event = function(form, player, element, value, fields) + if element.label == "New Network" then + element.label = "Submit" + table.remove(form, computers.formspec.get_index_by_name(form, "existingnetwork_btn")) + form[computers.formspec.get_index_by_name(form, "label")].text = [[ +
Enter New Network Name
+ ]] + table.insert( + form, + { + type = "box", + x = 3, + y = 1.75, + w = 4, + h = 1, + color = "#ffffff" + } + ) + table.insert( + form, + { + type = "field", + x = 3, + y = 1.75, + w = 4, + h = 1, + name = "id_field", + close_on_enter = false, + props = { + border = false, + }, + } + ) + else + if fields.id_field == "" and not computers.formspec.get_index_by_name(form, "warning") then + table.insert( + form, + { + type = "hypertext", + name = "warning", + x = 5.5, + y = 3.5, + w = 4, + h = 1, + text = [[ + +
+ ]] + } + ) + elseif fields.id_field ~= "" then + local status, id = computers.networks.create(player, fields.id_field) + if status then + form = nil + minetest.get_meta(pos):set_string("net_id", id) + computers.networks.add_device(id, pos) + computers.api.chat_send_player(player, "network " .. fields.id_field .. " created") + computers.formspec.close_formspec(player) + elseif not computers.formspec.get_index_by_name(form, "warning") then + table.insert( + form, + { + type = "hypertext", + name = "warning", + x = 5.5, + y = 3.5, + w = 4, + h = 1, + text = [[ + +
+ ]] + } + ) + end + end + end + --minetest.chat_send_all("test") + + if form then return form end + end, + props = { + border = false, + bgimg = "kuto_button.png^[combine:16x16^[noalpha^[colorize:#ffffff70", + bgimg_hovered = "kuto_button.png^[combine:16x16^[noalpha^[colorize:#ffffff90", + bgimg_middle = "4,4", + } + }, + { + type = "button", + x = 5.5, + y = 3.5, + w = 4, + h = 1, + name = "existingnetwork_btn", + label = "Existing Network", + on_event = function(form, player, element, value, fields) + if element.label == "Existing Network" then + element.label = "Submit" + table.remove(form, computers.formspec.get_index_by_name(form, "newnetwork_btn")) + form[computers.formspec.get_index_by_name(form, "label")].text = [[ +
Enter Network
+ ]] + table.insert( + form, + { + type = "box", + x = 3, + y = 1.75, + w = 4, + h = 1, + color = "#ffffff" + } + ) + table.insert( + form, + { + type = "field", + x = 3, + y = 1.75, + w = 4, + h = 1, + name = "id_field", + close_on_enter = false, + props = { + border = false, + }, + } + ) + else + minetest.chat_send_all("submitted") + end + + return form + end, + props = { + border = false, + bgimg = "kuto_button.png^[combine:16x16^[noalpha^[colorize:#ffffff70", + bgimg_hovered = "kuto_button.png^[combine:16x16^[noalpha^[colorize:#ffffff90", + bgimg_middle = "4,4", + } + }, + } + + if minetest.get_meta(pos):get("net_id") then + local net_name = computers.networks.get_net_name(minetest.get_meta(pos):get("net_id")) + computers.api.chat_send_player(clicker, "router attached to network: " .. net_name) + else + computers.formspec.show_formspec(clicker, "computers:router", formspec) + end + end +}) \ No newline at end of file