vignette/init.lua

69 lines
1.8 KiB
Lua
Raw Permalink Normal View History

2019-04-04 14:33:00 -07:00
-- vignette_redo
-- Optionally place a vignette filter over the screen.
2018-09-07 13:45:58 -07:00
-- Based on concept by TriBlade9
-- By David_G (kestral246@gmail.com)
2019-04-04 14:33:00 -07:00
-- Vignette effect defaults to off at start.
-- Use chat command "/vignette" to enable, and then to toggle effect off or on.
-- Local storage maintains state of vignette filter per user.
-- 2020-11-20
-- Add z_index to HUD definition (issue 1)
2018-09-07 13:45:58 -07:00
local vignette = {}
2019-03-19 13:25:27 -07:00
local storage = minetest.get_mod_storage()
2018-09-07 13:45:58 -07:00
2018-09-07 10:42:56 -07:00
minetest.register_on_joinplayer(function(player)
2018-09-07 13:45:58 -07:00
local pname = player:get_player_name()
2019-03-19 13:25:27 -07:00
if storage:get(pname) and storage:get(pname) == "1" then -- enabled
vignette[pname] = {
id = player:hud_add({
hud_elem_type = "image",
text = "vignette.png",
position = {x=0, y=0},
scale = {x=-100, y=-100},
alignment = {x=1, y=1},
offset = {x=0, y=0},
z_index = -400
2019-03-19 13:25:27 -07:00
}),
enable = true }
else -- not enabled
vignette[pname] = {
id = player:hud_add({
hud_elem_type = "image",
text = "",
position = {x=0, y=0},
scale = {x=-100, y=-100},
alignment = {x=1, y=1},
offset = {x=0, y=0},
z_index = -400
2019-03-19 13:25:27 -07:00
}),
enable = false }
end
2018-09-07 13:45:58 -07:00
end)
minetest.register_chatcommand("vignette", {
params = "",
description = "Toggle display of vignette mask.",
privs = {},
func = function(name, param)
local player = minetest.get_player_by_name(name)
if vignette[name].enable == true then
2018-12-05 07:46:22 -08:00
player:hud_change(vignette[name].id, "text", "")
2018-09-07 13:45:58 -07:00
vignette[name].enable = false
2019-03-19 13:25:27 -07:00
storage:set_string(name, "0")
2018-09-07 13:45:58 -07:00
else
player:hud_change(vignette[name].id, "text", "vignette.png")
vignette[name].enable = true
2019-03-19 13:25:27 -07:00
storage:set_string(name, "1")
2018-09-07 13:45:58 -07:00
end
end,
})
minetest.register_on_leaveplayer(function(player)
local pname = player:get_player_name()
if vignette[pname] then
vignette[pname] = nil
end
2018-09-07 10:42:56 -07:00
end)