From c75925ff924c1a8344bd54741ea5b3c043b80893 Mon Sep 17 00:00:00 2001 From: FajsiEx Date: Mon, 16 Aug 2021 16:29:21 +0200 Subject: [PATCH] * replace frame based laser anim with code based anim in songwheel --- scripts/songselect/songwheel.lua | 35 +++++++++++++++++++++------- textures/song_select/laser_anim.png | Bin 0 -> 36378 bytes 2 files changed, 26 insertions(+), 9 deletions(-) create mode 100644 textures/song_select/laser_anim.png diff --git a/scripts/songselect/songwheel.lua b/scripts/songselect/songwheel.lua index f5adde2..25230ea 100644 --- a/scripts/songselect/songwheel.lua +++ b/scripts/songselect/songwheel.lua @@ -13,6 +13,8 @@ local illustratedBgImage = gfx.CreateSkinImage("song_select/data_panel/illust_bg local songPlateBg = gfx.CreateSkinImage("song_select/plate/bg.png", 1) local songPlateBottomBarOverlayImage = gfx.CreateSkinImage("song_select/plate/bottom_bar_overlay.png", 1) +local laserAnimBaseImage = gfx.CreateSkinImage("song_select/laser_anim.png", 1) + local top50OverlayImage = gfx.CreateSkinImage("song_select/top50.png", 1) local top50JacketOverlayImage = gfx.CreateSkinImage("song_select/top50_jacket.png", 1) @@ -90,9 +92,6 @@ local difficultyLabelUnderImages = { gfx.CreateSkinImage("songtransition/difficulty_labels/vvd.png", 0), } --- ANIMS -local laserAnimation = gfx.LoadSkinAnimation('song_select/laser_anim', 1/60, 0, false); - game.LoadSkinSample('song_wheel/cursor_change.wav'); game.LoadSkinSample('song_wheel/diff_change.wav'); @@ -125,6 +124,9 @@ local transitionAfterscrollTextSongArtist = 0; local transitionAfterscrollDifficultiesAlpha = 0; local transitionAfterscrollJacketBgAlpha = 0; +local transitionLaserScale = 0; +local transitionLaserY = 0; + local transitionLeaveReverse = false; local transitionLeaveScale = 0; local transitionLeaveOffsetY = 0; @@ -215,6 +217,16 @@ function getGradeImageForScore(score) return gradeImage; end +function drawLaserAnim() + gfx.BeginPath() + + gfx.Scissor(0, transitionLaserY, desw, 100); + + gfx.ImageRect(0, 0, desw, desh, laserAnimBaseImage, 1, 0) + + gfx.ResetScissor(); +end + function drawBackground(deltaTime) gfx.BeginPath() gfx.ImageRect(0, 0, desw, desh, backgroundImage, 1, 0) @@ -239,12 +251,7 @@ function drawBackground(deltaTime) gfx.ImageRect(0, 0, desw, desh, dataPanelImage, 1, 0) - local laserAnimTickRes = gfx.TickAnimation(laserAnimation, deltaTime); - if laserAnimTickRes == 1 then - gfx.BeginPath() - gfx.ImageRect(0, 0, desw, desh, laserAnimation, 1, 0); - gfx.GlobalAlpha(1); - end + drawLaserAnim() if song and diff then gfx.BeginPath() @@ -571,6 +578,16 @@ function tickTransitions(deltaTime) transitionAfterscrollJacketBgAlpha = 1; end + -- Laser anim + if transitionLaserScale < 1 then + transitionLaserScale = transitionLaserScale + deltaTime / 3 -- transition should last for that time in seconds + else + transitionLaserScale = 0 + end + + transitionLaserY = desh - math.min(transitionLaserScale * 2 * desh, desh); + + -- Leave transition if (transitionLeaveReverse) then if transitionLeaveScale > 0 then diff --git a/textures/song_select/laser_anim.png b/textures/song_select/laser_anim.png new file mode 100644 index 0000000000000000000000000000000000000000..987c4ccfecdb4a8a454b6f5d00fde10120b50c22 GIT binary patch literal 36378 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 literal 0 HcmV?d00001