diff --git a/README.md b/README.md index 8f7d9db..66191e7 100644 --- a/README.md +++ b/README.md @@ -1 +1,37 @@ -vignette +# Vignette + +Dark gradient hud overlay for a immersive experience. By default it will add +a single overlay to a players screen at the beginning of the game. + +Vignette also has an api for other mods to leverage. + +## Api + +> Exposes an api on the vignette namespace with functions `add` and `edit`. +> These function can be used by other mods in the following manner. + + +```lua +vignette.set({ + + -- player is a required field + player = player, + + -- a number between 0 or 5, you can do more but that might result in + -- a frame-rate drop + darkness = 4 + +}); + +vignette.add({ + + -- same as the first example + player = player, + + -- instead of setting it adds the darkness to the current player's screen it + -- is allows to pass negative values also. If the darkness results in a + -- negative value it is defaulted to 0 + darkness = 1 + +}) +``` diff --git a/init.lua b/init.lua new file mode 100644 index 0000000..0e14248 --- /dev/null +++ b/init.lua @@ -0,0 +1,41 @@ +vignette = { + huds = {} +} + +vignette.set = function (defs) + + for i=1, math.max(defs.darkness, #vignette.huds) do + -- + -- adding huds + if (i >= #vignette.huds) then + local hud_id=defs.player:hud_add({ + hud_elem_type = "image", + position = {x = 0.5, y = 0.5}, + scale = { + x = -100, + y = -100 + }, + text = "vignette.png" + }) + vignette.huds[defs.player][i] = hud_id; + end + + -- removing huds + if (i > defs.darkness) then + defs.player:hud_remove(vignette.huds[defs.player][i]) + end + end +end + +vignette.add = function (defs) + defs.darkness = math.max(defs.darkness + #vignette.huds[defs.player], 0) + vignette.set(defs) +end + +minetest.register_on_joinplayer(function (player) + vignette.huds[player] = {} + vignette.set({ + darkness = 1, + player = player + }) +end) diff --git a/textures/vignette.png b/textures/vignette.png new file mode 100644 index 0000000..9aea9dd Binary files /dev/null and b/textures/vignette.png differ