1
0
mirror of https://github.com/mt-mods/led_marquee.git synced 2025-06-28 14:26:18 +02:00

9 Commits

Author SHA1 Message Date
161623e869 fix minor mesh/triangulation glitch 2018-08-15 19:51:53 -04:00
d182766236 reduce color palette to 28 entries to make room for future control codes
(loses a dupe brown entry, and light blue and pink, which don't really work
well on a LED display)
2018-08-15 19:32:56 -04:00
09e5607d7a fix typo in docs 2018-08-15 19:17:39 -04:00
b9dd38c0de re-format palette to power-of-2 resolution 2018-08-15 19:05:05 -04:00
4fa6d54a4b fix undefined fdir in one spot
make some vars more readable
consolidate/cache fdir usage
2018-08-15 18:53:58 -04:00
157e517663 rename palette 2018-08-15 18:35:29 -04:00
e622f94dfc Merge branch 'led_marquee_gettext' into 'master'
Change intlib Getter (deprecated) to make_gettext_pair.

See merge request VanessaE/led_marquee!1
2018-08-15 22:13:43 +00:00
be7f72dfeb remove unused global 2018-08-15 18:12:35 -04:00
b33de7a530 Change intlib Getter (deprecated) to make_gettext_pair. 2018-08-15 10:09:30 -07:00
7 changed files with 86 additions and 71 deletions

View File

@ -40,13 +40,13 @@ The panels also respond to these control messages:
* "off_multi" turns all panels in a lineup off
* "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)
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.

View File

@ -1,11 +1,9 @@
-- simple LED marquee mod
-- by Vanessa Dannenberg
led_marquee = {}
local S
if minetest.get_modpath("intllib") then
S = intllib.Getter()
S = intllib.make_gettext_pair()
else
S = function(s) return s end
end
@ -58,27 +56,29 @@ local display_string = function(pos, channel, string)
string = allon
end
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 mastermeta = minetest.get_meta(pos)
local lastcolor = mastermeta:get_int("lastcolor")
if not lastcolor or lastcolor < 0 or lastcolor > 30 then
lastcolor = 0
mastermeta:set_int("lastcolor", 0)
if not last_color or last_color < 0 or last_color > 27 then
last_color = 0
master_meta:set_int("last_color", 0)
end
for i = 1, 64 do
local node = minetest.get_node(pos2)
local fdir = node.param2 % 8
local meta = minetest.get_meta(pos2)
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
local asc = string.byte(padded_string, i, i)
if (node.param2 % 8) == fdir and asc > 30 and asc < 256 then
minetest.swap_node(pos2, { name = "led_marquee:char_"..asc, param2 = (node.param2 % 8) + (lastcolor*8)})
if master_fdir == fdir and asc > 30 and asc < 256 then
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.z = pos2.z + fdir_to_right[fdir+1][2]
elseif asc < 31 then
lastcolor = asc
mastermeta:set_int("lastcolor", asc)
elseif asc < 28 then
last_color = asc
master_meta:set_int("last_color", asc)
end
end
end
@ -86,37 +86,38 @@ end
local on_digiline_receive_string = function(pos, node, channel, msg)
local meta = minetest.get_meta(pos)
local setchan = meta:get_string("channel")
local lastcolor = meta:get_int("lastcolor")
if not lastcolor or lastcolor < 0 or lastcolor > 30 then
lastcolor = 0
meta:set_int("lastcolor", 0)
local last_color = meta:get_int("last_color")
if not last_color or last_color < 0 or last_color > 27 then
last_color = 0
meta:set_int("last_color", 0)
end
local fdir = node.param2 % 8
if setchan ~= channel then return end
if msg and msg ~= "" and type(msg) == "string" then
if string.len(msg) > 1 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
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
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
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
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
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
display_string(pos, channel, msg)
end
else
local asc = string.byte(msg)
if asc > 30 and asc < 256 then
minetest.swap_node(pos, { name = "led_marquee:char_"..asc, param2 = (node.param2 % 8) + (lastcolor*8)})
elseif asc < 31 then
lastcolor = asc
meta:set_int("lastcolor", asc)
minetest.swap_node(pos, { name = "led_marquee:char_"..asc, param2 = fdir + (last_color*8)})
elseif asc < 28 then
last_color = asc
meta:set_int("last_color", asc)
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
elseif msg == "getstr" then -- get actual char
@ -125,9 +126,9 @@ local on_digiline_receive_string = function(pos, node, channel, msg)
end
elseif msg and type(msg) == "number" 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
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
@ -164,7 +165,7 @@ for i = 31, 255 do
drawtype = "mesh",
mesh = "led_marquee.obj",
tiles = tiles,
palette="palette.png",
palette="led_marquee_palette.png",
use_texture_alpha = true,
groups = groups,
paramtype = "light",

Binary file not shown.

Binary file not shown.

View File

@ -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
vt 0.667843 0.000000
vt 0.667843 0.015513
vt 0.681855 0.031026
vt 0.681855 0.961799
vt 0.667843 0.977312
vt 0.667843 0.992824
vt 0.723891 0.992824
vt 0.723891 0.000000
vt 1.000000 0.007175
@ -39,32 +34,37 @@ vt 0.103234 1.000000
vt 0.103234 0.007175
vt 0.723891 0.000000
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.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.000000
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.000000
vt 1.000000 0.017400
vt 0.667843 0.000000
vt 0.681855 0.031026
vt 0.667843 0.015513
vt 0.667843 0.977312
vt 0.667843 0.992824
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 0.982506
vt 0.000000 0.965011
vt 1.000000 0.965011
vt 1.000000 0.034801
vt 0.000000 0.034801
vt 0.000000 0.000000
vt 1.000000 0.000000
vt 1.000000 1.000000
@ -73,25 +73,39 @@ vt 0.000000 0.000000
vt 1.000000 0.000000
vt 1.000000 1.000000
vt 0.000000 1.000000
vn 1.0000 0.0000 -0.0000
vn 0.0000 -1.0000 0.0000
vn 1.0000 0.0000 0.0000
vn 0.0000 -1.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 0.7071 -0.7071
vn -0.0000 0.7071 0.7071
g Cube_Cube_LEDs_Cube_Cube_LEDs_base
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 12/9/2 11/10/2 13/11/2 14/12/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 12/21/4 14/22/4 20/23/4 5/24/4
f 13/25/5 11/26/5 10/27/5 15/28/5
f 20/29/6 19/30/6 6/31/6 5/32/6
f 16/33/6 15/34/6 10/35/6 9/36/6
f 9/36/7 8/37/7 17/38/7 16/33/7
f 18/39/8 7/40/8 6/31/8 19/30/8
f 8/1/1 11/2/1 12/3/1
f 12/4/2 11/5/2 13/6/2 14/7/2
f 14/8/3 13/9/3 18/10/3
f 12/11/4 14/12/4 20/13/4 5/14/4
f 13/15/5 11/16/5 10/17/5 15/18/5
f 19/19/6 5/20/6 20/21/6
f 15/22/6 9/23/6 16/24/6
f 8/25/7 16/24/7 9/23/7
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
f 1/41/6 2/42/6 3/43/6 4/44/6
g Cube_Cube_LEDs_Cube_Cube_LEDs_leds_on

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 B