chalwheel: "fixed" title font sizes
This commit is contained in:
parent
b4b4f07b82
commit
00bd43d9e1
|
@ -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,49 +154,35 @@ 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
|
||||||
end
|
end
|
||||||
|
|
||||||
if not challengeCache[challenge.id]["pass_state"] then
|
if not challengeCache[challenge.id]["pass_state"] then
|
||||||
local passState = math.min(challenge.topBadge, 2) + 1 --challenge.topBadge -> [1, 3]
|
local passState = math.min(challenge.topBadge, 2) + 1 -- challenge.topBadge -> [1, 3]
|
||||||
challengeCache[challenge.id]["pass_state"] = passStates[passState]
|
challengeCache[challenge.id]["pass_state"] = passStates[passState]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue