diff --git a/init.lua b/init.lua index dea3ff6..436b73a 100644 --- a/init.lua +++ b/init.lua @@ -250,6 +250,7 @@ Map of display wires: ]]-- local alnum_chars = { + { string.char(31), { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 } }, -- "cursor" segment { " ", { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } }, -- 32 { "!", { 0,0,0,0,1,1,0,0,0,0,0,0,0,0,0 } }, { '"', { 0,0,0,0,0,1,0,1,0,0,0,0,0,0,0 } }, @@ -346,8 +347,7 @@ local alnum_chars = { { "}", { 1,0,0,1,0,0,0,0,1,1,1,0,0,0,0 } }, { "~", { 0,1,0,0,0,1,1,0,0,1,0,0,0,0,0 } }, { string.char(127), { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,0 } }, -- "DEL" - { string.char(128), { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 } }, -- all-on - { string.char(129), { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 } }, -- "cursor" segment + { string.char(144), { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 } }, -- all-on } local fdir_to_right = { @@ -379,7 +379,7 @@ local display_string = function(pos, channel, string) local setchan = meta:get_string("channel") if not string.match(node.name, "nixie_tubes:alnum_") or (setchan ~= nil and setchan ~= "" and setchan ~= channel) then break end local asc = string.byte(padded_string, i, i) - if node.param2 == fdir and asc > 31 and alnum_chars[asc - 31] then + if node.param2 == fdir and ((asc > 30 and asc < 128) or asc == 144) then minetest.swap_node(pos2, { name = "nixie_tubes:alnum_"..asc, param2 = node.param2}) end pos2.x = pos2.x + fdir_to_right[fdir+1][1] @@ -402,15 +402,15 @@ local on_digiline_receive_alnum = function(pos, node, channel, msg) elseif msg == "del" then minetest.swap_node(pos, { name = "nixie_tubes:alnum_127", param2 = node.param2}) elseif msg == "allon" then - minetest.swap_node(pos, { name = "nixie_tubes:alnum_128", param2 = node.param2}) + minetest.swap_node(pos, { name = "nixie_tubes:alnum_144", param2 = node.param2}) elseif msg == "cursor" then - minetest.swap_node(pos, { name = "nixie_tubes:alnum_129", param2 = node.param2}) + minetest.swap_node(pos, { name = "nixie_tubes:alnum_31", param2 = node.param2}) else display_string(pos, channel, msg) end else local asc = string.byte(msg) - if asc > 31 and alnum_chars[asc - 31] then + if (asc > 30 and asc < 128) or asc == 144 then minetest.swap_node(pos, { name = "nixie_tubes:alnum_"..asc, param2 = node.param2}) elseif msg == "get" then -- get value as ASCII numerical value digiline:receptor_send(pos, digiline.rules.default, channel, tonumber(string.match(minetest.get_node(pos).name,"nixie_tubes:alnum_(.+)"))) -- wonderfully horrible string manipulaiton @@ -421,7 +421,7 @@ local on_digiline_receive_alnum = function(pos, node, channel, msg) elseif msg and type(msg) == "number" then if msg == 0 then minetest.swap_node(pos, { name = "nixie_tubes:alnum_32", param2 = node.param2}) - elseif msg > 31 and alnum_chars[msg - 31] ~= nil then + elseif (msg > 30 and msg < 128) or msg == 144 then minetest.swap_node(pos, { name = "nixie_tubes:alnum_"..tostring(msg), param2 = node.param2}) end end