game.LoadSkinSample('song_transition_screen/transition_enter.wav'); local bgImage = gfx.CreateSkinImage("songtransition/bg.png", 0) local difficultyLabelImages = { gfx.CreateSkinImage("songtransition/difficulty_labels/nov.png", 0), gfx.CreateSkinImage("songtransition/difficulty_labels/adv.png", 0), gfx.CreateSkinImage("songtransition/difficulty_labels/exh.png", 0), gfx.CreateSkinImage("songtransition/difficulty_labels/mxm.png", 0), gfx.CreateSkinImage("songtransition/difficulty_labels/mxm.png", 0), gfx.CreateSkinImage("songtransition/difficulty_labels/mxm.png", 0), } local transitionTimer = 3 local resx, resy = game.GetResolution() local outTimer = 1 local noJacket = gfx.CreateSkinImage("song_select/loading.png", 0) local wasEnterSfxPlayed = false; function render(deltaTime) if not wasEnterSfxPlayed then game.PlaySample('song_transition_screen/transition_enter.wav'); wasEnterSfxPlayed = true; end render_screen(transitionTimer) transitionTimer = transitionTimer + deltaTime * 2 transitionTimer = math.min(transitionTimer,1) return transitionTimer >= 10 end function render_out(deltaTime) outTimer = outTimer + deltaTime * 2 outTimer = math.min(outTimer, 2) -- render_screen(outTimer) return outTimer >= 10; end function sign(x) return x>0 and 1 or x<0 and -1 or 0 end function render_screen(progress) gfx.ImageRect(0, 0, resx, resy, bgImage,1,0); local jacket = song.jacket == 0 and noJacket or song.jacket gfx.BeginPath(); gfx.ImageRect(235, 385, 608, 608, jacket, 1, 0) gfx.ClosePath(); gfx.TextAlign(gfx.TEXT_ALIGN_CENTER + gfx.TEXT_ALIGN_MIDDLE) gfx.FontSize(55) gfx.Text(song.title,resx/2, 1114) gfx.FontSize(30) gfx.Text(song.artist, resx/2 , 1182) local EFFECTOR_LABEL_Y = 1288 local ILLUSTRATOR_LABEL_Y = 1347 gfx.FontSize(22) gfx.Text(song.effector, resx/2+70 , EFFECTOR_LABEL_Y-1) gfx.Text(song.illustrator, resx/2+70 , ILLUSTRATOR_LABEL_Y-3) gfx.BeginPath(); local diffLabelImage = difficultyLabelImages[song.difficulty+1]; local diffLabelW, diffLabelH = gfx.ImageSize(diffLabelImage); gfx.ImageRect(952-diffLabelW/2, 1154-diffLabelH/2, diffLabelW, diffLabelH, diffLabelImage,1,0); gfx.ClosePath(); gfx.Save(); gfx.FontSize(24) gfx.LoadSkinFont('Digital-Serial-Bold.ttf') gfx.TextAlign(gfx.TEXT_ALIGN_CENTER + gfx.TEXT_ALIGN_MIDDLE) gfx.BeginPath(); gfx.Text('BPM', 127, 1140) gfx.Text(song.bpm, 127, 1167) gfx.ClosePath(); gfx.Restore(); -- for i=0,resx/50 do -- local dir = sign((i % 2) - 0.5) -- local yoff = dir * resy * (1 - progress) -- gfx.Save() -- gfx.Translate(0,yoff) -- gfx.BeginPath() -- gfx.Rect(60 * i, yoff, 60, resy) -- gfx.FillColor(0,64, 150 + 25 * dir) -- gfx.Fill() -- gfx.Restore() -- end -- local y = (resy/2 + 100) * (math.sin(0.5 * progress * math.pi)^7) - 200 -- gfx.Save() -- gfx.BeginPath() -- gfx.Translate(resx/2, y) -- gfx.Restore() -- gfx.Translate(resx/2, resy - y - 50) -- gfx.FillColor(255,255,255) -- gfx.TextAlign(gfx.TEXT_ALIGN_CENTER + gfx.TEXT_ALIGN_TOP) -- gfx.FontSize(80) -- gfx.Text(song.title,0,0) -- gfx.FontSize(55) -- gfx.Text(song.artist,0,80) end function reset() transitionTimer = 0 resx, resy = game.GetResolution() outTimer = 1 wasEnterSfxPlayed = false; end