91 lines
2.3 KiB
Lua
91 lines
2.3 KiB
Lua
|
|
local common = require('common.common');
|
|
|
|
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)
|
|
common.stopMusic();
|
|
|
|
if not transitionEnterAnimation then
|
|
loadAnimations()
|
|
end
|
|
|
|
local enterAnimTickRes = gfx.TickAnimation(transitionEnterAnimation, deltaTime);
|
|
|
|
if enterAnimTickRes == 0 then
|
|
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);
|
|
gfx.GlobalAlpha(1);
|
|
|
|
-- debug
|
|
-- gfx.Text('DELTA: ' .. deltaTime .. ' // TIMER: ' .. timer .. ' // TIMER_OUT: ' .. outTimer, 255,255);
|
|
timer = timer + (deltaTime / 3);
|
|
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
|
|
|
|
gfx.BeginPath();
|
|
gfx.ImageRect(0, 0, resx, resy, transitionLeaveAnimation, 1, 0);
|
|
outTimer = outTimer + (1/60) / 0.5
|
|
end
|
|
|
|
|
|
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 |