From 849e5b586ec58a09a33c0ffd44dc822722363c5b Mon Sep 17 00:00:00 2001 From: MrZ_26 Date: Tue, 4 Feb 2020 19:33:41 +0800 Subject: [PATCH] Alpha V0.7.15 --- SFX/button.ogg | Bin 6085 -> 7669 bytes SFX/swipe.ogg | Bin 0 -> 12968 bytes call&sys.lua | 161 ++++++++---------- conf.lua | 2 +- dataList.lua | 350 ++++++++++++++------------------------ font.ttf | Bin 79448 -> 85296 bytes gamefunc.lua | 43 +++-- image/virtualkey/func.png | Bin 0 -> 370 bytes image/virtualkey/swap.png | Bin 300 -> 0 bytes language/chi.lua | 36 ++-- language/eng.lua | 42 +++-- list.lua | 157 +++++++++-------- main.lua | 19 +-- paint.lua | 38 +++-- timer.lua | 5 + toolfunc.lua | 49 ++++-- 16 files changed, 433 insertions(+), 469 deletions(-) create mode 100644 SFX/swipe.ogg create mode 100644 image/virtualkey/func.png delete mode 100644 image/virtualkey/swap.png diff --git a/SFX/button.ogg b/SFX/button.ogg index 443b5c7cf34ccc6482cefa8f2750ee905250a96f..0780bd6ee55c3b587eb5cd1dd1f4ed353e1da347 100644 GIT binary patch literal 7669 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 v?GLk^9RnpDMY=*w|q{M`Q+M*mGR;ln`EpXil literal 6085 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 ZCA)PFdo=yVj3L10 then sx=nil end + if sy<1 or sy>20 then sy=nil end + if sx and sy then + preField[sy][sx]=pen + end +end +function touchMove.play(id,x,y,dx,dy) if setting.virtualkeySwitch then local l=tc.getTouches() for n=1,#virtualkey do @@ -323,6 +325,8 @@ function keyDown.custom(key) gotoScene("draw") elseif key=="return"then loadGame(0,1) + elseif key=="space"then + loadGame(0,2) elseif key=="escape"then back() end @@ -383,7 +387,7 @@ function keyDown.setting2(key) end end function keyDown.play(key) - if key=="escape"then back()end + if key=="escape"then pauseGame()end local m=setting.keyMap for p=1,human do local lib=setting.keyLib[p] @@ -397,6 +401,13 @@ function keyDown.play(key) end end end +function keyDown.pause(key) + if key=="escape"then + back() + elseif key=="return"or key=="space"then + resumeGame() + end +end keyUp={} function keyUp.play(key) local m=setting.keyMap @@ -518,9 +529,9 @@ function love.mousemoved(x,y,dx,dy,t) mx,my=xOy:inverseTransformPoint(x,y) Buttons.sel=nil if mouseMove[scene]then - mouseMove[scene](mx,my,dx,dy) + mouseMove[scene](mx,my,dx/scr.k,dy/scr.k) end - for N,B in next,Buttons[scene]do + for _,B in next,Buttons[scene]do if not(B.hide and B.hide())then if abs(mx-B.x)=100 then - readyDrawFrame=readyDrawFrame-100 - gc.clear() - love.draw() - gc.present() - end - if not(wd.hasFocus()or keeprun)then - focus=false - ms.setVisible(true) - if bgmPlaying then bgm[bgmPlaying]:pause()end - if scene=="play"then - for i=1,#players.alive do - local l=players.alive[i].keyPressing - for j=1,#l do - if l[j]then - releaseKey(j,players.alive[i]) - end - end - end - end - end - else - tm.sleep(.5) - if wd.hasFocus()then - tm.step() - focus=true - ms.setVisible(false) - if bgmPlaying then bgm[bgmPlaying]:play()end - end + tm.step() + -- love.receiveData(id,data) + love.update(tm.getDelta()) + readyDrawFrame=readyDrawFrame+setting.frameMul + if readyDrawFrame>=100 then + readyDrawFrame=readyDrawFrame-100 + gc.clear() + love.draw() + gc.present() end ::L::if Timer()-frameT<1/60 then goto L end frameT=Timer() diff --git a/conf.lua b/conf.lua index 12295224..49d17fb1 100644 --- a/conf.lua +++ b/conf.lua @@ -9,7 +9,7 @@ function love.conf(t) t.audio.mixwithsystem=true--Switch on to keep sysBGM local W=t.window - W.title="Techmino V0.7.14" + W.title="Techmino V0.7.15" W.icon="/image/icon.png" W.width,W.height=1280,720 W.minwidth,W.minheight=640,360 diff --git a/dataList.lua b/dataList.lua index f9e3f924..c55e2f86 100644 --- a/dataList.lua +++ b/dataList.lua @@ -155,20 +155,22 @@ loadmode={ modeEnv.target=nil createPlayer(2,965,360,.5,modeEnv.opponent) end - local h=20 - ::R:: - for i=1,10 do - if preField[h][i]>0 then modeEnv.Fkey=true goto L end - end - h=h-1 - if h>0 then goto R end - ::L:: - for _,P in next,players.alive do - local t=P.showTime*3 - for y=1,h do - P.field[y]=getNewRow(0) - P.visTime[y]=getNewRow(t) - for x=1,10 do P.field[y][x]=preField[y][x]end + if curMode.lv==1 then + local h=20 + ::R:: + for i=1,10 do + if preField[h][i]>0 then goto L end + end + h=h-1 + if h>0 then goto R end + ::L:: + for _,P in next,players.alive do + local t=P.showTime*3 + for y=1,h do + P.field[y]=getNewRow(0) + P.visTime[y]=getNewRow(t) + for x=1,10 do P.field[y][x]=preField[y][x]end + end end end end, @@ -236,7 +238,7 @@ mesDisp={ end, dig=function() setFont(70) - mStr(P.cstat.event,-82,310) + mStr(P.cstat.event-20,-82,310) setFont(30) mStr("Wave",-82,375) end, @@ -272,7 +274,7 @@ mesDisp={ setFont(30) gc.print(up0to4[P.strength],-132,290) for i=1,P.strength do - gc.draw(badgeIcon,16*i-142,260) + gc.draw(badgeIcon,16*i-138,260) end end, techmino99=function() @@ -287,7 +289,7 @@ mesDisp={ setFont(30) gc.print(up0to4[P.strength],-132,290) for i=1,P.strength do - gc.draw(badgeIcon,16*i-142,260) + gc.draw(badgeIcon,16*i-138,260) end end, drought=function() @@ -299,6 +301,15 @@ mesDisp={ setFont(75) mStr(max(P.gameEnv.target-P.cstat.row,0),-82,280) end + if curMode.lv==2 and(P.keyPressing[9]or frame<180)then + gc.setLineWidth(3) + for y=1,20 do for x=1,10 do + if preField[y][x]>0 then + gc.setColor(blockColor[preField[y][x]]) + gc.rectangle("line",30*x-25,605-30*y,20,20) + end + end end + end end } Event={ @@ -447,8 +458,7 @@ Event_gameover={ end end showText(P,text.win,"beat",90,nil,nil,true) - if P.id==1 and players[2]and players[2].ai then SFX("win")BGM()end - newTask(Event_task.win,P) + SFX("win") end, lose=function() P.alive=false @@ -520,58 +530,33 @@ Event_gameover={ BGM("end") end end - newTask(Event_task.lose,P) if #players.alive==1 then local t=P P=players.alive[1] Event_gameover.win() P=t end + if #players>1 then + newTask(Event_task.lose,P) + end end, } Event_task={ - win=function(P) - P.endCounter=P.endCounter+1 - if P.endCounter>80 then - if P.gameEnv.visible=="show"then - for i=1,#P.field do - for j=1,10 do - if P.visTime[i][j]>0 then - P.visTime[i][j]=P.visTime[i][j]-1 - end - end - end - if P.endCounter==100 then - while P.field[1]do - removeRow(P.field) - removeRow(P.visTime) - end - return true - end - elseif P.endCounter==100 then - return true - end - end - end, lose=function(P) P.endCounter=P.endCounter+1 if P.endCounter>80 then - if P.gameEnv.visible=="show"then - for i=1,#P.field do - for j=1,10 do - if P.visTime[i][j]>0 then - P.visTime[i][j]=P.visTime[i][j]-1 - end + for i=1,#P.field do + for j=1,10 do + if P.visTime[i][j]>0 then + P.visTime[i][j]=P.visTime[i][j]-1 end end - if P.endCounter==100 then - while P.field[1]do - removeRow(P.field) - removeRow(P.visTime) - end - return true + end + if P.endCounter==100 then + while P.field[1]do + removeRow(P.field) + removeRow(P.visTime) end - elseif P.endCounter==100 then return true end end @@ -589,7 +574,7 @@ Event_task={ dig_normal=function(P) if not P.control then return end P.counter=P.counter+1 - if #P.clearing==0 and P.counter>=max(90,180-2*P.cstat.event)then + if P.counter>=max(90,180-2*P.cstat.event)then garbageRise(10,1,rnd(10)) P.counter=0 P.cstat.event=P.cstat.event+1 @@ -598,7 +583,7 @@ Event_task={ dig_lunatic=function(P) if not P.control then return end P.counter=P.counter+1 - if #P.clearing==0 and P.counter>=max(45,80-.4*P.cstat.event)then + if P.counter>=max(45,80-.4*P.cstat.event)then garbageRise(11+P.cstat.event%3,1,rnd(10)) P.counter=0 P.cstat.event=P.cstat.event+1 @@ -607,7 +592,7 @@ Event_task={ survivor_easy=function(P) if not P.control then return end P.counter=P.counter+1 - if P.counter==max(60,150-2*P.cstat.event)then + if P.counter>=max(60,150-2*P.cstat.event)then ins(P.atkBuffer,{pos=rnd(10),amount=1,countdown=30,cd0=30,time=0,sent=false,lv=1}) P.counter=0 if P.cstat.event==45 then showText(P,text.maxspeed,"appear",80,-140)end @@ -617,7 +602,7 @@ Event_task={ survivor_normal=function(P) if not P.control then return end P.counter=P.counter+1 - if P.counter==max(90,180-2*P.cstat.event)then + if P.counter>=max(90,180-2*P.cstat.event)then local d=P.cstat.event+1 if d%4==0 then ins(P.atkBuffer,{pos=rnd(10),amount=1,countdown=60,cd0=60,time=0,sent=false,lv=1}) elseif d%4==1 then ins(P.atkBuffer,{pos=rnd(10),amount=2,countdown=70,cd0=70,time=0,sent=false,lv=1}) @@ -634,7 +619,7 @@ Event_task={ survivor_hard=function(P) if not P.control then return end P.counter=P.counter+1 - if P.counter==max(60,180-2*P.cstat.event)then + if P.counter>=max(60,180-2*P.cstat.event)then if P.cstat.event%3<2 then ins(P.atkBuffer,{pos=rnd(10),amount=1,countdown=0,cd0=0,time=0,sent=false,lv=1}) else @@ -650,7 +635,7 @@ Event_task={ survivor_lunatic=function(P) if not P.control then return end P.counter=P.counter+1 - if P.counter==max(60,150-P.cstat.event)then + if P.counter>=max(60,150-P.cstat.event)then local t=max(60,90-P.cstat.event) ins(P.atkBuffer,{pos=rnd(10),amount=4,countdown=t,cd0=t,time=0,sent=false,lv=3}) P.atkBuffer.sum=P.atkBuffer.sum+4 @@ -663,7 +648,7 @@ Event_task={ survivor_ultimate=function(P) if not P.control then return end P.counter=P.counter+1 - if P.counter==max(300,600-10*P.cstat.event)then + if P.counter>=max(300,600-10*P.cstat.event)then local t=max(300,480-12*P.cstat.event) ins(P.atkBuffer,{pos=rnd(10),amount=4,countdown=t,cd0=t,time=0,sent=false,lv=2}) ins(P.atkBuffer,{pos=rnd(10),amount=4,countdown=t,cd0=t,time=0,sent=false,lv=3}) @@ -714,98 +699,84 @@ defaultModeEnv={ drop=60, target=10, reach=Event_gameover.win, - bg="strap", - bgm="race", + bg="strap",bgm="race", }, { drop=60, target=20, reach=Event_gameover.win, - bg="strap", - bgm="race", + bg="strap",bgm="race", }, { drop=60, target=40, reach=Event_gameover.win, - bg="strap", - bgm="race", + bg="strap",bgm="race", }, { drop=60, target=100, reach=Event_gameover.win, - bg="strap", - bgm="race", + bg="strap",bgm="race", }, { drop=60, target=400, reach=Event_gameover.win, - bg="strap", - bgm="push", + bg="strap",bgm="push", }, { drop=60, target=1000, reach=Event_gameover.win, - bg="strap", - bgm="push", + bg="strap",bgm="push", }, }, marathon={ { - drop=60, - lock=60, + drop=60,lock=60, fall=30, target=200, reach=Event.marathon_reach, - bg="strap", - bgm="way", + bg="strap",bgm="way", }, { drop=60, fall=20, target=10, reach=Event.marathon_reach, - bg="strap", - bgm="way", + bg="strap",bgm="way", }, { _20G=true, fall=15, target=200, reach=Event.marathon_reach, - bg="strap", - bgm="race", + bg="strap",bgm="race", }, }, master={ { _20G=true, - drop=0, - lock=rush_lock[1], + drop=0,lock=rush_lock[1], wait=rush_wait[1], fall=rush_fall[1], target=0, reach=Event.master_reach_lunatic, das=9,arr=3, freshLimit=15, - bg="game2", - bgm="secret8th", + bg="game2",bgm="secret8th", }, { _20G=true, - drop=0, - lock=death_lock[1], + drop=0,lock=death_lock[1], wait=death_wait[1], fall=death_fall[1], target=0, reach=Event.master_reach_ultimate, das=6,arr=1, freshLimit=15, - bg="game2", - bgm="secret7th", + bg="game2",bgm="secret7th", }, }, classic={ @@ -820,287 +791,231 @@ defaultModeEnv={ freshLimit=0, target=10, reach=Event.classic_reach, - bg="rgb", - bgm="rockblock", + bg="rgb",bgm="rockblock", }, }, zen={ { - drop=1e99, - lock=1e99, + drop=1e99,lock=1e99, oncehold=false, target=200, reach=Event_gameover.win, - bg="strap", - bgm="infinite", + bg="strap",bgm="infinite", }, }, infinite={ { - drop=1e99, - lock=1e99, + drop=1e99,lock=1e99, oncehold=false, - bg="glow", - bgm="infinite", + bg="glow",bgm="infinite", }, }, solo={ { freshLimit=15, - bg="game2", - bgm="race", + bg="game2",bgm="race", }, }, tsd={ { oncehold=false, - drop=1e99, - lock=1e99, + drop=1e99,lock=1e99, freshLimit=15, target=1, reach=Event.tsd_reach, ospin=false, - bg="matrix", - bgm="reason", + bg="matrix",bgm="reason", }, { - drop=60, - lock=60, + drop=60,lock=60, freshLimit=15, target=1, reach=Event.tsd_reach, ospin=false, - bg="matrix", - bgm="reason", + bg="matrix",bgm="reason", }, }, blind={ { - drop=30, - lock=60, + drop=30,lock=60, freshLimit=15, visible="time", - bg="glow", - bgm="newera", + bg="glow",bgm="newera", }, { - drop=15, - lock=60, + drop=15,lock=60, freshLimit=15, visible="fast", freshLimit=10, - bg="glow", - bgm="reason", + bg="glow",bgm="reason", }, { - fall=10, - lock=60, + fall=10,lock=60, center=false, ghost=false, visible="none", freshLimit=15, - bg="rgb", - bgm="secret7th", + bg="rgb",bgm="secret7th", }, { - fall=5, - lock=60, + fall=5,lock=60, center=false, visible="none", freshLimit=15, - bg="rgb", - bgm="secret8th", + bg="rgb",bgm="secret8th", }, { - fall=5, - lock=60, + fall=5,lock=60, block=false, center=false, ghost=false, visible="none", freshLimit=15, - bg="rgb", - bgm="secret7th", + bg="rgb",bgm="secret7th", }, { _20G=true, - drop=0, - lock=15, + drop=0,lock=15, wait=10, fall=15, visible="fast", freshLimit=15, arr=1, - bg="game3", - bgm="secret8th", + bg="game3",bgm="secret8th", }, }, dig={ { - drop=60, - lock=120, + drop=60,lock=120, fall=20, freshLimit=15, - bg="game2", - bgm="push", + bg="game2",bgm="push", }, { - drop=10, - lock=30, + drop=10,lock=30, freshLimit=15, - bg="game2", - bgm="secret7th", + bg="game2",bgm="secret7th", }, }, survivor={ { - drop=60, - lock=120, + drop=60,lock=120, fall=30, freshLimit=15, - bg="game2", - bgm="push", + bg="game2",bgm="push", }, { - drop=30, - lock=60, + drop=30,lock=60, fall=20, freshLimit=15, - bg="game2", - bgm="newera", + bg="game2",bgm="newera", }, { - drop=10, - lock=60, + drop=10,lock=60, fall=15, freshLimit=15, - bg="game2", - bgm="secret8th", + bg="game2",bgm="secret8th", }, { - drop=5, - lock=60, + drop=5,lock=60, fall=10, freshLimit=15, - bg="game3", - bgm="secret7th", + bg="game3",bgm="secret7th", }, { - drop=5, - lock=60, + drop=5,lock=60, fall=10, freshLimit=15, - bg="rgb", - bgm="secret7th", + bg="rgb",bgm="secret7th", }, }, tech={ { oncehold=false, - drop=1e99, - lock=1e99, + drop=1e99,lock=1e99, target=0, reach=Event.tech_reach, - bg="matrix", - bgm="way", + bg="matrix",bgm="way", }, { - drop=30, - lock=60, + drop=30,lock=60, target=0, reach=Event.tech_reach, - bg="matrix", - bgm="way", + bg="matrix",bgm="way", }, { - drop=15, - lock=60, + drop=15,lock=60, target=0, reach=Event.tech_reach_hard, freshLimit=15, - bg="matrix", - bgm="way", + bg="matrix",bgm="way", }, { - drop=5, - lock=40, + drop=5,lock=40, target=0, freshLimit=15, reach=Event.tech_reach_hard, - bg="matrix", - bgm="way", + bg="matrix",bgm="way", }, { - drop=1, - lock=40, + drop=1,lock=40, target=0, freshLimit=15, reach=Event.tech_reach_hard, - bg="matrix", - bgm="secret7th", + bg="matrix",bgm="secret7th", }, }, pctrain={ { next=4, hold=false, - drop=120, - lock=120, + drop=120,lock=120, fall=20, sequence="pc", target=0, reach=Event.newPC, ospin=false, - bg="rgb", - bgm="newera", + bg="rgb",bgm="newera", }, { next=4, hold=false, - drop=60, - lock=60, + drop=60,lock=60, fall=20, sequence="pc", target=0, freshLimit=15, reach=Event.newPC, ospin=false, - bg="rgb", - bgm="newera", + bg="rgb",bgm="newera", }, }, pcchallenge={ { oncehold=false, - drop=300, - lock=1e99, + drop=300,lock=1e99, target=100, reach=Event_gameover.win, ospin=false, - bg="rgb", - bgm="newera", + bg="rgb",bgm="newera", }, { - drop=60, - lock=120, + drop=60,lock=120, fall=10, target=100, reach=Event_gameover.win, freshLimit=15, ospin=false, - bg="rgb", - bgm="infinite", + bg="rgb",bgm="infinite", }, { - drop=20, - lock=60, + drop=20,lock=60, fall=20, target=100, reach=Event_gameover.win, freshLimit=15, ospin=false, - bg="rgb", - bgm="infinite", + bg="rgb",bgm="infinite", }, }, techmino41={ @@ -1112,8 +1027,7 @@ defaultModeEnv={ royaleRemain={30,20,15,10,5}, pushSpeed=2, freshLimit=15, - bg="game3", - bgm="rockblock", + bg="game3",bgm="rockblock", }, }, techmino99={ @@ -1125,46 +1039,44 @@ defaultModeEnv={ royaleRemain={75,50,35,20,10}, pushSpeed=2, freshLimit=15, - bg="game3", - bgm="rockblock", + bg="game3",bgm="rockblock", }, }, drought={ { - drop=20, - lock=60, + drop=20,lock=60, sequence="drought1", target=100, reach=Event_gameover.win, ospin=false, freshLimit=15, - bg="glow", - bgm="reason", + bg="glow",bgm="reason", }, { - drop=20, - lock=60, + drop=20,lock=60, sequence="drought2", target=100, reach=Event_gameover.win, ospin=false, freshLimit=15, - bg="glow", - bgm="reason", + bg="glow",bgm="reason", }, }, hotseat={ { freshLimit=15, - bg="none", - bgm="way", + bg="none",bgm="way", }, }, custom={ { - bg="none", - bgm="reason", reach=Event_gameover.win, + bg="none",bgm="reason", + }, + { + Fkey=true, + reach=Event_gameover.win, + bg="none",bgm="reason", }, }, } \ No newline at end of file diff --git a/font.ttf b/font.ttf index 67acca09f91adda27f4578421bb5a1b700ed3b32..07373a4dfcda22dcf4f9ab2482a7460847ce22f1 100644 GIT binary patch delta 8474 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 delta 2851 zcmb`Jdr(tX9>?#=4M_;E1PFl;Nq9db0s;vt1dtGUnS_XdfM_6*R}cb%;UNK3K%#

9+1=^v?Cf7Vb3ga@JHPWg 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 Qrh!RoxM>lvvVxHR0VW+140 then Event_gameover.lose()end end function createBeam(S,R,lv)--Player id @@ -813,18 +817,17 @@ function drop() P.b2b=P.b2b+20 end end + csend=csend+(renATK[P.combo]or 4) if #P.clearing==#P.field then showText(P,text.PC,"flicker",70,-80) - csend=csend+min(6+P.cstat.pc,10) + csend=min(csend,4)+min(6+P.cstat.pc,10) exblock=exblock+2 - sendTime=sendTime+30 + sendTime=sendTime+60 if P.cstat.row>4 then P.b2b=1200 end P.cstat.pc=P.cstat.pc+1 P.lastClear=P.cur.id*10+5 SFX("perfectclear") end - - csend=csend+(renATK[P.combo]or 4) if P.combo>2 then showText(P,text.cmb[min(P.combo,20)],P.combo<10 and"appear"or"flicker",20+P.combo*3,60) end @@ -1033,21 +1036,29 @@ act={ end end, hold=function()hold()end, - swap=function() - if modeEnv.royaleMode then - for i=1,#P.keyPressing do - if P.keyPressing[i]then - P.keyPressing[i]=false + func=function() + if modeEnv.Fkey then + if modeEnv.royaleMode then + for i=1,#P.keyPressing do + if P.keyPressing[i]then + P.keyPressing[i]=false + end + end + if setting.swap then + P.keyPressing[9]=true + else + changeAtkMode(P.atkMode<3 and P.atkMode+2 or 5-P.atkMode) + P.swappingAtkMode=30 end end - if setting.swap then - P.keyPressing[9]=true - else - changeAtkMode(P.atkMode<3 and P.atkMode+2 or 5-P.atkMode) - P.swappingAtkMode=30 + if curMode.id=="custom"and curMode.lv==2 and#P.field>0 then + for y=1,#P.field do + for x=1,10 do + if P.field[y][x]~=preField[y][x]then return end + end + end + Event_gameover.win() end - else - P.keyPressing[9]=false end end, restart=function() diff --git a/image/virtualkey/func.png b/image/virtualkey/func.png new file mode 100644 index 0000000000000000000000000000000000000000..74429fb7959dada680534881d9652fcc76089fb6 GIT binary patch literal 370 zcmV-&0ge8NP)(s<^Jy*v{oZ4fRi1YuF~UAaA9|VHzVi5@qyt)t#<)#2!ivZ?_$d9~ zL;fv=J~LY8=p$`o4skgSifiBXZh#$do`J|2__#;r{X6C*2=#ZaedD9}0VbpXMPi+r Q6aWAK07*qoM6N<$g71!=%>V!Z literal 0 HcmV?d00001 diff --git a/image/virtualkey/swap.png b/image/virtualkey/swap.png deleted file mode 100644 index dac71821ae4136001c066a26dd7c344ca2970636..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 300 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbBI14-?iy0WWg+Z8+Vb&Z8px`}E z7srr@!*|02`C1it79aT?U-|y|%oj$C>E;(|6@@P4<~9bgIlC-TanbEQTGa3$Q17G%w7~I<_Vlb~VKc}4G-D4BJmpQuYV$Lo-S-0LTtn|WZz5|)P|MFA?FKxPK zu{U*B=*6IR)&~)v<^{k0I{))RO~1QVRaxGVYgZXWrCv(Bmbrdy%Q4+!y^nT$zrsCh z>9gLIE^bFR2rW0 then for y=1,20 do for x=1,10 do preField[y][x]=0 end end clearSureTime=0 @@ -263,33 +264,39 @@ Buttons={ clearSureTime=50 end end}, - back= {x=1235, y=45, w=80, h=80, f=35, rgb=color.white, code=back}, + back= {x=1235,y=45,w=80,h=80, f=35, rgb=color.white, code=back}, }, play={ - back={x=1235,y=45,w=80,h=80,rgb=color.white,code=back,f=35}, + pause={x=1235,y=45,w=80,h=80,rgb=color.white,f=30,code=pauseGame}, + }, + pause={ + resume= {x=640,y=400,w=240,h=100, rgb=color.white,f=50,code=resumeGame}, + quit= {x=640,y=550,w=240,h=100, rgb=color.white,f=50,code=back}, }, setting={--Normal setting - ghost= {x=290, y=90, w=210,h=60, rgb=color.white, code=function()setting.ghost=not setting.ghost end,down="grid",right="center"}, - center= {x=505, y=90, w=210,h=60, rgb=color.white, code=function()setting.center=not setting.center end,down="swap",left="ghost",right="sfx"}, - grid= {x=290, y=160,w=210,h=60, rgb=color.white, code=function()setting.grid=not setting.grid end,up="ghost",down="fxs",right="swap"}, - swap= {x=505, y=160,w=210,h=60,f=28, rgb=color.white, code=function()setting.swap=not setting.swap end,up="center",down="arrD",left="grid",right="vib"}, - fxs= {x=290, y=230,w=210,h=60, rgb=color.white, code=function()setting.fxs=not setting.fxs end,up="grid",down="dasU",right="fullscreen"}, - dasD= {x=210, y=300,w=50, h=50, rgb=color.white, code=function()setting.das=(setting.das-1)%31 end,up="fxs",down="sddasD",right="dasU"}, - dasU= {x=370, y=300,w=50, h=50, rgb=color.white, code=function()setting.das=(setting.das+1)%31 end,up="fxs",down="sddasU",left="dasD",right="arrD"}, - arrD= {x=425, y=300,w=50, h=50, rgb=color.white, code=function()setting.arr=(setting.arr-1)%16 end,up="swap",down="sdarrD",left="dasU",right="arrU"}, - arrU= {x=585, y=300,w=50, h=50, rgb=color.white, code=function()setting.arr=(setting.arr+1)%16 end,up="swap",down="sdarrU",left="arrD",right="bgblock"},--3~6 - sddasD= {x=210, y=370,w=50, h=50, rgb=color.white, code=function()setting.sddas=(setting.sddas-1)%11 end,up="dasD",down="lang",right="sddasU"}, - sddasU= {x=370, y=370,w=50, h=50, rgb=color.white, code=function()setting.sddas=(setting.sddas+1)%11 end,up="dasU",down="lang",left="sddasD",right="sdarrD"}, - sdarrD= {x=425, y=370,w=50, h=50, rgb=color.white, code=function()setting.sdarr=(setting.sdarr-1)%4 end,up="arrD",down="lang",left="sddasU",right="sdarrU"}, - sdarrU= {x=585, y=370,w=50, h=50, rgb=color.white, code=function()setting.sdarr=(setting.sdarr+1)%4 end,up="arrU",down="lang",left="sdarrD",right="frame"}, + ghost= {x=290, y=90, w=210, h=60, rgb=color.white,code=function()setting.ghost=not setting.ghost end,down="grid",right="center"}, + center= {x=505, y=90, w=210, h=60, rgb=color.white,code=function()setting.center=not setting.center end,down="swap",left="ghost",right="sfx"}, + grid= {x=290, y=160, w=210, h=60, rgb=color.white,code=function()setting.grid=not setting.grid end,up="ghost",down="fxs",right="swap"}, + swap= {x=505, y=160, w=210, h=60,f=28, rgb=color.white,code=function()setting.swap=not setting.swap end,up="center",down="bg",left="grid",right="vib"}, + fxs= {x=290, y=230, w=210, h=60, rgb=color.white,code=function()setting.fxs=not setting.fxs end,up="grid",down="dasU",right="bg"}, + bg= {x=505, y=230, w=210, h=60, rgb=color.white,code=function()setting.bg=not setting.bg end,up="swap",down="arrD",right="fullscreen"}, - sfx= {x=760,y=90, w=160,h=60,rgb=color.white, code=function()setting.sfx=not setting.sfx end,down="vib",left="center",right="bgm"}, - bgm= {x=940,y=90, w=160,h=60,rgb=color.white, code=function() + dasD= {x=210, y=300, w=50, h=50, rgb=color.white,code=function()setting.das=(setting.das-1)%31 end,up="fxs",down="sddasD",right="dasU"}, + dasU= {x=370, y=300, w=50, h=50, rgb=color.white,code=function()setting.das=(setting.das+1)%31 end,up="fxs",down="sddasU",left="dasD",right="arrD"}, + arrD= {x=425, y=300, w=50, h=50, rgb=color.white,code=function()setting.arr=(setting.arr-1)%16 end,up="bg",down="sdarrD",left="dasU",right="arrU"}, + arrU= {x=585, y=300, w=50, h=50, rgb=color.white,code=function()setting.arr=(setting.arr+1)%16 end,up="bg",down="sdarrU",left="arrD",right="bgblock"},--3~6 + sddasD= {x=210, y=370, w=50, h=50, rgb=color.white,code=function()setting.sddas=(setting.sddas-1)%11 end,up="dasD",down="lang",right="sddasU"}, + sddasU= {x=370, y=370, w=50, h=50, rgb=color.white,code=function()setting.sddas=(setting.sddas+1)%11 end,up="dasU",down="lang",left="sddasD",right="sdarrD"}, + sdarrD= {x=425, y=370, w=50, h=50, rgb=color.white,code=function()setting.sdarr=(setting.sdarr-1)%4 end,up="arrD",down="lang",left="sddasU",right="sdarrU"}, + sdarrU= {x=585, y=370, w=50, h=50, rgb=color.white,code=function()setting.sdarr=(setting.sdarr+1)%4 end,up="arrU",down="lang",left="sdarrD",right="frame"}, + + sfx= {x=760,y=90, w=160, h=60, rgb=color.white,code=function()setting.sfx=not setting.sfx end,down="vib",left="center",right="bgm"}, + bgm= {x=940,y=90, w=160, h=60, rgb=color.white,code=function() BGM() setting.bgm=not setting.bgm BGM("blank") end,down="vib",left="sfx"}, - vib= {x=850,y=160, w=340,h=60,rgb=color.white, code=function() + vib= {x=850,y=160, w=340,h=60,rgb=color.white, code=function() setting.vib=(setting.vib+1)%5 VIB(2) end,up="sfx",down="fullscreen",left="swap"}, @@ -299,26 +306,26 @@ Buttons={ if not setting.fullscreen then love.resize(gc.getWidth(),gc.getHeight()) end - end,up="vib",down="bgblock",left="arrU"}, - bgblock= {x=850,y=300, w=340,h=60,rgb=color.white, code=function() + end,up="vib",down="bgblock",left="bg"}, + bgblock={x=850,y=300, w=340,h=60,rgb=color.white, code=function() setting.bgblock=not setting.bgblock if not setting.bgblock then for i=1,16 do BGblockList[i].v=3*BGblockList[i].v end end - end,up="fullscreen",down="frame",left="sdarrU"}, + end,up="fullscreen",down="frame",left="arrU"}, frame= {x=850,y=370, w=340,h=60,rgb=color.white, code=function() setting.frameMul=setting.frameMul+(setting.frameMul<50 and 5 or 10) if setting.frameMul>100 then setting.frameMul=25 end end,up="bgblock",down="control",left="sdarrU"}, - control= {x=850,y=440, w=340,h=60,rgb=color.green, code=function()gotoScene("setting2")end,up="frame",down="touch",left="lang"}, - touch= {x=850,y=510, w=340,h=60,rgb=color.yellow, code=function()gotoScene("setting3")end,up="control",down="back",left="lang"}, - lang= {x=280,y=510, w=200,h=60,rgb=color.red, code=function() + control={x=850,y=440, w=340,h=60,rgb=color.green, code=function()gotoScene("setting2")end,up="frame",down="touch",left="lang"}, + touch= {x=850,y=510, w=340,h=60,rgb=color.yellow,code=function()gotoScene("setting3")end,up="control",down="back",left="lang"}, + lang= {x=280,y=510, w=200,h=60,rgb=color.red, code=function() setting.lang=setting.lang%#langName+1 swapLanguage(setting.lang) end,up="sddasD",down="back",right="touch"}, - back= {x=640,y=620, w=300,h=70,rgb=color.white, code=back,up="touch"}, + back= {x=640,y=620, w=300,h=70,rgb=color.white, code=back,up="touch"}, }, setting2={--Control setting back={x=840,y=630,w=180,h=60,rgb=color.white,code=back}, diff --git a/main.lua b/main.lua index 07e52cee..d866765e 100644 --- a/main.lua +++ b/main.lua @@ -4,6 +4,7 @@ local fs,sys=love.filesystem,love.system int,ceil,abs,rnd,max,min,sin,cos,atan,pi=math.floor,math.ceil,math.abs,math.random,math.max,math.min,math.sin,math.cos,math.atan,math.pi sub,gsub,find,format,byte,char=string.sub,string.gsub,string.find,string.format,string.byte,string.char ins,rem,sort=table.insert,table.remove,table.sort +math.randomseed(os.time()*626) null=function()end system=sys.getOS() @@ -40,17 +41,13 @@ gameEnv0={ drop=30,lock=45, wait=0,fall=0, next=6,hold=true,oncehold=true, - - keepVisible=true,visible="show", sequence="bag7", + block=true, - Fkey=false, - ospin=true, - freshLimit=1e99, - target=1e99, - reach=null, - bg="none", - bgm="race" + keepVisible=true,visible="show", + Fkey=false,puzzle=false,ospin=true, + freshLimit=1e99,target=1e99,reach=null, + bg="none",bgm="race" } customSel={ drop=20, @@ -74,7 +71,7 @@ end setting={ ghost=true,center=true, grid=false,swap=true, - fxs=true, + fxs=true,bg=true, das=10,arr=2, sddas=0,sdarr=2, @@ -144,7 +141,7 @@ virtualkey={ {1280-80,720-80,6400,80},--hardDrop {1280-80,720-240,6400,80},--softDrop {1280-80,720-400,6400,80},--hold - {80,360,6400,80},--swap + {80,360,6400,80},--func {80,80,6400,80},--restart --[[ {x=0,y=0,r=0},--toLeft diff --git a/paint.lua b/paint.lua index 7b8961be..d17b73e8 100644 --- a/paint.lua +++ b/paint.lua @@ -213,6 +213,9 @@ Pnt={BG={}} function Pnt.BG.none() gc.clear(.15,.15,.15) end +function Pnt.BG.grey() + gc.clear(.3,.3,.3) +end function Pnt.BG.glow() local t=((sin(Timer()*.5)+sin(Timer()*.7)+sin(Timer()*.9+1)+sin(Timer()*1.5)+sin(Timer()*2+3))+5)*.05 gc.clear(t,t,t) @@ -262,8 +265,8 @@ function Pnt.load() gc.rectangle("line",300,330,680,60,5) setFont(40) mStr(text.load[loading],640,335) - setFont(25) - mStr(text.loadTip,640,400) + setFont(30) + mStr(loadTip,640,400) end function Pnt.intro() gc.push() @@ -285,7 +288,7 @@ function Pnt.main() gc.setColor(1,1,1) gc.draw(titleImage,300,30) setFont(30) - gc.print("Alpha V0.7.14",290,140) + gc.print("Alpha V0.7.15",290,140) gc.print(system,800,110) end function Pnt.mode() @@ -362,8 +365,8 @@ function Pnt.play() P=players[p] if P.small then gc.push("transform") - gc.translate(P.x,P.y)gc.scale(P.size)--Scale - gc.setColor(0,0,0,.4)gc.rectangle("fill",0,0,60,120)--Black Background + gc.translate(P.x,P.y)gc.scale(P.size)--Position + gc.setColor(0,0,0,.4)gc.rectangle("fill",0,0,60,120)--Background gc.translate(0,P.fieldBeneath*.2) gc.setScissor(scr.x+P.x*scr.k,scr.y+P.y*scr.k,60*P.size*scr.k,120*P.size*scr.k) gc.setColor(1,1,1,P.result and max(20-P.endCounter,0)*.05 or 1) @@ -402,8 +405,8 @@ function Pnt.play() gc.pop() else gc.push("transform") - gc.translate(P.x,P.y)gc.scale(P.size) - gc.setColor(0,0,0,.6)gc.rectangle("fill",0,0,600,690)--Black Background + gc.translate(P.x,P.y)gc.scale(P.size)--Position + gc.setColor(0,0,0,.6)gc.rectangle("fill",0,0,600,690)--Background gc.setLineWidth(7) gc.setColor(frameColor[P.strength])gc.rectangle("line",0,0,600,690)--Big frame gc.translate(150,70) @@ -524,17 +527,17 @@ function Pnt.play() --B2B indictator if P.gameEnv.hold then - gc.draw(drawableText.hold,-75-drawableText.hold:getWidth()*.5,-10) gc.setColor(1,1,1) + gc.draw(drawableText.hold,-124,-10) for i=1,#P.hold.bk do for j=1,#P.hold.bk[1] do if P.hold.bk[i][j]then - drawPixel(i+17.5-#P.hold.bk*.5,j-2.5-#P.hold.bk[1]*.5,P.holded and 9 or P.hold.color) + drawPixel(i+17.5-#P.hold.bk*.5,j-2.7-#P.hold.bk[1]*.5,P.holded and 9 or P.hold.color) end end end end--Hold - gc.draw(drawableText.next,382-drawableText.next:getWidth()*.5,-10) + gc.draw(drawableText.next,340,-10) local N=1 ::L:: local b,c=P.next[N].bk,P.next[N].color @@ -566,7 +569,7 @@ function Pnt.play() gc.setColor(1,1,1) setFont(35) - mStr(format("%.2f",P.time),-75,520)--Draw time + mStr(format("%.2f",P.time),-82,520)--Draw time if mesDisp[curMode.id]then mesDisp[curMode.id]()end--Draw other message gc.setColor(1,1,1) @@ -616,6 +619,19 @@ function Pnt.play() end end end +function Pnt.pause() + gc.setColor(0,0,0,pauseTime*.015) + gc.rectangle("fill",0,0,1280,720) + if system~="Android"then + setFont(40) + gc.setColor(1,1,1,pauseTime*.02) + mStr(text.space.."/"..text.enter,640,300) + gc.print("ESC",610,598) + end + setFont(120) + gc.setColor(1,1,1) + mStr(text.pause,640,140-12*(5-pauseTime*.1)^2) +end function Pnt.setting() gc.setColor(1,1,1) setFont(35) diff --git a/timer.lua b/timer.lua index 9e67dd0b..73dd0162 100644 --- a/timer.lua +++ b/timer.lua @@ -274,4 +274,9 @@ function Tmr.play(dt) end end if modeEnv.royaleMode and frame%120==0 then freshMostDangerous()end +end +function Tmr.pause(dt) + if pauseTime<50 then + pauseTime=pauseTime+1 + end end \ No newline at end of file diff --git a/toolfunc.lua b/toolfunc.lua index 7b9b6fa2..dd46e2c3 100644 --- a/toolfunc.lua +++ b/toolfunc.lua @@ -1,3 +1,4 @@ +local tm=love.timer local gc=love.graphics local kb=love.keyboard local setFont=setFont @@ -169,6 +170,9 @@ function gotoScene(s,style) draw=swap[style].d } Buttons.sel=nil + if style~="none"then + sysSFX("swipe") + end end end local prevMenu={ @@ -186,6 +190,10 @@ local prevMenu={ clearTask("play") gotoScene(curMode.id~="custom"and"mode"or"custom","deck") end, + pause=function() + clearTask("play") + gotoScene(curMode.id~="custom"and"mode"or"custom","deck") + end, help="main", stat="main", setting=function() @@ -203,7 +211,22 @@ function back() t() end end - +function pauseGame() + if bgmPlaying then bgm[bgmPlaying]:pause()end + for i=1,#players.alive do + local l=players.alive[i].keyPressing + for j=1,#l do + if l[j]then + releaseKey(j,players.alive[i]) + end + end + end + gotoScene("pause","none") +end +function resumeGame() + if bgmPlaying then bgm[bgmPlaying]:play()end + gotoScene("play","fade") +end local dataOpt={ "run", "game", @@ -217,21 +240,17 @@ local dataOpt={ "spin", } local saveOpt={ + "ghost","center", + "grid","swap", + "fxs","bg", + + "das","arr", + "sddas","sdarr", + "lang", - "ghost", - "center", - "grid", - "swap", - "sfx", - "bgm", + + "sfx","bgm", "vib", - "fxs", - - "das", - "arr", - "sddas", - "sdarr", - "fullscreen", "bgblock", "virtualkeyAlpha", @@ -326,7 +345,7 @@ function loadSetting() elseif t=="das"or t=="arr"or t=="sddas"or t=="sdarr"then v=toN(v)if not v or v<0 then v=0 end setting[t]=int(v) - elseif t=="ghost"or t=="center"or t=="grid"or t=="swap"or t=="fxs"then + elseif t=="ghost"or t=="center"or t=="grid"or t=="swap"or t=="fxs"or t=="bg"then setting[t]=v=="true" elseif t=="lang"then setting[t]=toN(v:match("[12]"))or 1