mirror of
https://github.com/mt-mods/led_marquee.git
synced 2025-06-29 14:50:48 +02:00
Compare commits
9 Commits
20180815-4
...
20180815-7
Author | SHA1 | Date | |
---|---|---|---|
161623e869 | |||
d182766236 | |||
09e5607d7a | |||
b9dd38c0de | |||
4fa6d54a4b | |||
157e517663 | |||
e622f94dfc | |||
be7f72dfeb | |||
b33de7a530 |
@ -40,13 +40,13 @@ The panels also respond to these control messages:
|
|||||||
* "off_multi" turns all panels in a lineup off
|
* "off_multi" turns all panels in a lineup off
|
||||||
* "allon_multi" turns on all LEDs of all panels in a lineup.
|
* "allon_multi" turns on all LEDs of all panels in a lineup.
|
||||||
|
|
||||||
A byte value of 0 to 30 will change colors (i.e. string.char(0 to 30) ). Color values 0 to 11 are:
|
A byte value of 0 to 27 will change colors (i.e. string.char(0 to 27) ). Color values 0 to 11 are:
|
||||||
|
|
||||||
Red (0), orange, yellow, lime, green, aqua, cyan, sky blue, blue, violet, magenta, or red-violet (11)
|
Red (0), orange, yellow, lime, green, aqua, cyan, sky blue, blue, violet, magenta, or red-violet (11)
|
||||||
|
|
||||||
Colors 12 to 23 are the same as 0 to 11, but lower brightness.
|
Colors 12 to 23 are the same as 0 to 11, but lower brightness.
|
||||||
|
|
||||||
Colors 23 - 30 are white, light grey, medium grey, dim grey, light blue, brown, and pink.
|
Colors 24 - 27 are white, light grey, medium grey, and dim grey.
|
||||||
|
|
||||||
The left-most/"master" panel will remember the last color used, and defaults to red.
|
The left-most/"master" panel will remember the last color used, and defaults to red.
|
||||||
|
|
||||||
|
63
init.lua
63
init.lua
@ -1,11 +1,9 @@
|
|||||||
-- simple LED marquee mod
|
-- simple LED marquee mod
|
||||||
-- by Vanessa Dannenberg
|
-- by Vanessa Dannenberg
|
||||||
|
|
||||||
led_marquee = {}
|
|
||||||
|
|
||||||
local S
|
local S
|
||||||
if minetest.get_modpath("intllib") then
|
if minetest.get_modpath("intllib") then
|
||||||
S = intllib.Getter()
|
S = intllib.make_gettext_pair()
|
||||||
else
|
else
|
||||||
S = function(s) return s end
|
S = function(s) return s end
|
||||||
end
|
end
|
||||||
@ -58,27 +56,29 @@ local display_string = function(pos, channel, string)
|
|||||||
string = allon
|
string = allon
|
||||||
end
|
end
|
||||||
local padded_string = string.sub(string..padding, 1, 64)
|
local padded_string = string.sub(string..padding, 1, 64)
|
||||||
local fdir = minetest.get_node(pos).param2 % 8
|
local master_fdir = minetest.get_node(pos).param2 % 8
|
||||||
|
local master_meta = minetest.get_meta(pos)
|
||||||
|
local last_color = master_meta:get_int("last_color")
|
||||||
local pos2 = pos
|
local pos2 = pos
|
||||||
local mastermeta = minetest.get_meta(pos)
|
|
||||||
local lastcolor = mastermeta:get_int("lastcolor")
|
if not last_color or last_color < 0 or last_color > 27 then
|
||||||
if not lastcolor or lastcolor < 0 or lastcolor > 30 then
|
last_color = 0
|
||||||
lastcolor = 0
|
master_meta:set_int("last_color", 0)
|
||||||
mastermeta:set_int("lastcolor", 0)
|
|
||||||
end
|
end
|
||||||
for i = 1, 64 do
|
for i = 1, 64 do
|
||||||
local node = minetest.get_node(pos2)
|
local node = minetest.get_node(pos2)
|
||||||
|
local fdir = node.param2 % 8
|
||||||
local meta = minetest.get_meta(pos2)
|
local meta = minetest.get_meta(pos2)
|
||||||
local setchan = meta:get_string("channel")
|
local setchan = meta:get_string("channel")
|
||||||
if not string.match(node.name, "led_marquee:char_") or (setchan ~= nil and setchan ~= "" and setchan ~= channel) then break end
|
if not string.match(node.name, "led_marquee:char_") or (setchan ~= nil and setchan ~= "" and setchan ~= channel) then break end
|
||||||
local asc = string.byte(padded_string, i, i)
|
local asc = string.byte(padded_string, i, i)
|
||||||
if (node.param2 % 8) == fdir and asc > 30 and asc < 256 then
|
if master_fdir == fdir and asc > 30 and asc < 256 then
|
||||||
minetest.swap_node(pos2, { name = "led_marquee:char_"..asc, param2 = (node.param2 % 8) + (lastcolor*8)})
|
minetest.swap_node(pos2, { name = "led_marquee:char_"..asc, param2 = master_fdir + (last_color*8)})
|
||||||
pos2.x = pos2.x + fdir_to_right[fdir+1][1]
|
pos2.x = pos2.x + fdir_to_right[fdir+1][1]
|
||||||
pos2.z = pos2.z + fdir_to_right[fdir+1][2]
|
pos2.z = pos2.z + fdir_to_right[fdir+1][2]
|
||||||
elseif asc < 31 then
|
elseif asc < 28 then
|
||||||
lastcolor = asc
|
last_color = asc
|
||||||
mastermeta:set_int("lastcolor", asc)
|
master_meta:set_int("last_color", asc)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -86,37 +86,38 @@ end
|
|||||||
local on_digiline_receive_string = function(pos, node, channel, msg)
|
local on_digiline_receive_string = function(pos, node, channel, msg)
|
||||||
local meta = minetest.get_meta(pos)
|
local meta = minetest.get_meta(pos)
|
||||||
local setchan = meta:get_string("channel")
|
local setchan = meta:get_string("channel")
|
||||||
local lastcolor = meta:get_int("lastcolor")
|
local last_color = meta:get_int("last_color")
|
||||||
if not lastcolor or lastcolor < 0 or lastcolor > 30 then
|
if not last_color or last_color < 0 or last_color > 27 then
|
||||||
lastcolor = 0
|
last_color = 0
|
||||||
meta:set_int("lastcolor", 0)
|
meta:set_int("last_color", 0)
|
||||||
end
|
end
|
||||||
|
local fdir = node.param2 % 8
|
||||||
|
|
||||||
if setchan ~= channel then return end
|
if setchan ~= channel then return end
|
||||||
if msg and msg ~= "" and type(msg) == "string" then
|
if msg and msg ~= "" and type(msg) == "string" then
|
||||||
if string.len(msg) > 1 then
|
if string.len(msg) > 1 then
|
||||||
if msg == "off" then
|
if msg == "off" then
|
||||||
minetest.swap_node(pos, { name = "led_marquee:char_32", param2 = (node.param2 % 8) + (lastcolor*8)})
|
minetest.swap_node(pos, { name = "led_marquee:char_32", param2 = fdir + (last_color*8)})
|
||||||
elseif msg == "colon" then
|
elseif msg == "colon" then
|
||||||
minetest.swap_node(pos, { name = "led_marquee:char_58", param2 = (node.param2 % 8) + (lastcolor*8)})
|
minetest.swap_node(pos, { name = "led_marquee:char_58", param2 = fdir + (last_color*8)})
|
||||||
elseif msg == "period" then
|
elseif msg == "period" then
|
||||||
minetest.swap_node(pos, { name = "led_marquee:char_46", param2 = (node.param2 % 8) + (lastcolor*8)})
|
minetest.swap_node(pos, { name = "led_marquee:char_46", param2 = fdir + (last_color*8)})
|
||||||
elseif msg == "del" then
|
elseif msg == "del" then
|
||||||
minetest.swap_node(pos, { name = "led_marquee:char_127", param2 = (node.param2 % 8) + (lastcolor*8)})
|
minetest.swap_node(pos, { name = "led_marquee:char_127", param2 = fdir + (last_color*8)})
|
||||||
elseif msg == "allon" then
|
elseif msg == "allon" then
|
||||||
minetest.swap_node(pos, { name = "led_marquee:char_144", param2 = (node.param2 % 8) + (lastcolor*8)})
|
minetest.swap_node(pos, { name = "led_marquee:char_144", param2 = fdir + (last_color*8)})
|
||||||
elseif msg == "cursor" then
|
elseif msg == "cursor" then
|
||||||
minetest.swap_node(pos, { name = "led_marquee:char_31", param2 = (node.param2 % 8) + (lastcolor*8)})
|
minetest.swap_node(pos, { name = "led_marquee:char_31", param2 = fdir + (last_color*8)})
|
||||||
else
|
else
|
||||||
display_string(pos, channel, msg)
|
display_string(pos, channel, msg)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
local asc = string.byte(msg)
|
local asc = string.byte(msg)
|
||||||
if asc > 30 and asc < 256 then
|
if asc > 30 and asc < 256 then
|
||||||
minetest.swap_node(pos, { name = "led_marquee:char_"..asc, param2 = (node.param2 % 8) + (lastcolor*8)})
|
minetest.swap_node(pos, { name = "led_marquee:char_"..asc, param2 = fdir + (last_color*8)})
|
||||||
elseif asc < 31 then
|
elseif asc < 28 then
|
||||||
lastcolor = asc
|
last_color = asc
|
||||||
meta:set_int("lastcolor", asc)
|
meta:set_int("last_color", asc)
|
||||||
elseif msg == "get" then -- get value as ASCII numerical value
|
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,"led_marquee:char_(.+)"))) -- wonderfully horrible string manipulaiton
|
digiline:receptor_send(pos, digiline.rules.default, channel, tonumber(string.match(minetest.get_node(pos).name,"led_marquee:char_(.+)"))) -- wonderfully horrible string manipulaiton
|
||||||
elseif msg == "getstr" then -- get actual char
|
elseif msg == "getstr" then -- get actual char
|
||||||
@ -125,9 +126,9 @@ local on_digiline_receive_string = function(pos, node, channel, msg)
|
|||||||
end
|
end
|
||||||
elseif msg and type(msg) == "number" then
|
elseif msg and type(msg) == "number" then
|
||||||
if msg == 0 then
|
if msg == 0 then
|
||||||
minetest.swap_node(pos, { name = "led_marquee:char_32", param2 = (node.param2 % 8) + (lastcolor*8)})
|
minetest.swap_node(pos, { name = "led_marquee:char_32", param2 = fdir + (last_color*8)})
|
||||||
elseif msg > 30 then
|
elseif msg > 30 then
|
||||||
minetest.swap_node(pos, { name = "led_marquee:char_"..tostring(msg), param2 = (node.param2 % 8) + (lastcolor*8)})
|
minetest.swap_node(pos, { name = "led_marquee:char_"..tostring(msg), param2 = fdir + (last_color*8)})
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -164,7 +165,7 @@ for i = 31, 255 do
|
|||||||
drawtype = "mesh",
|
drawtype = "mesh",
|
||||||
mesh = "led_marquee.obj",
|
mesh = "led_marquee.obj",
|
||||||
tiles = tiles,
|
tiles = tiles,
|
||||||
palette="palette.png",
|
palette="led_marquee_palette.png",
|
||||||
use_texture_alpha = true,
|
use_texture_alpha = true,
|
||||||
groups = groups,
|
groups = groups,
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -25,12 +25,7 @@ v 0.500000 -0.449125 -0.468750
|
|||||||
v -0.500000 -0.449125 -0.468750
|
v -0.500000 -0.449125 -0.468750
|
||||||
v -0.500000 -0.449125 0.468750
|
v -0.500000 -0.449125 0.468750
|
||||||
v 0.500000 -0.449125 0.468750
|
v 0.500000 -0.449125 0.468750
|
||||||
vt 0.667843 0.000000
|
|
||||||
vt 0.667843 0.015513
|
|
||||||
vt 0.681855 0.031026
|
|
||||||
vt 0.681855 0.961799
|
vt 0.681855 0.961799
|
||||||
vt 0.667843 0.977312
|
|
||||||
vt 0.667843 0.992824
|
|
||||||
vt 0.723891 0.992824
|
vt 0.723891 0.992824
|
||||||
vt 0.723891 0.000000
|
vt 0.723891 0.000000
|
||||||
vt 1.000000 0.007175
|
vt 1.000000 0.007175
|
||||||
@ -39,32 +34,37 @@ vt 0.103234 1.000000
|
|||||||
vt 0.103234 0.007175
|
vt 0.103234 0.007175
|
||||||
vt 0.723891 0.000000
|
vt 0.723891 0.000000
|
||||||
vt 0.723891 0.992824
|
vt 0.723891 0.992824
|
||||||
vt 0.667843 0.992824
|
|
||||||
vt 0.667843 0.977312
|
|
||||||
vt 0.681855 0.961799
|
|
||||||
vt 0.681855 0.031026
|
vt 0.681855 0.031026
|
||||||
|
vt 0.003280 0.226388
|
||||||
|
vt 0.900045 0.226388
|
||||||
|
vt 0.900045 0.164337
|
||||||
|
vt 0.003280 0.164337
|
||||||
|
vt 0.900045 0.226388
|
||||||
|
vt 0.003280 0.226388
|
||||||
|
vt 0.003280 0.164337
|
||||||
|
vt 0.900045 0.164337
|
||||||
|
vt 1.000000 0.017400
|
||||||
|
vt 0.000000 -0.000000
|
||||||
|
vt 1.000000 -0.000000
|
||||||
|
vt 1.000000 1.000000
|
||||||
|
vt 0.000000 0.982506
|
||||||
|
vt 1.000000 0.982506
|
||||||
|
vt 0.000000 0.965011
|
||||||
|
vt 0.000000 0.034801
|
||||||
|
vt 1.000000 0.034801
|
||||||
|
vt 0.667843 0.992824
|
||||||
|
vt 0.681855 0.961799
|
||||||
|
vt 0.667843 0.977312
|
||||||
vt 0.667843 0.015513
|
vt 0.667843 0.015513
|
||||||
vt 0.667843 0.000000
|
vt 0.667843 0.000000
|
||||||
vt 0.003280 0.226388
|
vt 0.667843 0.000000
|
||||||
vt 0.900045 0.226388
|
vt 0.681855 0.031026
|
||||||
vt 0.900045 0.164337
|
vt 0.667843 0.015513
|
||||||
vt 0.003280 0.164337
|
vt 0.667843 0.977312
|
||||||
vt 0.900045 0.226388
|
vt 0.667843 0.992824
|
||||||
vt 0.003280 0.226388
|
|
||||||
vt 0.003280 0.164337
|
|
||||||
vt 0.900045 0.164337
|
|
||||||
vt 1.000000 -0.000000
|
|
||||||
vt 1.000000 0.017400
|
|
||||||
vt 0.000000 0.017400
|
vt 0.000000 0.017400
|
||||||
vt 0.000000 -0.000000
|
|
||||||
vt 1.000000 0.982506
|
|
||||||
vt 1.000000 1.000000
|
|
||||||
vt 0.000000 1.000000
|
vt 0.000000 1.000000
|
||||||
vt 0.000000 0.982506
|
|
||||||
vt 0.000000 0.965011
|
|
||||||
vt 1.000000 0.965011
|
vt 1.000000 0.965011
|
||||||
vt 1.000000 0.034801
|
|
||||||
vt 0.000000 0.034801
|
|
||||||
vt 0.000000 0.000000
|
vt 0.000000 0.000000
|
||||||
vt 1.000000 0.000000
|
vt 1.000000 0.000000
|
||||||
vt 1.000000 1.000000
|
vt 1.000000 1.000000
|
||||||
@ -73,25 +73,39 @@ vt 0.000000 0.000000
|
|||||||
vt 1.000000 0.000000
|
vt 1.000000 0.000000
|
||||||
vt 1.000000 1.000000
|
vt 1.000000 1.000000
|
||||||
vt 0.000000 1.000000
|
vt 0.000000 1.000000
|
||||||
vn 1.0000 0.0000 -0.0000
|
vn 1.0000 0.0000 0.0000
|
||||||
vn 0.0000 -1.0000 0.0000
|
vn 0.0000 -1.0000 -0.0000
|
||||||
vn -1.0000 0.0000 0.0000
|
vn -1.0000 0.0000 0.0000
|
||||||
vn -0.0000 -0.0000 -1.0000
|
vn 0.0000 0.0000 -1.0000
|
||||||
vn 0.0000 0.0000 1.0000
|
vn -0.0000 0.0000 1.0000
|
||||||
vn -0.0000 1.0000 0.0000
|
vn -0.0000 1.0000 0.0000
|
||||||
vn -0.0000 0.7071 -0.7071
|
vn -0.0000 0.7071 -0.7071
|
||||||
vn -0.0000 0.7071 0.7071
|
vn -0.0000 0.7071 0.7071
|
||||||
g Cube_Cube_LEDs_Cube_Cube_LEDs_base
|
g Cube_Cube_LEDs_Cube_Cube_LEDs_base
|
||||||
s off
|
s off
|
||||||
f 5/1/1 6/2/1 7/3/1 8/4/1 9/5/1 10/6/1 11/7/1 12/8/1
|
f 8/1/1 11/2/1 12/3/1
|
||||||
f 12/9/2 11/10/2 13/11/2 14/12/2
|
f 12/4/2 11/5/2 13/6/2 14/7/2
|
||||||
f 14/13/3 13/14/3 15/15/3 16/16/3 17/17/3 18/18/3 19/19/3 20/20/3
|
f 14/8/3 13/9/3 18/10/3
|
||||||
f 12/21/4 14/22/4 20/23/4 5/24/4
|
f 12/11/4 14/12/4 20/13/4 5/14/4
|
||||||
f 13/25/5 11/26/5 10/27/5 15/28/5
|
f 13/15/5 11/16/5 10/17/5 15/18/5
|
||||||
f 20/29/6 19/30/6 6/31/6 5/32/6
|
f 19/19/6 5/20/6 20/21/6
|
||||||
f 16/33/6 15/34/6 10/35/6 9/36/6
|
f 15/22/6 9/23/6 16/24/6
|
||||||
f 9/36/7 8/37/7 17/38/7 16/33/7
|
f 8/25/7 16/24/7 9/23/7
|
||||||
f 18/39/8 7/40/8 6/31/8 19/30/8
|
f 7/26/8 19/19/8 18/27/8
|
||||||
|
f 13/9/3 15/28/3 17/29/3
|
||||||
|
f 15/28/3 16/30/3 17/29/3
|
||||||
|
f 19/31/3 20/32/3 18/10/3
|
||||||
|
f 20/32/3 14/8/3 18/10/3
|
||||||
|
f 13/9/3 17/29/3 18/10/3
|
||||||
|
f 12/3/1 5/33/1 7/34/1
|
||||||
|
f 5/33/1 6/35/1 7/34/1
|
||||||
|
f 9/36/1 10/37/1 8/1/1
|
||||||
|
f 10/37/1 11/2/1 8/1/1
|
||||||
|
f 12/3/1 7/34/1 8/1/1
|
||||||
|
f 7/26/8 6/38/8 19/19/8
|
||||||
|
f 19/19/6 6/38/6 5/20/6
|
||||||
|
f 15/22/6 10/39/6 9/23/6
|
||||||
|
f 8/25/7 17/40/7 16/24/7
|
||||||
g Cube_Cube_LEDs_Cube_Cube_LEDs_leds_off
|
g Cube_Cube_LEDs_Cube_Cube_LEDs_leds_off
|
||||||
f 1/41/6 2/42/6 3/43/6 4/44/6
|
f 1/41/6 2/42/6 3/43/6 4/44/6
|
||||||
g Cube_Cube_LEDs_Cube_Cube_LEDs_leds_on
|
g Cube_Cube_LEDs_Cube_Cube_LEDs_leds_on
|
||||||
|
BIN
textures/led_marquee_palette.png
Normal file
BIN
textures/led_marquee_palette.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 120 B |
Binary file not shown.
Before Width: | Height: | Size: 131 B |
Reference in New Issue
Block a user