From aca006ac0fa9befc6aa51cf16905d1e623f90cf6 Mon Sep 17 00:00:00 2001 From: FajsiEx Date: Sun, 21 Nov 2021 18:37:21 +0100 Subject: [PATCH] + scores to chal result --- scripts/challengeresult.lua | 87 +++++++++++++++--- .../{bar glows 3.png => notches.png} | Bin .../{track text.png => track_bars.png} | Bin 3 files changed, 75 insertions(+), 12 deletions(-) rename textures/challenge_result/{bar glows 3.png => notches.png} (100%) rename textures/challenge_result/{track text.png => track_bars.png} (100%) diff --git a/scripts/challengeresult.lua b/scripts/challengeresult.lua index 3d69ce1..6a65536 100644 --- a/scripts/challengeresult.lua +++ b/scripts/challengeresult.lua @@ -1,5 +1,6 @@ local Easing = require("common.easings"); local Footer = require("components.footer"); +local DiffRectangle = require('components.diff_rectangle'); local common = require('common.common'); local VolforceWindow = require("components.volforceWindow") @@ -24,9 +25,35 @@ local appealCardImage = gfx.CreateSkinImage("crew/appeal_card.png", 0); local danBadgeImage = gfx.CreateSkinImage("dan/inf.png", 0); local crewImage = gfx.CreateSkinImage("crew/portrait.png", 0); +local notchesImage = gfx.CreateSkinImage("challenge_result/notches.png", 0); +local trackBarsImage = gfx.CreateSkinImage("challenge_result/track_bars.png", 0); + local irHeartbeatRequested = false; local IRserverName = ""; +local badgeImages = { + gfx.CreateSkinImage("song_select/medal/nomedal.png", 1), + gfx.CreateSkinImage("song_select/medal/played.png", 1), + gfx.CreateSkinImage("song_select/medal/clear.png", 1), + gfx.CreateSkinImage("song_select/medal/hard.png", 1), + gfx.CreateSkinImage("song_select/medal/uc.png", 1), + gfx.CreateSkinImage("song_select/medal/puc.png", 1), +} + +local gradeImages = { + S = gfx.CreateSkinImage("common/grades/S.png", 0), + AAA_P = gfx.CreateSkinImage("common/grades/AAA+.png", 0), + AAA = gfx.CreateSkinImage("common/grades/AAA.png", 0), + AA_P = gfx.CreateSkinImage("common/grades/AA+.png", 0), + AA = gfx.CreateSkinImage("common/grades/AA.png", 0), + A_P = gfx.CreateSkinImage("common/grades/A+.png", 0), + A = gfx.CreateSkinImage("common/grades/A.png", 0), + B = gfx.CreateSkinImage("common/grades/B.png", 0), + C = gfx.CreateSkinImage("common/grades/C.png", 0), + D = gfx.CreateSkinImage("common/grades/D.png", 0), + none = gfx.CreateSkinImage("common/grades/none.png", 0), +} + -- AUDIO game.LoadSkinSample("challenge_result.wav") @@ -129,19 +156,55 @@ end local scoreNumber = load_number_image("score_num"); -function drawScorePanelContent() - game.Log("Drawing scores...", game.LOGGER_INFO) -- debug - for i, chart in ipairs(result.charts) do - if chart.score == nil then - game.Log("Score does not exist? Quitting loop...", game.LOGGER_WARNING) - break - end - game.Log("#" .. i .. " chart.score: " .. chart.score, game.LOGGER_INFO) -- debug - -- Draw score - draw_number(250, 150, 1.0, math.floor(chart.score / 10000), 4, scoreNumber, true, 0.40, 1.12) - -- still not sure how ui scaling/layers works in this game, still figuring it out :p +function drawChartResult(deltaTime, x, y, chartResult) + gfx.Save() + gfx.LoadSkinFont('NotoSans-Regular.ttf') + + gfx.FontSize(28) + gfx.TextAlign(gfx.TEXT_ALIGN_LEFT + gfx.TEXT_ALIGN_MIDDLE) + gfx.BeginPath() + gfx.GlobalAlpha(1); + gfx.Text(chartResult.title, x+160,y+32); + + DiffRectangle.render(deltaTime, x+287.5, y+67, 0.85, chartResult.difficulty, chartResult.level) + + local score = chartResult.score or 0; + + draw_number(x + 500, y+80, 1.0, math.floor(score / 10000), 4, scoreNumber, true, 0.30, 1.12) + draw_number(x + 660, y+85, 1.0, score, 4, scoreNumber, true, 0.22, 1.12) + + + local gradeImageKey = string.gsub(chartResult.grade, '+', '_P'); + local gradeImage = gradeImages[gradeImageKey] or gradeImages.D + gfx.BeginPath() + gfx.ImageRect(x+800, y+12, 79, 79, gradeImage, 1, 0) + + + if chartResult.badge then + local badgeImage = badgeImages[chartResult.badge+1]; + gfx.BeginPath() + gfx.ImageRect(x+900, y+16, 79*1.05, 69*1.05, badgeImage, 1, 0) end + + gfx.Restore() +end + +function drawScorePanelContent(deltaTime) + -- game.Log("Drawing scores...", game.LOGGER_INFO) -- debug + for i, chart in ipairs(result.charts) do + -- if chart.score == nil then + -- game.Log("Score does not exist? Quitting loop...", game.LOGGER_WARNING) + -- break + -- end + + drawChartResult(deltaTime, 0, 836+(165*(i-1)), chart); + end + +end + +function drawDecorations() + end local IR_HeartbeatResponse = function(res) @@ -171,7 +234,7 @@ function render(deltaTime) drawPlayerInfo() - drawScorePanelContent() + drawScorePanelContent(deltaTime) drawHeader() Footer.draw(deltaTime); diff --git a/textures/challenge_result/bar glows 3.png b/textures/challenge_result/notches.png similarity index 100% rename from textures/challenge_result/bar glows 3.png rename to textures/challenge_result/notches.png diff --git a/textures/challenge_result/track text.png b/textures/challenge_result/track_bars.png similarity index 100% rename from textures/challenge_result/track text.png rename to textures/challenge_result/track_bars.png