]> git.lizzy.rs Git - crafter_client.git/commitdiff
Add in much better nether teleport effect
authoroilboi <47129783+oilboi@users.noreply.github.com>
Sun, 19 Apr 2020 12:06:27 +0000 (08:06 -0400)
committeroilboi <47129783+oilboi@users.noreply.github.com>
Sun, 19 Apr 2020 12:06:27 +0000 (08:06 -0400)
nether.lua

index 43720f559d66daa409cb5988e8b937bb80916887..f5028f675d7bf4759b28f303de0ea51b826dafb2 100644 (file)
@@ -7,6 +7,8 @@ local nether_id = nil --the nether incoming
 local cool_off_timer = 0 --use this to stop players teleporting back and forth
 local init_sound = nil
 local teleport_sound = nil
+local opacity = 0
+
 minetest.register_globalstep(function(dtime)
        if not minetest.localplayer or not minetest.camera then
                return
@@ -25,31 +27,32 @@ minetest.register_globalstep(function(dtime)
        local node = minetest.get_node_or_nil(pos)
        
        if node and node.name == "nether:portal" and cool_off_timer == 0 then
+               if init_sound == nil then
+                       init_sound = minetest.sound_play("portal_initialize",{gain=0,pitch=math.random(70,90)/100})
+                       minetest.sound_fade(init_sound, 0.34, 1)
+               end
                if hud_bg_id == nil then
                        hud_bg_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 = "darkness.png",    -- default ""
+                               text = "darkness.png^[opacity:"..opacity,    -- default ""
                        })
                        hud_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=-1, y=-1}, -- default {x=0,y=0}
-                               text = "nether_portal_gui.png",    -- default ""
+                               text = "nether_portal_gui.png^[opacity:"..opacity,    -- default ""
                        })
                        nether_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=0, y=0}, -- default {x=0,y=0}
-                               text = "darkness.png",    -- default ""
+                               text = "darkness.png^[opacity:"..opacity,    -- default ""
                        })
-                       init_sound = minetest.sound_play("portal_initialize",{gain=0,pitch=math.random(70,90)/100})
-                       minetest.sound_fade(init_sound, 0.34, 1)
-                       
                else
                        --make the hud zoom in
                        local scale = minetest.localplayer:hud_get(hud_id).scale.x
@@ -58,7 +61,13 @@ minetest.register_globalstep(function(dtime)
                        elseif scale < -100 then        
                                scale = -100
                        end
+                       opacity = -scale * 2.55
                        minetest.localplayer:hud_change(hud_id, "scale", {x=scale,y=scale})
+                       minetest.localplayer:hud_change(hud_id, "text", "nether_portal_gui.png^[opacity:"..opacity)
+                       
+                       minetest.localplayer:hud_change(hud_bg_id, "text", "darkness.png^[opacity:"..opacity)
+                       
+                       minetest.localplayer:hud_change(nether_id, "text", "darkness.png^[opacity:"..opacity)
                end
        elseif hud_bg_id and hud_id then
                --play spooky sounds
@@ -78,8 +87,15 @@ minetest.register_globalstep(function(dtime)
                        elseif scale > -1 then  
                                scale = -1
                        end
+                       opacity = -scale * 2.55
                        minetest.localplayer:hud_change(hud_id, "scale", {x=scale,y=scale})
                        
+                       minetest.localplayer:hud_change(hud_id, "text", "nether_portal_gui.png^[opacity:"..opacity)
+                       
+                       minetest.localplayer:hud_change(hud_bg_id, "text", "darkness.png^[opacity:"..opacity)
+                       
+                       minetest.localplayer:hud_change(nether_id, "text", "darkness.png^[opacity:"..opacity)
+                       
                        if scale == -1 then
                                minetest.localplayer:hud_remove(hud_bg_id)
                                minetest.localplayer:hud_remove(hud_id)
@@ -87,9 +103,10 @@ minetest.register_globalstep(function(dtime)
                                nether_id = nil
                                hud_bg_id = nil
                                hud_id = nil
+                               opacity = 0
                        end
                --teleport complete animation
-               else
+               elseif cool_off_timer > 0 then
                        local scale = minetest.localplayer:hud_get(nether_id).scale.x
                        if scale == 0 then scale = -1 end
                        if scale > -100 then
@@ -97,7 +114,18 @@ minetest.register_globalstep(function(dtime)
                        elseif scale < -100 then        
                                scale = -100
                        end
+                       
+                       opacity = (100+scale) * 2.55
                        minetest.localplayer:hud_change(nether_id, "scale", {x=scale,y=scale})
+                       
+                       
+                       minetest.localplayer:hud_change(hud_id, "text", "nether_portal_gui.png^[opacity:"..opacity)
+                       
+                       minetest.localplayer:hud_change(hud_bg_id, "text", "darkness.png^[opacity:"..opacity)
+                       
+                       minetest.localplayer:hud_change(nether_id, "text", "darkness.png^[opacity:"..opacity)
+                       
+                       
                        if scale == -100 then
                                minetest.localplayer:hud_remove(hud_bg_id)
                                minetest.localplayer:hud_remove(hud_id)
@@ -105,7 +133,10 @@ minetest.register_globalstep(function(dtime)
                                nether_id = nil
                                hud_bg_id = nil
                                hud_id = nil
+                               opacity = 0
                        end
+               else
+                       init_sound = nil
                end
        elseif hud_bg_id and hud_id then
                minetest.localplayer:hud_remove(hud_bg_id)