ExperimentalGear/scripts/transition.lua

87 lines
2.2 KiB
Lua
Raw Normal View History

2021-07-25 20:10:06 +02:00
local transitionEnterAnimation;
local transitionLeaveAnimation;
local resx, resy = game.GetResolution()
local timer = 0;
local outTimer = 0;
local wasEnterSfxPlayed = false;
local wasLeaveSfxPlayed = false;
game.LoadSkinSample('transition_screen/transition_enter.wav');
game.LoadSkinSample('transition_screen/transition_leave.wav');
function loadAnimations()
transitionEnterAnimation = gfx.LoadSkinAnimation('transition/transition_frames/enter', 1/60, 1, false);
transitionLeaveAnimation = gfx.LoadSkinAnimation('transition/transition_frames/leave', 1/60, 1, false);
end
function render(deltaTime)
if not transitionEnterAnimation then
loadAnimations()
end
local enterAnimTickRes = gfx.TickAnimation(transitionEnterAnimation, deltaTime);
2021-07-25 20:10:06 +02:00
if enterAnimTickRes == 0 then
2021-07-25 20:10:06 +02:00
gfx.GlobalAlpha(0);
else
if not wasEnterSfxPlayed then
game.PlaySample('transition_screen/transition_enter.wav');
wasEnterSfxPlayed = true;
end
gfx.BeginPath();
gfx.ImageRect(0, 0, resx, resy, transitionEnterAnimation, 1, 0);
2021-07-25 20:10:06 +02:00
gfx.GlobalAlpha(1);
-- debug
-- gfx.Text('DELTA: ' .. deltaTime .. ' // TIMER: ' .. timer .. ' // TIMER_OUT: ' .. outTimer, 255,255);
timer = timer + (deltaTime / 3);
2021-07-25 20:10:06 +02:00
end
if timer >= 1 then return true end;
end
function render_out(deltaTime)
local leaveAnimeTickRes = gfx.TickAnimation(transitionLeaveAnimation, deltaTime);
if leaveAnimeTickRes == 0 then
gfx.BeginPath();
gfx.ImageRect(0, 0, resx, resy, transitionEnterAnimation, 1, 0);
else
if not wasLeaveSfxPlayed then
game.PlaySample('transition_screen/transition_leave.wav');
wasLeaveSfxPlayed = true;
end
2021-07-25 20:10:06 +02:00
gfx.BeginPath();
gfx.ImageRect(0, 0, resx, resy, transitionLeaveAnimation, 1, 0);
outTimer = outTimer + (1/60) / 0.5
end
2021-07-25 20:10:06 +02:00
if outTimer >= 1 then
return true;
end
end
function sign(x)
return x>0 and 1 or x<0 and -1 or 0
end
function reset()
resx, resy = game.GetResolution();
timer = 0;
outTimer = 0;
transitionEnterAnimation = nil;
transitionLeaveAnimation = nil;
wasEnterSfxPlayed = false;
wasLeaveSfxPlayed = false;
end