51 lines
1.7 KiB
Lua
51 lines
1.7 KiB
Lua
|
local minetest,name = minetest,minetest.localplayer:get_name()
|
||
|
local sleep_channel = minetest.mod_channel_join(name..":sleep_channel")
|
||
|
local sleeping = 0
|
||
|
local sleep_fade = 0
|
||
|
local sleep_id = nil
|
||
|
|
||
|
minetest.register_on_modchannel_message(function(channel_name, sender, message)
|
||
|
if sender == "" and channel_name == name..":sleep_channel" then
|
||
|
sleeping = tonumber(message)
|
||
|
end
|
||
|
end)
|
||
|
|
||
|
|
||
|
|
||
|
minetest.register_globalstep(function(dtime)
|
||
|
if sleeping == 0 and sleep_fade == 0 then
|
||
|
if sleep_id then
|
||
|
sleep_id = nil
|
||
|
end
|
||
|
return
|
||
|
elseif sleeping == 1 and sleep_fade < 255 then
|
||
|
if not sleep_id then
|
||
|
sleep_id = minetest.localplayer:hud_add({
|
||
|
hud_elem_type = "image", -- see HUD element types, default "text"
|
||
|
position = {x=0.5, y=0.5},
|
||
|
name = "", -- default ""
|
||
|
scale = {x=-100, y=-100}, -- default {x=0,y=0}
|
||
|
text = "sleep.png^[opacity:"..sleep_fade,
|
||
|
})
|
||
|
else
|
||
|
sleep_fade = sleep_fade + (dtime*100)
|
||
|
if sleep_fade >= 255 then
|
||
|
sleep_fade = 255
|
||
|
sleep_channel:send_all("true")
|
||
|
end
|
||
|
minetest.localplayer:hud_change(sleep_id, "text", "sleep.png^[opacity:"..sleep_fade)
|
||
|
end
|
||
|
elseif sleeping == 0 and sleep_fade > 0 then
|
||
|
if sleep_id then
|
||
|
sleep_fade = sleep_fade - (dtime*500)
|
||
|
if sleep_fade < 0 then
|
||
|
sleep_fade = 0
|
||
|
end
|
||
|
minetest.localplayer:hud_change(sleep_id, "text", "sleep.png^[opacity:"..sleep_fade)
|
||
|
if sleep_fade == 0 then
|
||
|
minetest.localplayer:hud_remove(sleep_id)
|
||
|
sleep_id = nil
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end)
|