Files
Techmino/parts/modes/custom_puzzle.lua
MrZ626 372f27b6ac 提升puzzleMark材质透明度
略微提升自定义-拼图性能
2021-08-10 20:09:47 +08:00

70 lines
1.6 KiB
Lua

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
return{
color=COLOR.white,
env={
fkey1=function(P)P.modeData.showMark=1-P.modeData.showMark end,
dropPiece=puzzleCheck,
},
load=function()
applyCustomGame()
local AItype=GAME.modeEnv.opponent:sub(1,2)
local AIlevel=tonumber(GAME.modeEnv.opponent:sub(-1))
PLY.newPlayer(1)
if AItype=='9S'then
PLY.newAIPlayer(2,AIBUILDER('9S',2*AIlevel))
elseif AItype=='CC'then
PLY.newAIPlayer(2,AIBUILDER('CC',2*AIlevel-1,math.floor(AIlevel*.5+1),true,20000+5000*AIlevel))
end
end,
mesDisp=function(P)
setFont(55)
mStr(P.stat.row,63,225)
mText(drawableText.line,63,290)
PLY.draw.applyField(P)
if P.modeData.showMark==0 then
local mark=TEXTURE.puzzleMark
local F=FIELD[P.modeData.finished+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
gc_draw(mark[T],30*x-30,600-30*y)
end
end end
end
PLY.draw.cancelField(P)
end,
}