forked from Not/srb2k-leaderboard
allow non netvar stored, cold record loading from lua
This commit is contained in:
44
browser.lua
44
browser.lua
@ -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)
|
||||
|
Reference in New Issue
Block a user