From 08775dcca93329d5f1936cd53e99cc764642367c Mon Sep 17 00:00:00 2001 From: MrZ626 <1046101471@qq.com> Date: Mon, 4 Oct 2021 00:39:35 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B4=E7=90=86=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- parts/modes/custom_puzzle.lua | 71 +++++++++++++++++------------------ 1 file changed, 35 insertions(+), 36 deletions(-) diff --git a/parts/modes/custom_puzzle.lua b/parts/modes/custom_puzzle.lua index ab6a87cc..ac1fddbd 100644 --- a/parts/modes/custom_puzzle.lua +++ b/parts/modes/custom_puzzle.lua @@ -1,48 +1,47 @@ -local gc=love.graphics -local gc_draw=gc.draw -local function puzzleCheck(P) - local D=P.modeData - local F=FIELD[D.finished+1] - for y=1,20 do - local L=P.field[y] - for x=1,10 do - local a,b=F[y][x],L and L[x]or 0 - if a~=0 then - if a==-1 then if b>0 then return end - elseif a<12 then if a~=b then return end - elseif a>7 then if b==0 then return end - end - end - end - end - D.finished=D.finished+1 - if FIELD[D.finished+1]then - P.waiting=26 - for _=#P.field,1,-1 do - FREEROW.discard(P.field[_]) - FREEROW.discard(P.visTime[_]) - P.field[_],P.visTime[_]=nil - end - SYSFX.newShade(1.4,P.absFieldX,P.absFieldY,300*P.size,610*P.size,.3,1,.3) - SFX.play('reach') - D.showMark=0 - else - D.showMark=1 - P:win('finish') - end -end +local gc_setColor,gc_draw=love.graphics.setColor,love.graphics.draw +local ply_applyField=PLY.draw.applyField return{ color=COLOR.white, env={ fkey1=function(P)P.modeData.showMark=1-P.modeData.showMark end, - dropPiece=puzzleCheck, + dropPiece=function(P) + local D=P.modeData + local F=FIELD[D.finished+1] + for y=1,20 do + local L=P.field[y] + for x=1,10 do + local a,b=F[y][x],L and L[x]or 0 + if a~=0 then + if a==-1 then if b>0 then return end + elseif a<12 then if a~=b then return end + elseif a>7 then if b==0 then return end + end + end + end + end + D.finished=D.finished+1 + if FIELD[D.finished+1]then + P.waiting=26 + for _=#P.field,1,-1 do + FREEROW.discard(P.field[_]) + FREEROW.discard(P.visTime[_]) + P.field[_],P.visTime[_]=nil + end + SYSFX.newShade(1.4,P.absFieldX,P.absFieldY,300*P.size,610*P.size,.3,1,.3) + SFX.play('reach') + D.showMark=0 + else + D.showMark=1 + P:win('finish') + end + end, mesDisp=function(P) - PLY.draw.applyField(P) + ply_applyField(P) if P.modeData.showMark==0 then local mark=TEXTURE.puzzleMark local F=FIELD[P.modeData.finished+1] - gc.setColor(1,1,1) + gc_setColor(1,1,1) for y=1,20 do for x=1,10 do local T=F[y][x] if T~=0 then