chalwheel: added completion badge and grade

This commit is contained in:
Hersi 2021-11-22 03:13:11 +01:00
parent 67f6f70f7c
commit 46f0a9820a
1 changed files with 41 additions and 18 deletions

View File

@ -64,24 +64,24 @@ local legendTable = {
} }
} }
local grades = { local grades = {
{ ["max"] = 6999999, ["image"] = gfx.CreateSkinImage("common/grades/D.png", 0) }, ["D"] = gfx.CreateSkinImage("common/grades/D.png", 0),
{ ["max"] = 7999999, ["image"] = gfx.CreateSkinImage("common/grades/C.png", 0) }, ["C"] = gfx.CreateSkinImage("common/grades/C.png", 0),
{ ["max"] = 8699999, ["image"] = gfx.CreateSkinImage("common/grades/B.png", 0) }, ["B"] = gfx.CreateSkinImage("common/grades/B.png", 0),
{ ["max"] = 8999999, ["image"] = gfx.CreateSkinImage("common/grades/A.png", 0) }, ["A"] = gfx.CreateSkinImage("common/grades/A.png", 0),
{ ["max"] = 9299999, ["image"] = gfx.CreateSkinImage("common/grades/A+.png", 0) }, ["A+"] = gfx.CreateSkinImage("common/grades/A+.png", 0),
{ ["max"] = 9499999, ["image"] = gfx.CreateSkinImage("common/grades/AA.png", 0) }, ["AA"] = gfx.CreateSkinImage("common/grades/AA.png", 0),
{ ["max"] = 9699999, ["image"] = gfx.CreateSkinImage("common/grades/AA+.png", 0) }, ["AA+"] = gfx.CreateSkinImage("common/grades/AA+.png", 0),
{ ["max"] = 9799999, ["image"] = gfx.CreateSkinImage("common/grades/AAA.png", 0) }, ["AAA"] = gfx.CreateSkinImage("common/grades/AAA.png", 0),
{ ["max"] = 9899999, ["image"] = gfx.CreateSkinImage("common/grades/AAA+.png", 0) }, ["AAA+"] = gfx.CreateSkinImage("common/grades/AAA+.png", 0),
{ ["max"] = 99999999, ["image"] = gfx.CreateSkinImage("common/grades/S.png", 0) } ["S"] = gfx.CreateSkinImage("common/grades/S.png", 0)
} }
local badges = { local badges = {
gfx.CreateSkinImage("song_select/medal/played.png", 1), gfx.CreateSkinImage("song_select/medal/played.png", gfx.IMAGE_GENERATE_MIPMAPS),
gfx.CreateSkinImage("song_select/medal/clear.png", 1), gfx.CreateSkinImage("song_select/medal/clear.png", gfx.IMAGE_GENERATE_MIPMAPS),
gfx.CreateSkinImage("song_select/medal/hard.png", 1), gfx.CreateSkinImage("song_select/medal/hard.png", gfx.IMAGE_GENERATE_MIPMAPS),
gfx.CreateSkinImage("song_select/medal/uc.png", 1), gfx.CreateSkinImage("song_select/medal/uc.png", gfx.IMAGE_GENERATE_MIPMAPS),
gfx.CreateSkinImage("song_select/medal/puc.png", 1) gfx.CreateSkinImage("song_select/medal/puc.png", gfx.IMAGE_GENERATE_MIPMAPS)
} }
local passStates = { local passStates = {
@ -293,9 +293,19 @@ draw_challenge = function(challenge, x, y, w, h, selected)
local scoreUpperSize = 0.2 * textSizeCorrection local scoreUpperSize = 0.2 * textSizeCorrection
local scoreSize = 0.125 * textSizeCorrection local scoreSize = 0.125 * textSizeCorrection
local badgeOffsetX = x + 0.886 * w
local badgeOffsetY = y + 0.8 * h
local badgeSize = 0.155 * h
local gradeOffsetX = x + 0.933 * w
local gradeOffsetY = y + 0.798 * h
local gradeSize = 0.163 * h
local percent = challengeCache[challenge.id]["percent"] local percent = challengeCache[challenge.id]["percent"]
local scoreUpper = math.floor(challengeCache[challenge.id]["total_score"] / 10000) local scoreUpper = math.floor(challengeCache[challenge.id]["total_score"] / 10000)
local score = challengeCache[challenge.id]["total_score"] local score = challengeCache[challenge.id]["total_score"]
local badge = challenge.topBadge and badges[challenge.topBadge] or nil
local grade = challenge.grade and grades[challenge.grade] or nil
if selected then if selected then
percentOffsetX = x + 11 / 24 * w percentOffsetX = x + 11 / 24 * w
@ -304,10 +314,18 @@ draw_challenge = function(challenge, x, y, w, h, selected)
scoreUpperOffsetX = x + w * 0.63 scoreUpperOffsetX = x + w * 0.63
scoreUpperOffsetY = y + h * 0.82 scoreUpperOffsetY = y + h * 0.82
scoreOffsetX = x + w * 0.755 scoreOffsetX = x + w * 0.762
scoreOffsetY = y + h * 0.835 scoreOffsetY = y + h * 0.835
scoreUpperSize = 0.12 * textSizeCorrection scoreUpperSize = 0.12 * textSizeCorrection
scoreSize = 0.09 * textSizeCorrection scoreSize = 0.09 * textSizeCorrection
badgeOffsetX = x + 0.86 * w
badgeOffsetY = y + 0.715 * h
badgeSize = 0.165 * h
gradeOffsetX = x + 0.927 * w
gradeOffsetY = y + 0.708 * h
gradeSize = 0.175 * h
end end
Numbers.draw_number(percentOffsetX, percentOffsetY, 1, percent, 3, scoreNumber, true, percentSize, 1) Numbers.draw_number(percentOffsetX, percentOffsetY, 1, percent, 3, scoreNumber, true, percentSize, 1)
@ -324,8 +342,13 @@ draw_challenge = function(challenge, x, y, w, h, selected)
-- TODO: Missing completion bar -- TODO: Missing completion bar
-- TODO: Missing completion badge (COMP, HARD, UC, PUC) if badge then
-- TODO: Missing completion grade (S+, S, AAA+, etc.) gfx.BeginPath()
gfx.ImageRect(badgeOffsetX, badgeOffsetY, 93/81 * badgeSize, badgeSize, badge, 1, 0)
gfx.BeginPath()
gfx.ImageRect(gradeOffsetX, gradeOffsetY, gradeSize, gradeSize, grade, 1, 0)
end
---------------------------------------------------------- ----------------------------------------------------------
-- draw charts section -- draw charts section