chalwheel: "fixed" title font sizes

This commit is contained in:
Hersi 2021-11-21 03:41:10 +01:00
parent b4b4f07b82
commit 00bd43d9e1
1 changed files with 29 additions and 32 deletions

View File

@ -1,4 +1,4 @@
local Numbers = require('common.numbers') local Numbers = require("common.numbers")
local DiffRectangle = require("components.diff_rectangle") local DiffRectangle = require("components.diff_rectangle")
-- Horizontal alignment -- Horizontal alignment
@ -86,7 +86,7 @@ local badges = {
local passStates = { local passStates = {
gfx.CreateSkinImage("challenge_select/pass_states/not_played.png", 0), gfx.CreateSkinImage("challenge_select/pass_states/not_played.png", 0),
gfx.CreateSkinImage("challenge_select/pass_states/failed.png", 0), gfx.CreateSkinImage("challenge_select/pass_states/failed.png", 0),
gfx.CreateSkinImage("challenge_select/pass_states/cleared.png", 0), gfx.CreateSkinImage("challenge_select/pass_states/cleared.png", 0)
} }
local scoreNumber = Numbers.load_number_image("score_num") local scoreNumber = Numbers.load_number_image("score_num")
@ -154,42 +154,28 @@ adjustScreen = function(x, y)
end end
check_or_create_cache = function(challenge) check_or_create_cache = function(challenge)
local namesLabelSize = 20
local percentLabelSize = 35
if not challengeCache[challenge.id] then if not challengeCache[challenge.id] then
challengeCache[challenge.id] = {} challengeCache[challenge.id] = {}
end end
if not challengeCache[challenge.id]["title"] then if not challengeCache[challenge.id]["title"] then
challengeCache[challenge.id]["title"] = gfx.CreateLabel(challenge.title, namesLabelSize, 0) challengeCache[challenge.id]["title"] = challenge.title
end end
if not challengeCache[challenge.id]["charts"] then if not challengeCache[challenge.id]["charts"] then
if challenge.missing_chart then if challenge.missing_chart then
local missing_text = "*COULD NOT FIND ALL CHARTS!*" local missing_text = "*COULD NOT FIND ALL CHARTS!*"
challengeCache[challenge.id]["charts"] = { challengeCache[challenge.id]["charts"] = { { ["title"] = missing_text, ["level"] = 0, ["difficulty"] = 0 } }
{
["title"] = gfx.CreateLabel(missing_text, namesLabelSize, 0),
["level"] = 0,
["difficulty"] = 0
},
}
end end
local charts = {} local charts = {}
for _, chart in ipairs(challenge.charts) do for _, chart in ipairs(challenge.charts) do
table.insert(charts, { table.insert(charts, { ["title"] = chart.title, ["level"] = chart.level, ["difficulty"] = chart.difficulty })
["title"] = gfx.CreateLabel(chart.title, namesLabelSize, 0),
["level"] = chart.level,
["difficulty"] = chart.difficulty
})
end end
challengeCache[challenge.id]["charts"] = charts challengeCache[challenge.id]["charts"] = charts
end end
if (not challengeCache[challenge.id]["percent"] if (not challengeCache[challenge.id]["percent"] or not challengeCache[challenge.id]["total_score"]
or not challengeCache[challenge.id]["total_score"]
or challengeCache[challenge.id]["total_score"] ~= challenge.bestScore) then or challengeCache[challenge.id]["total_score"] ~= challenge.bestScore) then
challengeCache[challenge.id]["percent"] = math.max(0, (challenge.bestScore - 8000000) // 10000) challengeCache[challenge.id]["percent"] = math.max(0, (challenge.bestScore - 8000000) // 10000)
challengeCache[challenge.id]["total_score"] = challenge.bestScore challengeCache[challenge.id]["total_score"] = challenge.bestScore
@ -232,29 +218,32 @@ draw_challenge = function(challenge, x, y, w, h, selected)
local stateWidth = w / 5 local stateWidth = w / 5
local stateHeight = stateWidth / stateLabelAspect local stateHeight = stateWidth / stateLabelAspect
local stateOffsetX = x + w / 32 local stateOffsetX = x + w / 32
local stateOffsetY = y + h / 16 local stateOffsetY = y + h / 32
local titleMargin = 6 local titleMargin = 6
local titleMaxWidth = 3 / 5 * w local titleFontSize = math.floor(0.11 * h) -- must be an integer
local titleMaxWidth = 6 / 9 * w
local titleCenterX = x + w - titleMargin - titleMaxWidth / 2 -- align right local titleCenterX = x + w - titleMargin - titleMaxWidth / 2 -- align right
local titleOffsetY = y + 1 / 11 * h -- align baseline local titleBaselineY = y + 0.025 * h -- align baseline
if not selected then if selected then
stateWidth = stateWidth * 0.9 stateWidth = stateWidth / 0.9
stateHeight = stateHeight * 0.9 stateHeight = stateHeight / 0.9
stateOffsetY = y + h / 32 stateOffsetY = y + h / 16
titleMaxWidth = 6 / 9 * w titleFontSize = math.floor(0.075 * h) -- must be an integer
titleMaxWidth = 3 / 5 * w
titleCenterX = x + w - titleMargin - titleMaxWidth / 2 -- align right titleCenterX = x + w - titleMargin - titleMaxWidth / 2 -- align right
titleOffsetY = y + titleMargin / 2 -- align baseline titleBaselineY = y + 0.09 * h -- align baseline
end end
gfx.BeginPath() gfx.BeginPath()
gfx.ImageRect(stateOffsetX, stateOffsetY, stateWidth, stateHeight, stateLabel, 1, 0) gfx.ImageRect(stateOffsetX, stateOffsetY, stateWidth, stateHeight, stateLabel, 1, 0)
local titleLabel = gfx.CreateLabel(challengeCache[challenge.id]["title"], titleFontSize, 0)
gfx.FontFace("divlit_custom.ttf") gfx.FontFace("divlit_custom.ttf")
gfx.TextAlign(gfx.TEXT_ALIGN_CENTER | gfx.TEXT_ALIGN_BASELINE) gfx.TextAlign(gfx.TEXT_ALIGN_CENTER | gfx.TEXT_ALIGN_BASELINE)
gfx.DrawLabel(challengeCache[challenge.id]["title"], titleCenterX, titleOffsetY, titleMaxWidth) gfx.DrawLabel(titleLabel, titleCenterX, titleBaselineY, titleMaxWidth)
end end
local _draw_jacket = function() local _draw_jacket = function()
@ -314,6 +303,11 @@ draw_challenge = function(challenge, x, y, w, h, selected)
else else
Numbers.draw_number(scoreOffsetX, scoreOffsetY, 1, score, 8, scoreNumber, true, scoreSize, 1) Numbers.draw_number(scoreOffsetX, scoreOffsetY, 1, score, 8, scoreNumber, true, scoreSize, 1)
end end
-- TODO: Missing completion bar
-- TODO: Missing completion badge (COMP, HARD, UC, PUC)
-- TODO: Missing completion grade (S+, S, AAA+, etc.)
end end
local _draw_charts = function() local _draw_charts = function()
@ -326,6 +320,7 @@ draw_challenge = function(challenge, x, y, w, h, selected)
local offsetY = y + 0.246 * h local offsetY = y + 0.246 * h
local titleMargin = 6 local titleMargin = 6
local titleFontSize = math.floor(0.11 * h) -- must be an integer
local titleMaxWidth = 6 / 9 * w local titleMaxWidth = 6 / 9 * w
local titleCenterX = x + w - titleMargin - titleMaxWidth / 2 -- align right local titleCenterX = x + w - titleMargin - titleMaxWidth / 2 -- align right
@ -338,6 +333,7 @@ draw_challenge = function(challenge, x, y, w, h, selected)
offsetX = x + 0.268 * w offsetX = x + 0.268 * w
offsetY = y + 0.256 * h offsetY = y + 0.256 * h
titleFontSize = math.floor(0.075 * h) -- must be an integer
titleMaxWidth = 3 / 5 * w titleMaxWidth = 3 / 5 * w
titleCenterX = x + w - titleMargin - titleMaxWidth / 2 -- align right titleCenterX = x + w - titleMargin - titleMaxWidth / 2 -- align right
end end
@ -347,8 +343,9 @@ draw_challenge = function(challenge, x, y, w, h, selected)
draw_diff_icon(chart, offsetX, ypos, diffIconWidth, diffIconHeight, selected) draw_diff_icon(chart, offsetX, ypos, diffIconWidth, diffIconHeight, selected)
local chartTitleLabel = gfx.CreateLabel(chart.title, titleFontSize, 0)
gfx.TextAlign(gfx.TEXT_ALIGN_CENTER | gfx.TEXT_ALIGN_MIDDLE) gfx.TextAlign(gfx.TEXT_ALIGN_CENTER | gfx.TEXT_ALIGN_MIDDLE)
gfx.DrawLabel(chart.title, titleCenterX, ypos + diffIconHeight / 2, titleMaxWidth) gfx.DrawLabel(chartTitleLabel, titleCenterX, ypos + diffIconHeight / 2, titleMaxWidth)
end end
end end