diff --git a/scripts/components/diff_rectangle.lua b/scripts/components/diff_rectangle.lua new file mode 100644 index 0000000..3018527 --- /dev/null +++ b/scripts/components/diff_rectangle.lua @@ -0,0 +1,38 @@ + +local difficultyLabelImages = { + gfx.CreateSkinImage("diff/1 novice.png", 0), + gfx.CreateSkinImage("diff/2 advanced.png", 0), + gfx.CreateSkinImage("diff/3 exhaust.png", 0), + gfx.CreateSkinImage("diff/4 maximum.png", 0), + gfx.CreateSkinImage("diff/5 infinite.png", 0), + gfx.CreateSkinImage("diff/6 gravity.png", 0), + gfx.CreateSkinImage("diff/7 heavenly.png", 0), + gfx.CreateSkinImage("diff/8 vivid.png", 0) +} + +function render(deltatime, x, y, diff, level) + gfx.LoadSkinFont('Digital-Serial-Bold.ttf') + + gfx.BeginPath(); + gfx.ImageRect(x, y, 140 / 1.5, 31 / 1.5, + difficultyLabelImages[diff] or + difficultyLabelImages[4], 1, 0); + + gfx.FontSize(17) + gfx.LoadSkinFont('Digital-Serial-Bold.ttf') + gfx.TextAlign(gfx.TEXT_ALIGN_RIGHT + gfx.TEXT_ALIGN_MIDDLE) + gfx.Text(level, x + 50, y+8); + + + -- -- Draw volforce badge + -- gfx.BeginPath(); + -- gfx.ImageRect(x, y, 42, 42, volforceBadgeImage, 1, 0); + + -- -- Draw volforce label + -- gfx.FontSize(11) + -- gfx.Text('VOLFORCE', x + 47, y + 14); +end + +return { + render = render +} \ No newline at end of file diff --git a/scripts/gameplay.lua b/scripts/gameplay.lua index 9b464ca..ca63294 100644 --- a/scripts/gameplay.lua +++ b/scripts/gameplay.lua @@ -33,7 +33,7 @@ function render(deltaTime) Banner.render(deltaTime); UserPanel.render(deltaTime); - SongPanel.render(deltaTime, gameplay.bpm, gameplay.hispeed); + SongPanel.render(deltaTime, gameplay.bpm, gameplay.hispeed, gameplay.jacketPath); ScorePanel.render(deltaTime, score, maxChain) Gauge.render( diff --git a/scripts/gameplay/song_panel.lua b/scripts/gameplay/song_panel.lua index f70360d..c0f73cb 100644 --- a/scripts/gameplay/song_panel.lua +++ b/scripts/gameplay/song_panel.lua @@ -5,6 +5,16 @@ local desh = 1920; local bgLeftImage = gfx.CreateSkinImage("gameplay/song_panel/bg_left.png", 0); local bgRightImage = gfx.CreateSkinImage("gameplay/song_panel/bg_right.png", 0); +local jacketFallbackImage = gfx.CreateSkinImage("song_select/loading.png", 0); + +local jacketImage; +local loadedJacketImage = false; + +local loadJacketImage = function (jacketPath) + if jacketImage == nil or jacketImage == jacketFallbackImage then + jacketImage = gfx.LoadImageJob(jacketPath, jacketFallbackImage) + end +end local renderOutlinedText = function (x,y, text, outlineWidth) gfx.BeginPath(); @@ -22,16 +32,21 @@ local tickTransitions = function (deltaTime) end -local render = function (deltaTime, bpm, laneSpeed) +local render = function (deltaTime, bpm, laneSpeed, jacketPath) + if (not loadedJacketImage and jacketPath) then + loadJacketImage(jacketPath) + end + tickTransitions(deltaTime) + local y = 210; gfx.BeginPath(); gfx.ImageRect( 0, y, - 884*0.85, + 844*0.85, 374*0.85, bgLeftImage, 1, @@ -48,6 +63,18 @@ local render = function (deltaTime, bpm, laneSpeed) 1, 0 ); + + -- Draw jacket + gfx.BeginPath(); + gfx.ImageRect( + 32, + 241.25, -- why does this need to be here? + 105, + 105, + jacketImage, + 1, + 0 + ); gfx.FontSize(30); gfx.TextAlign(gfx.TEXT_ALIGN_LEFT + gfx.TEXT_ALIGN_MIDDLE)