fixed challenge pass_state not updating when first clearing
bunch of cleanup in chalwheel.lua
This commit is contained in:
parent
c20a8d0676
commit
3db4d2e5f2
|
@ -1,35 +1,16 @@
|
||||||
local Numbers = require("common.numbers")
|
local Numbers = require("common.numbers")
|
||||||
local DiffRectangle = require("components.diff_rectangle")
|
local DiffRectangle = require("components.diff_rectangle")
|
||||||
|
|
||||||
-- Horizontal alignment
|
|
||||||
TEXT_ALIGN_LEFT = 1
|
|
||||||
TEXT_ALIGN_CENTER = 2
|
|
||||||
TEXT_ALIGN_RIGHT = 4
|
|
||||||
-- Vertical alignment
|
|
||||||
TEXT_ALIGN_TOP = 8
|
|
||||||
TEXT_ALIGN_MIDDLE = 16
|
|
||||||
TEXT_ALIGN_BOTTOM = 32
|
|
||||||
TEXT_ALIGN_BASELINE = 64
|
|
||||||
|
|
||||||
local jacket = nil;
|
|
||||||
local selectedIndex = 1
|
|
||||||
local selectedDiff = 1
|
|
||||||
local challengeCache = {}
|
|
||||||
local doffset = 0
|
|
||||||
local soffset = 0
|
|
||||||
local diffColors = { { 0, 0, 255 }, { 0, 255, 0 }, { 255, 0, 0 }, { 255, 0, 255 } }
|
|
||||||
local timer = 0
|
|
||||||
local scrollmul = 0
|
|
||||||
local scrollmulOffset = 0 -- bc we have min/max the game doesn't know we have to account for extra
|
|
||||||
local effector = 0
|
|
||||||
local searchText = gfx.CreateLabel("", 5, 0)
|
|
||||||
local searchIndex = 1
|
|
||||||
|
|
||||||
local backgroundImage = gfx.CreateSkinImage("bg_pattern.png", gfx.IMAGE_REPEATX | gfx.IMAGE_REPEATY)
|
local backgroundImage = gfx.CreateSkinImage("bg_pattern.png", gfx.IMAGE_REPEATX | gfx.IMAGE_REPEATY)
|
||||||
local challengeBGImage = gfx.CreateSkinImage("challenge_select/bg.png", 0)
|
local challengeBGImage = gfx.CreateSkinImage("challenge_select/bg.png", 0)
|
||||||
local challengeCardBGImage = gfx.CreateSkinImage("challenge_select/small_box.png", 0)
|
local challengeCardBGImage = gfx.CreateSkinImage("challenge_select/small_box.png", 0)
|
||||||
|
|
||||||
local jacketFallback = gfx.CreateSkinImage("song_select/loading.png", 0)
|
local jacketFallback = gfx.CreateSkinImage("song_select/loading.png", 0)
|
||||||
|
|
||||||
|
--[[ will be reimplemented sometime later
|
||||||
|
local soffset = 0
|
||||||
|
local searchText = gfx.CreateLabel("", 5, 0)
|
||||||
|
local searchIndex = 1
|
||||||
|
|
||||||
local showGuide = game.GetSkinSetting("show_guide")
|
local showGuide = game.GetSkinSetting("show_guide")
|
||||||
local legendTable = {
|
local legendTable = {
|
||||||
{
|
{
|
||||||
|
@ -63,6 +44,8 @@ local legendTable = {
|
||||||
["image"] = gfx.CreateSkinImage("legend/start.png", 0)
|
["image"] = gfx.CreateSkinImage("legend/start.png", 0)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
--]]
|
||||||
|
|
||||||
local grades = {
|
local grades = {
|
||||||
["D"] = gfx.CreateSkinImage("common/grades/D.png", 0),
|
["D"] = gfx.CreateSkinImage("common/grades/D.png", 0),
|
||||||
["C"] = gfx.CreateSkinImage("common/grades/C.png", 0),
|
["C"] = gfx.CreateSkinImage("common/grades/C.png", 0),
|
||||||
|
@ -90,33 +73,19 @@ local passStates = {
|
||||||
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 scoreNumbers = Numbers.load_number_image("score_num")
|
||||||
|
|
||||||
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)
|
|
||||||
}
|
|
||||||
|
|
||||||
local difficultyLabelText = { "NOV", "ADV", "EXH", "MXM", "INF", "GRV", "HVN", "VVD" }
|
|
||||||
|
|
||||||
gfx.LoadSkinFont("divlit_custom.ttf")
|
|
||||||
gfx.LoadSkinFont("dfmarugoth.ttf");
|
gfx.LoadSkinFont("dfmarugoth.ttf");
|
||||||
|
|
||||||
game.LoadSkinSample("menu_click")
|
game.LoadSkinSample("menu_click")
|
||||||
game.LoadSkinSample("click-02")
|
|
||||||
game.LoadSkinSample("woosh")
|
game.LoadSkinSample("woosh")
|
||||||
|
|
||||||
|
-- Wheel variables
|
||||||
local wheelSize = 5
|
local wheelSize = 5
|
||||||
|
|
||||||
get_page_size = function()
|
local selectedIndex = 1
|
||||||
return math.floor(wheelSize / 2)
|
local challengeCache = {}
|
||||||
end
|
local timer = 0
|
||||||
|
|
||||||
-- Window variables
|
-- Window variables
|
||||||
local resX, resY
|
local resX, resY
|
||||||
|
@ -191,8 +160,10 @@ local check_or_create_cache = function(challenge)
|
||||||
challengeCache[challenge.id]["total_score"] = challenge.bestScore
|
challengeCache[challenge.id]["total_score"] = challenge.bestScore
|
||||||
end
|
end
|
||||||
|
|
||||||
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]
|
if (not challengeCache[challenge.id]["pass_state"] or not challengeCache[challenge.id]["pass_state_idx"]
|
||||||
|
or challengeCache[challenge.id]["pass_state_idx"] ~= passState) then
|
||||||
|
challengeCache[challenge.id]["pass_state_idx"] = passState
|
||||||
challengeCache[challenge.id]["pass_state"] = passStates[passState]
|
challengeCache[challenge.id]["pass_state"] = passStates[passState]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -280,7 +251,7 @@ draw_challenge = function(challenge, x, y, w, h, selected)
|
||||||
----------------------------------------------------------
|
----------------------------------------------------------
|
||||||
-- draw stats section
|
-- draw stats section
|
||||||
----------------------------------------------------------
|
----------------------------------------------------------
|
||||||
local textSizeCorrection = h / gfx.ImageSize(scoreNumber[1])
|
local textSizeCorrection = h / gfx.ImageSize(scoreNumbers[1])
|
||||||
|
|
||||||
local percentOffsetX = x + 6 / 12 * w
|
local percentOffsetX = x + 6 / 12 * w
|
||||||
local percentOffsetY = y + 0.87 * h
|
local percentOffsetY = y + 0.87 * h
|
||||||
|
@ -328,16 +299,16 @@ draw_challenge = function(challenge, x, y, w, h, selected)
|
||||||
gradeSize = 0.175 * 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, scoreNumbers, true, percentSize, 1)
|
||||||
-- TODO: Missing percentage character
|
-- TODO: Missing percentage character
|
||||||
|
|
||||||
if selected then
|
if selected then
|
||||||
Numbers.draw_number(
|
Numbers.draw_number(
|
||||||
scoreUpperOffsetX, scoreUpperOffsetY, 1, scoreUpper, 4, scoreNumber, true, scoreUpperSize, 1
|
scoreUpperOffsetX, scoreUpperOffsetY, 1, scoreUpper, 4, scoreNumbers, true, scoreUpperSize, 1
|
||||||
)
|
)
|
||||||
Numbers.draw_number(scoreOffsetX, scoreOffsetY, 1, score, 4, scoreNumber, true, scoreSize, 1)
|
Numbers.draw_number(scoreOffsetX, scoreOffsetY, 1, score, 4, scoreNumbers, true, scoreSize, 1)
|
||||||
else
|
else
|
||||||
Numbers.draw_number(scoreOffsetX, scoreOffsetY, 1, score, 8, scoreNumber, true, scoreSize, 1)
|
Numbers.draw_number(scoreOffsetX, scoreOffsetY, 1, score, 8, scoreNumbers, true, scoreSize, 1)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- TODO: Missing completion bar
|
-- TODO: Missing completion bar
|
||||||
|
@ -442,6 +413,7 @@ draw_chalwheel = function(x, y, w, h)
|
||||||
draw_selected(chalwheel.challenges[selectedIndex], xpos, ypos, selectedWidth, selectedHeight)
|
draw_selected(chalwheel.challenges[selectedIndex], xpos, ypos, selectedWidth, selectedHeight)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--[[ will be reimplemented sometime later
|
||||||
draw_legend_pane = function(x, y, w, h, obj)
|
draw_legend_pane = function(x, y, w, h, obj)
|
||||||
local xpos = x + 5
|
local xpos = x + 5
|
||||||
local ypos = y
|
local ypos = y
|
||||||
|
@ -472,7 +444,9 @@ draw_legend = function(x, y, w, h)
|
||||||
local xOffset = draw_legend_pane(xpos + (legendWidth * (i - 1)), y + 5, legendWidth, h - 10, legendTable[i])
|
local xOffset = draw_legend_pane(xpos + (legendWidth * (i - 1)), y + 5, legendWidth, h - 10, legendTable[i])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
--]]
|
||||||
|
|
||||||
|
--[[ will be reimplemented sometime later
|
||||||
draw_search = function(x, y, w, h)
|
draw_search = function(x, y, w, h)
|
||||||
soffset = soffset + (searchIndex) - (chalwheel.searchInputActive and 0 or 1)
|
soffset = soffset + (searchIndex) - (chalwheel.searchInputActive and 0 or 1)
|
||||||
if searchIndex ~= (chalwheel.searchInputActive and 0 or 1) then
|
if searchIndex ~= (chalwheel.searchInputActive and 0 or 1) then
|
||||||
|
@ -484,7 +458,7 @@ draw_search = function(x, y, w, h)
|
||||||
local bgfade = 1 - (searchIndex + soffset)
|
local bgfade = 1 - (searchIndex + soffset)
|
||||||
-- if not chalwheel.searchInputActive then bgfade = soffset end
|
-- if not chalwheel.searchInputActive then bgfade = soffset end
|
||||||
gfx.FillColor(0, 0, 0, math.floor(200 * bgfade))
|
gfx.FillColor(0, 0, 0, math.floor(200 * bgfade))
|
||||||
gfx.Rect(0, 0, resx, resy)
|
gfx.Rect(0, 0, resX, resY)
|
||||||
gfx.Fill()
|
gfx.Fill()
|
||||||
gfx.ForceRender()
|
gfx.ForceRender()
|
||||||
local xpos = x + (searchIndex + soffset) * w
|
local xpos = x + (searchIndex + soffset) * w
|
||||||
|
@ -504,6 +478,7 @@ draw_search = function(x, y, w, h)
|
||||||
gfx.DrawLabel(searchText, xpos + 10, y + (h / 2), w - 20)
|
gfx.DrawLabel(searchText, xpos + 10, y + (h / 2), w - 20)
|
||||||
|
|
||||||
end
|
end
|
||||||
|
--]]
|
||||||
|
|
||||||
render = function(deltaTime)
|
render = function(deltaTime)
|
||||||
-- detect resolution change
|
-- detect resolution change
|
||||||
|
@ -527,20 +502,16 @@ render = function(deltaTime)
|
||||||
-- draw chalwheel
|
-- draw chalwheel
|
||||||
gfx.BeginPath();
|
gfx.BeginPath();
|
||||||
draw_chalwheel((resX - fullX) / 2, 0, fullX, fullY)
|
draw_chalwheel((resX - fullX) / 2, 0, fullX, fullY)
|
||||||
|
|
||||||
-- Draw Legend Information
|
-- Draw Legend Information
|
||||||
--[[
|
--[[ will be reimplemented sometime later
|
||||||
if showGuide then
|
draw_legend(0, fullX * 14 / 15, fullX, fullY / 15)
|
||||||
draw_legend(0, (fifthY / 3) * 14, fullX, (fifthY / 3) * 1)
|
|
||||||
end
|
|
||||||
--]]
|
--]]
|
||||||
|
|
||||||
-- draw text search
|
-- draw text search
|
||||||
|
--[[ will be reimplemented sometime later
|
||||||
|
draw_search(fullX * 2 / 5, 5, fullX * 3 / 5, fullY / 25)
|
||||||
|
|
||||||
--[[
|
|
||||||
draw_search(fifthX * 2, 5, fifthX * 3, fifthY / 5)
|
|
||||||
|
|
||||||
doffset = doffset * 0.9
|
|
||||||
soffset = soffset * 0.8
|
soffset = soffset * 0.8
|
||||||
if chalwheel.searchStatus then
|
if chalwheel.searchStatus then
|
||||||
gfx.BeginPath()
|
gfx.BeginPath()
|
||||||
|
@ -549,45 +520,25 @@ render = function(deltaTime)
|
||||||
gfx.TextAlign(gfx.TEXT_ALIGN_LEFT + gfx.TEXT_ALIGN_TOP)
|
gfx.TextAlign(gfx.TEXT_ALIGN_LEFT + gfx.TEXT_ALIGN_TOP)
|
||||||
gfx.Text(chalwheel.searchStatus, 3, 3)
|
gfx.Text(chalwheel.searchStatus, 3, 3)
|
||||||
end
|
end
|
||||||
gfx.LoadSkinFont("dfmarugoth.ttf");
|
--]]
|
||||||
|
|
||||||
|
gfx.FontFace("dfmarugoth.ttf");
|
||||||
gfx.ResetTransform()
|
gfx.ResetTransform()
|
||||||
gfx.ForceRender()
|
gfx.ForceRender()
|
||||||
--]]
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
get_page_size = function()
|
||||||
|
return math.floor(wheelSize / 2)
|
||||||
|
end
|
||||||
|
|
||||||
set_index = function(newIndex, scrollamt)
|
set_index = function(newIndex, scrollamt)
|
||||||
if newIndex ~= selectedIndex then
|
if newIndex ~= selectedIndex then
|
||||||
game.PlaySample("menu_click")
|
game.PlaySample("menu_click")
|
||||||
scrollmulOffset = 0
|
|
||||||
end
|
end
|
||||||
selectedIndex = newIndex
|
selectedIndex = newIndex
|
||||||
scrollmul = scrollamt + scrollmulOffset
|
end
|
||||||
end;
|
|
||||||
|
|
||||||
local badgeRates = {
|
|
||||||
0.5, -- Played
|
|
||||||
1.0, -- Cleared
|
|
||||||
1.02, -- Hard clear
|
|
||||||
1.04, -- UC
|
|
||||||
1.1 -- PUC
|
|
||||||
}
|
|
||||||
|
|
||||||
local gradeRates = {
|
|
||||||
{ ["min"] = 9900000, ["rate"] = 1.05 }, -- S
|
|
||||||
{ ["min"] = 9800000, ["rate"] = 1.02 }, -- AAA+
|
|
||||||
{ ["min"] = 9700000, ["rate"] = 1 }, -- AAA
|
|
||||||
{ ["min"] = 9500000, ["rate"] = 0.97 }, -- AA+
|
|
||||||
{ ["min"] = 9300000, ["rate"] = 0.94 }, -- AA
|
|
||||||
{ ["min"] = 9000000, ["rate"] = 0.91 }, -- A+
|
|
||||||
{ ["min"] = 8700000, ["rate"] = 0.88 }, -- A
|
|
||||||
{ ["min"] = 7500000, ["rate"] = 0.85 }, -- B
|
|
||||||
{ ["min"] = 6500000, ["rate"] = 0.82 }, -- C
|
|
||||||
{ ["min"] = 0, ["rate"] = 0.8 } -- D
|
|
||||||
}
|
|
||||||
|
|
||||||
challenges_changed = function(withAll)
|
challenges_changed = function(withAll)
|
||||||
if not withAll then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue