New replay file naming and *fast replay saving.

*fast because lower CPU and IO use. No longer O(n²).
This commit is contained in:
Tetro48 2022-05-16 19:53:31 +07:00
parent 23a8c400ba
commit d7c83b0bc7

View File

@ -139,21 +139,18 @@ function GameMode:saveReplay()
if love.filesystem.getInfo("replays") == nil then if love.filesystem.getInfo("replays") == nil then
love.filesystem.createDirectory("replays") love.filesystem.createDirectory("replays")
end end
local replay_files = love.filesystem.getDirectoryItems("replays") local init_name = string.format("replays/%s.crp", os.date("%Y-%m-%d_%H-%M-%S"))
-- Select replay filename that doesn't collide with an existing one local replay_name = init_name
local replay_number = 0 local replay_number = 0
local collision = true while true do
while collision do if love.filesystem.getInfo(replay_name, "file") then
collision = false replay_number = replay_number + 1
replay_number = replay_number + 1 replay_name = string.format("%s (%d)", init_name, replay_number)
for key, file in pairs(replay_files) do else
if file == replay_number..".crp" then break
collision = true
break
end
end end
end end
love.filesystem.write("replays/"..replay_number..".crp", binser.serialize(replay)) love.filesystem.write(replay_name, binser.serialize(replay))
end end
function GameMode:addReplayInput(inputs) function GameMode:addReplayInput(inputs)