1
0
mirror of https://github.com/mt-mods/homedecor_modpack.git synced 2024-12-23 00:20:17 +01:00

allow numeric messages for dimmable lamps

allow non-dimmables to respond to "off", "low", "med", "hi", "max", "on"

number messages for dimmables:
0 turns the light off
1-3 sets it to "low"
4-7 sets it to "med"
8-11 sets it to "hi"
12+ sets it to "max" (i.e. full-on)

non-dimmables:
a number > 3 or the strings "med", "hi", "max", or "on" turn the light on
a number < 4 or the strings "off" and "low" turn the light off
This commit is contained in:
Vanessa Dannenberg 2019-06-01 23:13:02 -04:00
parent b3337921a1
commit 11771e12cb

View File

@ -30,6 +30,24 @@ local brightness_tab = {
0xffffffff, 0xffffffff,
} }
local bright_to_word = {
[0] = "off",
[1] = "low",
[2] = "low",
[3] = "low",
[4] = "med",
[5] = "med",
[6] = "med",
[7] = "med",
[8] = "hi",
[9] = "hi",
[10] = "hi",
[11] = "hi",
[12] = "on",
[13] = "on",
[14] = "on",
}
local rules_xz = { local rules_xz = {
{x = -1, y = 0, z = 0}, -- borrowed from extrawires crossing {x = -1, y = 0, z = 0}, -- borrowed from extrawires crossing
{x = 1, y = 0, z = 0}, {x = 1, y = 0, z = 0},
@ -122,18 +140,20 @@ if minetest.get_modpath("digilines") then
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")
if setchan ~= channel then return end if setchan ~= channel then return end
if msg and msg ~= "" and type(msg) == "string" then
if msg == "off" if msg and msg ~= "" then
or msg == "low" local n = tonumber(msg)
or msg == "med" local msg = bright_to_word[n] or msg
or msg == "hi"
or msg == "max" local basename = string.sub(node.name, 1, string.find(node.name, "_", -5) - 1)
or msg == "on" then if repl[msg] then
local basename = string.sub(node.name, 1, string.find(node.name, "_", -5) - 1)
if minetest.registered_nodes[basename.."_"..msg] then if minetest.registered_nodes[basename.."_"..msg] then
minetest.swap_node(pos, {name = basename.."_"..msg, param2 = node.param2}) minetest.swap_node(pos, {name = basename.."_"..msg, param2 = node.param2})
elseif (n and n > 3) or msg == "hi" or msg == "max" or msg == "med" then
minetest.swap_node(pos, {name = basename.."_on", param2 = node.param2})
elseif (n and n < 4) or msg == "low" then
minetest.swap_node(pos, {name = basename.."_off", param2 = node.param2})
end end
end end
end end