From 4ec1f7c5c83892413d58f03a26f25502f7b4e2f1 Mon Sep 17 00:00:00 2001 From: ParticleG Date: Mon, 12 Jun 2023 12:10:46 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=81=97=E6=BC=8Fbreak?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.lua | 60 ++++++++++++++++++++--------------------- parts/player/player.lua | 34 +++++++++++------------ 2 files changed, 46 insertions(+), 48 deletions(-) diff --git a/main.lua b/main.lua index 41513e85..6905035c 100644 --- a/main.lua +++ b/main.lua @@ -10,8 +10,7 @@ Instructions: 1. I made a framework called Zframework, *most* code in Zframework are not directly relevant to game; 2. "xxx" are texts for reading by player, 'xxx' are string values just used in program; - 3. Some goto statement are used for better performance. All goto-labes have detailed names so don't be afraid; - 4. Except "gcinfo" function of lua itself, other "gc" are short for "graphics"; + 3. Except "gcinfo" function of lua itself, other "gc" are short for "graphics"; ]]-- @@ -560,7 +559,7 @@ applySettings() -- Load replays for _,fileName in next,fs.getDirectoryItems('replay') do - if fileName:sub(12,12):match("[a-zA-Z]") then + while fileName:sub(12,12):match("[a-zA-Z]") do local date,mode,version,player,seed,setting,mod local fileData=fs.read('replay/'..fileName) date, fileData=STRING.readLine(fileData)date=date:gsub("[a-zA-Z]","") @@ -569,36 +568,35 @@ for _,fileName in next,fs.getDirectoryItems('replay') do player, fileData=STRING.readLine(fileData) if player=="Local Player" then player="Stacker" end local success success,fileData=pcall(love.data.decompress,'string','zlib',fileData) - repeat - if not success then break end-- goto BREAK_cannotParse - seed, fileData=STRING.readLine(fileData) - setting,fileData=STRING.readLine(fileData)setting=JSON.decode(setting) - mod, fileData=STRING.readLine(fileData)mod=JSON.decode(mod) - if - not setting or - not mod or - not mode or - #mode==0 - then break end-- goto BREAK_cannotParse + if not success then break end + seed, fileData=STRING.readLine(fileData) + setting,fileData=STRING.readLine(fileData)setting=JSON.decode(setting) + mod, fileData=STRING.readLine(fileData)mod=JSON.decode(mod) + if + not setting or + not mod or + not mode or + #mode==0 + then break end - fs.remove('replay/'..fileName) - local newName=fileName:sub(1,10)..fileName:sub(15) - fs.write('replay/'..newName, - love.data.compress('string','zlib', - JSON.encode{ - date=date, - mode=mode, - version=version, - player=player, - seed=seed, - setting=setting, - mod=mod, - }.."\n".. - fileData - ) + fs.remove('replay/'..fileName) + local newName=fileName:sub(1,10)..fileName:sub(15) + fs.write('replay/'..newName, + love.data.compress('string','zlib', + JSON.encode{ + date=date, + mode=mode, + version=version, + player=player, + seed=seed, + setting=setting, + mod=mod, + }.."\n".. + fileData ) - fileName=newName - until true-- ::BREAK_cannotParse:: + ) + fileName=newName + break end local rep=DATA.parseReplay('replay/'..fileName) table.insert(REPLAY,rep) diff --git a/parts/player/player.lua b/parts/player/player.lua index 4e6d958b..58dbbfc2 100644 --- a/parts/player/player.lua +++ b/parts/player/player.lua @@ -1279,17 +1279,17 @@ function Player:hold_norm(ifpre) if not self:ifoverlap(H.bk,X,Y) then x,y=X,Y success=true - break-- goto BREAK_success + break end end + if success then + break + end end - -- All test failed, interrupt with sound - if not success then + if not success then -- All test failed, interrupt with sound SFX.play('drop_cancel') do return end end - -- - -- ::BREAK_success:: self.spinLast=false @@ -1344,23 +1344,23 @@ function Player:hold_swap(ifpre) local iki=phyHoldKickX[x==int(x)] local success - for Y=int(y),ceil(y+.5) do - for i=1,#iki do - local X=x+iki[i] - if not self:ifoverlap(H.bk,X,Y) then - x,y=X,Y - success=true - break-- goto BREAK_success + for Y=int(y),ceil(y+.5) do + for i=1,#iki do + local X=x+iki[i] + if not self:ifoverlap(H.bk,X,Y) then + x,y=X,Y + success=true + break + end + end + if success then + break end end - end - -- All test failed, interrupt with sound - if not success then + if not success then -- All test failed, interrupt with sound SFX.play('finesseError') do return end end - -- - -- ::BREAK_success:: self.spinLast=false