Salīdzināt revīzijas
10 Revīzijas
20190430
...
79bc4755dd
| Autors | SHA1 | Datums | |
|---|---|---|---|
| 79bc4755dd | |||
|
|
642aec419a | ||
|
|
caf6e24d04 | ||
| b081594e2c | |||
|
|
31a938693a | ||
|
|
45c89704f0 | ||
|
|
8d3a0e92de | ||
|
|
db78e3dcdb | ||
|
|
da1deecb4c | ||
|
|
df30ce9477 |
76
init.lua
@@ -2,6 +2,13 @@
|
||||
-- by Vanessa Dannenberg
|
||||
|
||||
led_marquee = {}
|
||||
led_marquee.scheduled_messages = {}
|
||||
|
||||
led_marquee.message_minimum_time = tonumber(minetest.settings:get("led_marquee_message_minimum_time")) or 0.5
|
||||
|
||||
led_marquee.message_schedule_dtime = tonumber(minetest.settings:get("led_marquee_message_schedule_dtime")) or 0.2
|
||||
led_marquee.message_schedule_size = tonumber(minetest.settings:get("led_marquee_message_schedule_size")) or 10
|
||||
led_marquee.relay_timer = 0
|
||||
|
||||
local S
|
||||
if minetest.get_modpath("intllib") then
|
||||
@@ -128,7 +135,12 @@ local make_iso = function(s)
|
||||
local s2 = ""
|
||||
while i <= string.len(s) do
|
||||
if string.byte(s,i) > 159 then
|
||||
s2 = s2..string.char(get_iso(string.sub(s, i, i+1)))
|
||||
local ciso = get_iso(string.sub(s, i, i+1))
|
||||
if ciso >= 0 and ciso < 256 then
|
||||
s2 = s2..string.char(ciso)
|
||||
else
|
||||
s2 = s2..string.char(127)
|
||||
end
|
||||
i = i + 2
|
||||
else
|
||||
s2 = s2..string.sub(s, i, i)
|
||||
@@ -143,7 +155,7 @@ end
|
||||
led_marquee.set_timer = function(pos, timeout)
|
||||
local timer = minetest.get_node_timer(pos)
|
||||
timer:stop()
|
||||
if not timeout or timeout < 0.2 or timeout > 5 then return false end
|
||||
if not timeout or timeout < led_marquee.message_minimum_time or timeout > 5 then return false end
|
||||
|
||||
if timeout > 0 then
|
||||
local meta = minetest.get_meta(pos)
|
||||
@@ -184,7 +196,7 @@ led_marquee.scroll_text = function(pos, elapsed, skip)
|
||||
break
|
||||
end
|
||||
end
|
||||
led_marquee.display_msg(pos, channel, "/"..colorchar..string.sub(msg, f)..string.rep(" ", skip + 1))
|
||||
led_marquee.schedule_msg(pos, channel, "/"..colorchar..string.sub(msg, f)..string.rep(" ", skip + 1))
|
||||
|
||||
meta:set_int("index", f)
|
||||
if not elapsed or elapsed < 0.2 then return false end
|
||||
@@ -213,6 +225,27 @@ led_marquee.decode_color = function(msg)
|
||||
|
||||
end
|
||||
|
||||
minetest.register_globalstep(function(dtime)
|
||||
if dtime <= led_marquee.message_schedule_dtime
|
||||
and (#led_marquee.scheduled_messages) > 0 then
|
||||
led_marquee.display_msg(
|
||||
led_marquee.scheduled_messages[1].pos,
|
||||
led_marquee.scheduled_messages[1].channel,
|
||||
led_marquee.scheduled_messages[1].msg
|
||||
)
|
||||
end
|
||||
table.remove(led_marquee.scheduled_messages, 1)
|
||||
end)
|
||||
|
||||
led_marquee.schedule_msg = function(pos, channel, msg)
|
||||
local idx = #led_marquee.scheduled_messages
|
||||
led_marquee.scheduled_messages[idx+1] = { pos=pos, channel=channel, msg=msg }
|
||||
|
||||
if idx >= led_marquee.message_schedule_size then
|
||||
table.remove(led_marquee.scheduled_messages, 1)
|
||||
end
|
||||
end
|
||||
|
||||
led_marquee.display_msg = function(pos, channel, msg)
|
||||
msg = string.sub(msg, 1, 6144).." "
|
||||
if string.sub(msg,1,1) == string.char(255) then -- treat it as incoming UTF-8
|
||||
@@ -312,13 +345,13 @@ local on_digiline_receive_string = function(pos, node, channel, msg)
|
||||
led_marquee.set_timer(pos, 0)
|
||||
msg = string.rep(" ", 2048)
|
||||
meta:set_string("last_msg", msg)
|
||||
led_marquee.display_msg(pos, channel, msg)
|
||||
led_marquee.schedule_msg(pos, channel, msg)
|
||||
meta:set_int("index", 1)
|
||||
elseif msg == "allon" then
|
||||
led_marquee.set_timer(pos, 0)
|
||||
msg = string.rep(string.char(144), 2048)
|
||||
meta:set_string("last_msg", msg)
|
||||
led_marquee.display_msg(pos, channel, msg)
|
||||
led_marquee.schedule_msg(pos, channel, msg)
|
||||
meta:set_int("index", 1)
|
||||
elseif msg == "start_scroll" then
|
||||
local timeout = meta:get_int("timeout")
|
||||
@@ -327,8 +360,8 @@ local on_digiline_receive_string = function(pos, node, channel, msg)
|
||||
led_marquee.set_timer(pos, 0)
|
||||
return
|
||||
elseif string.sub(msg, 1, 12) == "scroll_speed" then
|
||||
local timeout = tonumber(string.sub(msg, 13))
|
||||
led_marquee.set_timer(pos, timeout)
|
||||
local timeout = tonumber(string.sub(msg, 13)) or 0
|
||||
led_marquee.set_timer(pos, math.max(timeout, led_marquee.message_minimum_time))
|
||||
elseif string.sub(msg, 1, 11) == "scroll_step" then
|
||||
local skip = tonumber(string.sub(msg, 12))
|
||||
led_marquee.scroll_text(pos, nil, skip)
|
||||
@@ -343,7 +376,7 @@ local on_digiline_receive_string = function(pos, node, channel, msg)
|
||||
led_marquee.set_timer(pos, 0)
|
||||
local last_msg = meta:get_string("last_msg")
|
||||
meta:set_string("last_msg", msg)
|
||||
led_marquee.display_msg(pos, channel, msg)
|
||||
led_marquee.schedule_msg(pos, channel, msg)
|
||||
if last_msg ~= msg then
|
||||
meta:set_int("index", 1)
|
||||
end
|
||||
@@ -358,7 +391,7 @@ local on_digiline_receive_string = function(pos, node, channel, msg)
|
||||
end
|
||||
elseif msg and type(msg) == "number" then
|
||||
meta:set_string("last_msg", tostring(msg))
|
||||
led_marquee.display_msg(pos, channel, tostring(msg))
|
||||
led_marquee.schedule_msg(pos, channel, tostring(msg))
|
||||
meta:set_int("index", 1)
|
||||
end
|
||||
end
|
||||
@@ -369,23 +402,17 @@ for i = 31, 255 do
|
||||
local groups = { cracky = 2, not_in_creative_inventory = 1}
|
||||
local light = LIGHT_MAX-2
|
||||
local description = S("LED marquee panel ("..i..")")
|
||||
local tiles = {
|
||||
{ name="led_marquee_base.png", color="white"},
|
||||
{ name="led_marquee_leds_off.png", color="white"},
|
||||
"led_marquee_char_"..i..".png",
|
||||
}
|
||||
local leds = "led_marquee_char_"..i..".png^[mask:led_marquee_leds_on.png"
|
||||
|
||||
if i == 31 then
|
||||
tiles = {
|
||||
{ name="led_marquee_base.png", color="white"},
|
||||
{ name="led_marquee_leds_off.png", color="white"},
|
||||
{
|
||||
name = "led_marquee_char_31.png",
|
||||
animation = {type = "vertical_frames", aspect_w = 32, aspect_h = 32, length = 0.75}
|
||||
}
|
||||
leds ={
|
||||
name = "led_marquee_char_31.png^[mask:led_marquee_leds_on_cursor.png",
|
||||
animation = {type = "vertical_frames", aspect_w = 32, aspect_h = 32, length = 0.75}
|
||||
}
|
||||
end
|
||||
|
||||
local wimage
|
||||
|
||||
if i == 32 then
|
||||
groups = {cracky = 2}
|
||||
light = nil
|
||||
@@ -397,7 +424,11 @@ for i = 31, 255 do
|
||||
description = description,
|
||||
drawtype = "mesh",
|
||||
mesh = "led_marquee.obj",
|
||||
tiles = tiles,
|
||||
tiles = {
|
||||
{ name = "led_marquee_base.png", color = "white" },
|
||||
{ name = "led_marquee_leds_off.png", color = "white" }
|
||||
},
|
||||
overlay_tiles = { "", leds },
|
||||
inventory_image = wimage,
|
||||
wield_image = wimage,
|
||||
palette="led_marquee_palette.png",
|
||||
@@ -443,3 +474,4 @@ minetest.register_craft({
|
||||
},
|
||||
})
|
||||
|
||||
minetest.log("action", "[led_marquee] loaded.")
|
||||
|
||||
1
mod.conf
@@ -1 +1,2 @@
|
||||
name = led_marquee
|
||||
min_minetest_version = 5.2.0
|
||||
|
||||
@@ -21,10 +21,6 @@ v -0.500000 -0.453125 0.468750
|
||||
v -0.500000 -0.453125 -0.468750
|
||||
v -0.500000 -0.437500 -0.484375
|
||||
v -0.500000 -0.437500 -0.500000
|
||||
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.681855 0.961799
|
||||
vt 0.723891 0.992824
|
||||
vt 0.723891 0.000000
|
||||
@@ -69,10 +65,6 @@ vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.000000 1.000000
|
||||
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
|
||||
@@ -106,7 +98,5 @@ 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_base_led_marquee_leds_off.png
|
||||
f 1/41/6 2/42/6 3/43/6 4/44/6
|
||||
g Cube_Cube_LEDs_Cube_Cube_LEDs_leds_on
|
||||
f 21/45/6 22/46/6 23/47/6 24/48/6
|
||||
|
||||
|
Pirms Platums: | Augstums: | Izmērs: 419 B Pēc Platums: | Augstums: | Izmērs: 208 B |
|
Pirms Platums: | Augstums: | Izmērs: 460 B Pēc Platums: | Augstums: | Izmērs: 89 B |
|
Pirms Platums: | Augstums: | Izmērs: 495 B Pēc Platums: | Augstums: | Izmērs: 94 B |
|
Pirms Platums: | Augstums: | Izmērs: 485 B Pēc Platums: | Augstums: | Izmērs: 98 B |
|
Pirms Platums: | Augstums: | Izmērs: 493 B Pēc Platums: | Augstums: | Izmērs: 92 B |
|
Pirms Platums: | Augstums: | Izmērs: 437 B Pēc Platums: | Augstums: | Izmērs: 86 B |
|
Pirms Platums: | Augstums: | Izmērs: 449 B Pēc Platums: | Augstums: | Izmērs: 90 B |
|
Pirms Platums: | Augstums: | Izmērs: 451 B Pēc Platums: | Augstums: | Izmērs: 88 B |
|
Pirms Platums: | Augstums: | Izmērs: 298 B Pēc Platums: | Augstums: | Izmērs: 89 B |
|
Pirms Platums: | Augstums: | Izmērs: 420 B Pēc Platums: | Augstums: | Izmērs: 85 B |
|
Pirms Platums: | Augstums: | Izmērs: 594 B Pēc Platums: | Augstums: | Izmērs: 91 B |
|
Pirms Platums: | Augstums: | Izmērs: 424 B Pēc Platums: | Augstums: | Izmērs: 82 B |
|
Pirms Platums: | Augstums: | Izmērs: 429 B Pēc Platums: | Augstums: | Izmērs: 85 B |
|
Pirms Platums: | Augstums: | Izmērs: 472 B Pēc Platums: | Augstums: | Izmērs: 87 B |
|
Pirms Platums: | Augstums: | Izmērs: 492 B Pēc Platums: | Augstums: | Izmērs: 91 B |
|
Pirms Platums: | Augstums: | Izmērs: 441 B Pēc Platums: | Augstums: | Izmērs: 84 B |
|
Pirms Platums: | Augstums: | Izmērs: 450 B Pēc Platums: | Augstums: | Izmērs: 89 B |
|
Pirms Platums: | Augstums: | Izmērs: 454 B Pēc Platums: | Augstums: | Izmērs: 89 B |
|
Pirms Platums: | Augstums: | Izmērs: 416 B Pēc Platums: | Augstums: | Izmērs: 81 B |
|
Pirms Platums: | Augstums: | Izmērs: 460 B Pēc Platums: | Augstums: | Izmērs: 87 B |
|
Pirms Platums: | Augstums: | Izmērs: 486 B Pēc Platums: | Augstums: | Izmērs: 93 B |
|
Pirms Platums: | Augstums: | Izmērs: 473 B Pēc Platums: | Augstums: | Izmērs: 93 B |
|
Pirms Platums: | Augstums: | Izmērs: 344 B Pēc Platums: | Augstums: | Izmērs: 86 B |
|
Pirms Platums: | Augstums: | Izmērs: 453 B Pēc Platums: | Augstums: | Izmērs: 86 B |
|
Pirms Platums: | Augstums: | Izmērs: 445 B Pēc Platums: | Augstums: | Izmērs: 88 B |
|
Pirms Platums: | Augstums: | Izmērs: 371 B Pēc Platums: | Augstums: | Izmērs: 79 B |
|
Pirms Platums: | Augstums: | Izmērs: 447 B Pēc Platums: | Augstums: | Izmērs: 88 B |
|
Pirms Platums: | Augstums: | Izmērs: 400 B Pēc Platums: | Augstums: | Izmērs: 81 B |
|
Pirms Platums: | Augstums: | Izmērs: 568 B Pēc Platums: | Augstums: | Izmērs: 93 B |
|
Pirms Platums: | Augstums: | Izmērs: 348 B Pēc Platums: | Augstums: | Izmērs: 94 B |
|
Pirms Platums: | Augstums: | Izmērs: 338 B Pēc Platums: | Augstums: | Izmērs: 89 B |
|
Pirms Platums: | Augstums: | Izmērs: 210 B Pēc Platums: | Augstums: | Izmērs: 76 B |
|
Pirms Platums: | Augstums: | Izmērs: 279 B Pēc Platums: | Augstums: | Izmērs: 79 B |
|
Pirms Platums: | Augstums: | Izmērs: 262 B Pēc Platums: | Augstums: | Izmērs: 78 B |
|
Pirms Platums: | Augstums: | Izmērs: 274 B Pēc Platums: | Augstums: | Izmērs: 78 B |
|
Pirms Platums: | Augstums: | Izmērs: 276 B Pēc Platums: | Augstums: | Izmērs: 83 B |
|
Pirms Platums: | Augstums: | Izmērs: 268 B Pēc Platums: | Augstums: | Izmērs: 84 B |
|
Pirms Platums: | Augstums: | Izmērs: 302 B Pēc Platums: | Augstums: | Izmērs: 83 B |
|
Pirms Platums: | Augstums: | Izmērs: 268 B Pēc Platums: | Augstums: | Izmērs: 81 B |
|
Pirms Platums: | Augstums: | Izmērs: 451 B Pēc Platums: | Augstums: | Izmērs: 84 B |
|
Pirms Platums: | Augstums: | Izmērs: 272 B Pēc Platums: | Augstums: | Izmērs: 83 B |
|
Pirms Platums: | Augstums: | Izmērs: 306 B Pēc Platums: | Augstums: | Izmērs: 84 B |
|
Pirms Platums: | Augstums: | Izmērs: 305 B Pēc Platums: | Augstums: | Izmērs: 84 B |
|
Pirms Platums: | Augstums: | Izmērs: 302 B Pēc Platums: | Augstums: | Izmērs: 81 B |
|
Pirms Platums: | Augstums: | Izmērs: 342 B Pēc Platums: | Augstums: | Izmērs: 84 B |
|
Pirms Platums: | Augstums: | Izmērs: 268 B Pēc Platums: | Augstums: | Izmērs: 75 B |
|
Pirms Platums: | Augstums: | Izmērs: 336 B Pēc Platums: | Augstums: | Izmērs: 95 B |
|
Pirms Platums: | Augstums: | Izmērs: 318 B Pēc Platums: | Augstums: | Izmērs: 92 B |
|
Pirms Platums: | Augstums: | Izmērs: 314 B Pēc Platums: | Augstums: | Izmērs: 88 B |
|
Pirms Platums: | Augstums: | Izmērs: 309 B Pēc Platums: | Augstums: | Izmērs: 88 B |
|
Pirms Platums: | Augstums: | Izmērs: 323 B Pēc Platums: | Augstums: | Izmērs: 91 B |
|
Pirms Platums: | Augstums: | Izmērs: 316 B Pēc Platums: | Augstums: | Izmērs: 90 B |
|
Pirms Platums: | Augstums: | Izmērs: 359 B Pēc Platums: | Augstums: | Izmērs: 96 B |
|
Pirms Platums: | Augstums: | Izmērs: 352 B Pēc Platums: | Augstums: | Izmērs: 95 B |
|
Pirms Platums: | Augstums: | Izmērs: 244 B Pēc Platums: | Augstums: | Izmērs: 83 B |
|
Pirms Platums: | Augstums: | Izmērs: 325 B Pēc Platums: | Augstums: | Izmērs: 95 B |
|
Pirms Platums: | Augstums: | Izmērs: 362 B Pēc Platums: | Augstums: | Izmērs: 102 B |
|
Pirms Platums: | Augstums: | Izmērs: 379 B Pēc Platums: | Augstums: | Izmērs: 99 B |
|
Pirms Platums: | Augstums: | Izmērs: 494 B Pēc Platums: | Augstums: | Izmērs: 102 B |
|
Pirms Platums: | Augstums: | Izmērs: 518 B Pēc Platums: | Augstums: | Izmērs: 105 B |
|
Pirms Platums: | Augstums: | Izmērs: 500 B Pēc Platums: | Augstums: | Izmērs: 101 B |
|
Pirms Platums: | Augstums: | Izmērs: 96 B Pēc Platums: | Augstums: | Izmērs: 71 B |
|
Pirms Platums: | Augstums: | Izmērs: 336 B Pēc Platums: | Augstums: | Izmērs: 88 B |
|
Pirms Platums: | Augstums: | Izmērs: 367 B Pēc Platums: | Augstums: | Izmērs: 95 B |
|
Pirms Platums: | Augstums: | Izmērs: 399 B Pēc Platums: | Augstums: | Izmērs: 102 B |
|
Pirms Platums: | Augstums: | Izmērs: 369 B Pēc Platums: | Augstums: | Izmērs: 88 B |
|
Pirms Platums: | Augstums: | Izmērs: 332 B Pēc Platums: | Augstums: | Izmērs: 91 B |
|
Pirms Platums: | Augstums: | Izmērs: 266 B Pēc Platums: | Augstums: | Izmērs: 82 B |
|
Pirms Platums: | Augstums: | Izmērs: 396 B Pēc Platums: | Augstums: | Izmērs: 97 B |
|
Pirms Platums: | Augstums: | Izmērs: 203 B Pēc Platums: | Augstums: | Izmērs: 77 B |
|
Pirms Platums: | Augstums: | Izmērs: 438 B Pēc Platums: | Augstums: | Izmērs: 101 B |
|
Pirms Platums: | Augstums: | Izmērs: 363 B Pēc Platums: | Augstums: | Izmērs: 93 B |
|
Pirms Platums: | Augstums: | Izmērs: 293 B Pēc Platums: | Augstums: | Izmērs: 83 B |
|
Pirms Platums: | Augstums: | Izmērs: 230 B Pēc Platums: | Augstums: | Izmērs: 81 B |
|
Pirms Platums: | Augstums: | Izmērs: 203 B Pēc Platums: | Augstums: | Izmērs: 77 B |
|
Pirms Platums: | Augstums: | Izmērs: 461 B Pēc Platums: | Augstums: | Izmērs: 101 B |
|
Pirms Platums: | Augstums: | Izmērs: 203 B Pēc Platums: | Augstums: | Izmērs: 79 B |
|
Pirms Platums: | Augstums: | Izmērs: 280 B Pēc Platums: | Augstums: | Izmērs: 88 B |
|
Pirms Platums: | Augstums: | Izmērs: 297 B Pēc Platums: | Augstums: | Izmērs: 91 B |
|
Pirms Platums: | Augstums: | Izmērs: 319 B Pēc Platums: | Augstums: | Izmērs: 90 B |
|
Pirms Platums: | Augstums: | Izmērs: 291 B Pēc Platums: | Augstums: | Izmērs: 90 B |
|
Pirms Platums: | Augstums: | Izmērs: 250 B Pēc Platums: | Augstums: | Izmērs: 82 B |
|
Pirms Platums: | Augstums: | Izmērs: 307 B Pēc Platums: | Augstums: | Izmērs: 85 B |
|
Pirms Platums: | Augstums: | Izmērs: 343 B Pēc Platums: | Augstums: | Izmērs: 85 B |
|
Pirms Platums: | Augstums: | Izmērs: 216 B Pēc Platums: | Augstums: | Izmērs: 76 B |
|
Pirms Platums: | Augstums: | Izmērs: 227 B Pēc Platums: | Augstums: | Izmērs: 78 B |
|
Pirms Platums: | Augstums: | Izmērs: 304 B Pēc Platums: | Augstums: | Izmērs: 90 B |
|
Pirms Platums: | Augstums: | Izmērs: 345 B Pēc Platums: | Augstums: | Izmērs: 96 B |
|
Pirms Platums: | Augstums: | Izmērs: 317 B Pēc Platums: | Augstums: | Izmērs: 83 B |
|
Pirms Platums: | Augstums: | Izmērs: 465 B Pēc Platums: | Augstums: | Izmērs: 106 B |
|
Pirms Platums: | Augstums: | Izmērs: 435 B Pēc Platums: | Augstums: | Izmērs: 102 B |
|
Pirms Platums: | Augstums: | Izmērs: 478 B Pēc Platums: | Augstums: | Izmērs: 103 B |
|
Pirms Platums: | Augstums: | Izmērs: 348 B Pēc Platums: | Augstums: | Izmērs: 97 B |
|
Pirms Platums: | Augstums: | Izmērs: 408 B Pēc Platums: | Augstums: | Izmērs: 99 B |
|
Pirms Platums: | Augstums: | Izmērs: 402 B Pēc Platums: | Augstums: | Izmērs: 100 B |
|
Pirms Platums: | Augstums: | Izmērs: 426 B Pēc Platums: | Augstums: | Izmērs: 99 B |
|
Pirms Platums: | Augstums: | Izmērs: 413 B Pēc Platums: | Augstums: | Izmērs: 98 B |