Replays list is now sorted, and replays are smaller.

This commit is contained in:
BoatsandJoes
2021-12-05 15:41:51 -06:00
parent 59c7834c9a
commit a5750e4959
2 changed files with 36 additions and 18 deletions

View File

@@ -14,10 +14,26 @@ function ReplaySelectScene:new()
replay_file_list = love.filesystem.getDirectoryItems("replays")
for i=1,#replay_file_list do
local data = love.filesystem.read("replays/"..replay_file_list[i])
local object = binser.deserialize(data)
replays[i] = object[1]
local new_replay = binser.deserialize(data)[1]
-- Insert, sorting by date played, newest first
local start_index, mid_index, end_index = 1, 1, i
if i ~= 1 then
while start_index <= end_index do
mid_index = math.floor((start_index + end_index) / 2)
print(start_index, mid_index, end_index)
print(replays[mid_index])
print(new_replay)
if os.difftime(replays[mid_index]["timestamp"], new_replay["timestamp"]) <= 0 then
-- search first half
end_index = mid_index - 1
else
-- search second half
start_index = mid_index + 1
end
end
end
table.insert(replays, mid_index, new_replay)
end
-- TODO sort replays list
if table.getn(replays) == 0 then
self.display_warning = true
current_replay = 1
@@ -87,14 +103,13 @@ function ReplaySelectScene:render()
end
love.graphics.setColor(1, 1, 1, 0.5)
love.graphics.rectangle("fill", 20, 258, 500, 22)
love.graphics.rectangle("fill", 3, 258, 634, 22)
love.graphics.setFont(font_3x5_2)
for idx, replay in pairs(replays) do
for idx, replay in ipairs(replays) do
if(idx >= self.menu_state.replay-9 and idx <= self.menu_state.replay+9) then
-- TODO format timer into minutes:seconds:centiseconds
local display_string = replay["mode"].." "..replay["ruleset"].." "..replay["timer"].." "..replay["level"].." "..os.date("%c", replay["timestamp"])
love.graphics.printf(display_string, 40, (260 - 20*(self.menu_state.replay)) + 20 * idx, 500, "left")
local display_string = os.date("%c", replay["timestamp"]).." "..replay["mode"].." "..replay["ruleset"].." Level: "..replay["level"].." Time: "..formatTime(replay["timer"])
love.graphics.printf(display_string, 6, (260 - 20*(self.menu_state.replay)) + 20 * idx, 640, "left")
end
end
end