From d7c83b0bc7755cb6f14f4e7220cadccbdcae91ab Mon Sep 17 00:00:00 2001 From: Tetro48 Date: Mon, 16 May 2022 19:53:31 +0700 Subject: [PATCH] =?UTF-8?q?New=20replay=20file=20naming=20and=20*fast=20re?= =?UTF-8?q?play=20saving.=20*fast=20because=20lower=20CPU=20and=20IO=20use?= =?UTF-8?q?.=20No=20longer=20O(n=C2=B2).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tetris/modes/gamemode.lua | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/tetris/modes/gamemode.lua b/tetris/modes/gamemode.lua index 2734806..51c7f43 100644 --- a/tetris/modes/gamemode.lua +++ b/tetris/modes/gamemode.lua @@ -139,21 +139,18 @@ function GameMode:saveReplay() if love.filesystem.getInfo("replays") == nil then love.filesystem.createDirectory("replays") end - local replay_files = love.filesystem.getDirectoryItems("replays") - -- Select replay filename that doesn't collide with an existing one + local init_name = string.format("replays/%s.crp", os.date("%Y-%m-%d_%H-%M-%S")) + local replay_name = init_name local replay_number = 0 - local collision = true - while collision do - collision = false - replay_number = replay_number + 1 - for key, file in pairs(replay_files) do - if file == replay_number..".crp" then - collision = true - break - end + while true do + if love.filesystem.getInfo(replay_name, "file") then + replay_number = replay_number + 1 + replay_name = string.format("%s (%d)", init_name, replay_number) + else + break end end - love.filesystem.write("replays/"..replay_number..".crp", binser.serialize(replay)) + love.filesystem.write(replay_name, binser.serialize(replay)) end function GameMode:addReplayInput(inputs)