allow non netvar stored, cold record loading from lua

This commit is contained in:
Not
2022-10-07 01:35:24 +02:00
parent 1d4eb423d6
commit 3a61ffcabd
4 changed files with 319 additions and 237 deletions

View File

@ -1,15 +1,21 @@
local leaderboard = nil
local MapRecords
local maps
local mapIndex = 1
local scrollPos = 1
local modes = nil
local mode = 1
local prefMode = nil
local ModeSep
---- Imported functions ----
-- Imported functions -------
-- lb_common.lua
local ZoneAct = lb_ZoneAct
local TicsToTime = lb_TicsToTime
-- lb_store.lua
local GetMapRecords = lb_get_map_records
-----------------------------
local cv_kartencore
@ -25,10 +31,8 @@ end
local function updateModes()
-- set available modes for this map
modes = {}
for mode, scoreTable in pairs(leaderboard) do
if scoreTable[getMap()] then
table.insert(modes, mode)
end
for mode, _ in pairs(MapRecords) do
table.insert(modes, mode)
end
table.sort(modes)
@ -46,6 +50,8 @@ local function updateMapIndex(n)
mapIndex = mapIndexOffset(n)
scrollPos = 1
MapRecords = GetMapRecords(maps[mapIndex], ModeSep)
updateModes()
end
@ -337,7 +343,7 @@ local function drawScore(v, i, pos, score, highlight)
end
local function drawBrowser(v, player)
if not leaderboard then return end
if not MapRecords then return end
v.fadeScreen(0xFF00, 16)
@ -358,23 +364,20 @@ local function drawBrowser(v, player)
if not modes then return end
local gamemode = leaderboard[modes[mode]]
if not gamemode then return end
local records = MapRecords[modes[mode]]
if not records then return end
local scoreTable = gamemode[getMap()]
if not scoreTable then return end
local scores = #scoreTable
scrollPos = max(min(scrollPos, scores - 3), 1)
local endi = min(scrollPos + 7, scores)
local record_count = #records
scrollPos = max(min(scrollPos, record_count - 3), 1)
local endi = min(scrollPos + 7, record_count)
for i = scrollPos, endi do
drawScore(v, i - scrollPos + 1, i, scoreTable[i], scoreTable[i].name == player.name)
drawScore(v, i - scrollPos + 1, i, records[i], records[i].name == player.name)
end
end
rawset(_G, "DrawBrowser", drawBrowser)
local function initBrowser(lb)
leaderboard = lb
local function initBrowser(modeSep)
ModeSep = modeSep
-- set mapIndex to current map
for i, m in ipairs(maps) do
@ -384,6 +387,9 @@ local function initBrowser(lb)
end
end
-- initialize MapRecords
MapRecords = GetMapRecords(gamemap, ModeSep)
scrollPos = 1
updateModes()
end
@ -485,6 +491,6 @@ local function netvars(net)
mode = net($)
prefMode = net($)
scrollPos = net($)
leaderboard = net($)
MapRecords = net($)
end
addHook("NetVars", netvars)