diff --git a/SFX/button.ogg b/SFX/button.ogg index 443b5c7c..0780bd6e 100644 Binary files a/SFX/button.ogg and b/SFX/button.ogg differ diff --git a/SFX/swipe.ogg b/SFX/swipe.ogg new file mode 100644 index 00000000..f7c66da4 Binary files /dev/null and b/SFX/swipe.ogg differ diff --git a/call&sys.lua b/call&sys.lua index 1ebad661..4d6cde8a 100644 --- a/call&sys.lua +++ b/call&sys.lua @@ -13,19 +13,18 @@ local touching=nil--1st touching ID local sceneInit={ load=function() curBG="none" - keeprun=true loading=1--Loading mode loadnum=1--Loading counter loadprogress=0--Loading bar(0~1) + loadTip=text.tips[rnd(#text.tips)] end, intro=function() curBG="none" count=0 - keeprun=true + BGM("blank") end, main=function() curBG="none" - keeprun=true collectgarbage() end, mode=function() @@ -33,12 +32,12 @@ local sceneInit={ modeSel=modeSel or 1 levelSel=levelSel or 3 curBG="none" - keeprun=true + BGM("blank") end, custom=function() optSel=optSel or 1 curBG="matrix" - keeprun=true + BGM("blank") end, draw=function() kb.setKeyRepeat(true) @@ -46,40 +45,39 @@ local sceneInit={ pen=1 sx,sy=1,1 curBG="none" - keeprun=true end, play=function() - keeprun=false - resetGameData() + if needResetGameData then + resetGameData() + needResetGameData=nil + end sysSFX("ready") end, + pause=function() + pauseTime=0 + end, setting=function() curBG="none" - keeprun=true end, setting2=function() curBG="none" - keeprun=true - curBoard=1 - keyboardSet=1 - joystickSet=1 - keyboardSetting=false - joystickSetting=false + curBoard=1 + keyboardSet=1 + joystickSet=1 + keyboardSetting=false + joystickSetting=false end,--Control settings setting3=function() curBG="game1" - keeprun=true defaultSel=1 sel=nil snapLevel=1 end,--Touch setting help=function() curBG="none" - keeprun=true end, stat=function() curBG="none" - keeprun=true end, quit=function() love.event.quit() @@ -159,11 +157,10 @@ function mouseDown.intro(x,y,k) end function mouseDown.draw(x,y,k) mouseMove.draw(x,y) - return sx and sy end function mouseDown.setting3(x,y,k) if k==2 then back()end - x,y=xOy:inverseTransformPoint(x,y) + sel=nil for K=1,#virtualkey do local b=virtualkey[K] if (x-b[1])^2+(y-b[2])^210 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 67acca09..07373a4d 100644 Binary files a/font.ttf and b/font.ttf differ diff --git a/gamefunc.lua b/gamefunc.lua index 0821f8c0..9ecb8133 100644 --- a/gamefunc.lua +++ b/gamefunc.lua @@ -157,6 +157,7 @@ function loadGame(mode,level) PTC.attack[1]:reset()PTC.attack[2]:reset()PTC.attack[3]:reset() drawableText.modeName:set(text.modeName[mode]) drawableText.levelName:set(modeLevel[modeID[mode]][level]) + needResetGameData=true gotoScene("play","deck") end function resetGameData() @@ -375,6 +376,9 @@ function garbageRise(color,amount,pos) end P.fieldBeneath=P.fieldBeneath+amount*30 P.curY,P.y_img=P.curY+amount,P.y_img+amount + for i=1,#P.clearing do + P.clearing[i]=P.clearing[i]+amount + end if #P.field>40 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 00000000..74429fb7 Binary files /dev/null and b/image/virtualkey/func.png differ diff --git a/image/virtualkey/swap.png b/image/virtualkey/swap.png deleted file mode 100644 index dac71821..00000000 Binary files a/image/virtualkey/swap.png and /dev/null differ diff --git a/language/chi.lua b/language/chi.lua index d810dcf7..326874ac 100644 --- a/language/chi.lua +++ b/language/chi.lua @@ -21,6 +21,7 @@ return{ win="胜利", lose="失败", + pause="暂停", custom="自定义游戏", customOption={ @@ -52,12 +53,12 @@ return{ softdropdas="软降DAS:", softdroparr="软降ARR:", snapLevelName={"任意摆放","10px吸附","20px吸附","40px吸附","60px吸附","80px吸附"}, - keyboard="键盘", - joystick="手柄", + keyboard="键盘",joystick="手柄", + space="空格",enter="回车", setting2Help="方向键选择/翻页,回车修改,esc返回", - actName={"左移:","右移:","顺时针旋转:","逆时针旋转:","180°旋转","硬降:","软降:","暂存:","切换攻击:","重新开始:","左瞬移:","右瞬移:","软降到底:"}, + actName={"左移:","右移:","顺时针旋转:","逆时针旋转:","180°旋转","硬降:","软降:","暂存:","功能键:","重新开始:","左瞬移:","右瞬移:","软降到底:"}, modeName={ [0]="自定义", "竞速","马拉松","大师","经典","禅","无尽","单挑","仅TSD","隐形","挖掘","生存","科研", @@ -84,17 +85,20 @@ return{ hotseat="友尽模式", }, - loadTip="真在加载,不只是动画!", load={"加载材质ing","加载音乐ing","加载音效ing","加载完成",}, tips={ - "The whole game is made by MrZ!", - "Back to Back 10 combo Techrash PC!", - "Techmino has a Nspire-CX edition!", - "Is B2B2B2B possible?", - "MrZ spin Penta!", + "不是动画,真的在加载!", + "整个游戏都是MrZ完成的!", + "大满贯10连击消四全清!", + "方块研究所有一个Nspire-CX版本!", + "B2B2B2B存在吗?", + "MrZ旋转消5!", "MEGACMB!", "ALLSPIN!", - "O spin Techrash?" + "O型回旋三清?", + "只用一个输入设备就可以玩游戏啦~", + "Miya:喵!", + "225238922,哔哩哔哩 干杯~", }, stat={ "游戏运行次数:", @@ -145,7 +149,8 @@ return{ down="v", left="<", right=">", - start="开始", + start1="消除开始", + start2="拼图开始", draw="画图(D)", back="返回", }, @@ -167,7 +172,11 @@ return{ back="返回", }, play={ - back="返回", + pause="暂停", + }, + pause={ + resume="继续", + quit="退出", }, setting={ ghost=function()return setting.ghost and"阴影:开"or"阴影:关"end, @@ -175,6 +184,7 @@ return{ grid=function()return setting.grid and"网格:开"or"网格:关"end, swap=function()return setting.swap and"目标选择:组合键"or"目标选择:循环"end, fxs=function()return setting.fxs and"特效:开"or"特效:关"end, + bg=function()return setting.bg and"背景:开"or"背景:关"end, dasD="-",dasU="+", arrD="-",arrU="+", sddasD="-",sddasU="+", @@ -211,4 +221,4 @@ return{ path="打开存储目录", }, }, -}--中文■ \ No newline at end of file +}--中文 \ No newline at end of file diff --git a/language/eng.lua b/language/eng.lua index ab7ee90f..92f9cded 100644 --- a/language/eng.lua +++ b/language/eng.lua @@ -21,6 +21,7 @@ return{ win="WIN", lose="LOSE", + pause="PAUSE", custom="Custom Game", customOption={ @@ -52,12 +53,12 @@ return{ softdropdas="softdropDAS:", softdroparr="softdropARR:", snapLevelName={"Free pos","Snap-10","Snap-20","Snap-40","Snap-60","Snap-80"}, - keyboard="Keyboard", - joystick="Joystick", + keyboard="Keyboard",joystick="Joystick", + space="Space",enter="Enter", setting2Help="Arrowkey to select/change slot,Enter to change,Esc back", - actName={"Move Left:","Move Right:","Rotate Right:","Rotate Left:","Rotate Flip:","Hard Drop:","Soft Drop:","Hold:","Swap:","Restart:","Instant Left:","Instant Right:","Ins Down:"}, + actName={"Move Left:","Move Right:","Rotate Right:","Rotate Left:","Rotate Flip:","Hard Drop:","Soft Drop:","Hold:","Function:","Restart:","Instant Left:","Instant Right:","Ins Down:"}, modeName={ [0]="Custom", "Sprint","Marathon","Master","Classic","Zen","Infinite","1v1","TSD-only","Blind","Dig","Survivor","Tech", @@ -84,17 +85,20 @@ return{ hotseat="", }, - loadTip="not animation,real loading!", load={"Loading textures","Loading BGM","Loading SFX","Finished",}, tips={ - "The whole game is made by MrZ!", + "Not animation,real loading!", + "The WHOLE game is made by MrZ!", "Back to Back 10 combo Techrash PC!", "Techmino has a Nspire-CX edition!", "Is B2B2B2B possible?", "MrZ spin Penta!", "MEGACMB!", "ALLSPIN!", - "O spin Techrash?" + "O spin triple?", + "You can play with any input device!", + "Miya:Nya!", + "225238922,Bilibili cheers!", }, stat={ "Games run:", @@ -145,7 +149,8 @@ return{ down="v", left="<", right=">", - start="Start", + start1="Clear Start", + start2="Puzzle Start", draw="Draw(D)", back="Back", }, @@ -163,11 +168,15 @@ return{ gb4="■", gb5="■", erase="×", - clear="clear", - back="back", + clear="Clear", + back="Back", }, play={ - back="Back", + pause="Pause", + }, + pause={ + resume="Resume", + quit="Quit", }, setting={ ghost=function()return setting.ghost and"Ghost:ON"or"Ghost:OFF"end, @@ -175,14 +184,11 @@ return{ grid=function()return setting.grid and"Grid:ON"or"Grid:OFF"end, swap=function()return setting.swap and"Swap:comboKey"or"Swap:loop"end, fxs=function()return setting.fxs and"FXs:ON"or"FXs:OFF"end, - dasD="-", - dasU="+", - arrD="-", - arrU="+", - sddasD="-", - sddasU="+", - sdarrD="-", - sdarrU="+", + bg=function()return setting.bg and"BG:ON"or"BG:OFF"end, + dasD="-",dasU="+", + arrD="-",arrU="+", + sddasD="-",sddasU="+", + sdarrD="-",sdarrU="+", sfx=function()return setting.sfx and"SFX:ON"or"SFX:OFF"end, bgm=function()return setting.bgm and"BGM:ON"or"BGM:OFF"end, vib=function()return "Vibrate level:"..setting.vib end, diff --git a/list.lua b/list.lua index 00c279ae..8f4b6e57 100644 --- a/list.lua +++ b/list.lua @@ -1,7 +1,7 @@ local gc=love.graphics local sys=love.system local fs=love.filesystem -actName={"moveLeft","moveRight","rotRight","rotLeft","rotFlip","hardDrop","softDrop","hold","swap","restart","insLeft","insRight","insDown"} +actName={"moveLeft","moveRight","rotRight","rotLeft","rotFlip","hardDrop","softDrop","hold","func","restart","insLeft","insRight","insDown"} color={ red={1,0,0}, green={0,1,0}, @@ -50,7 +50,8 @@ blockColor={ color.darkGreen, } sfx={ - "button", + "button","swipe", + "ready","start","win","fail","collect", "move","rotate","rotatekick","hold", "prerotate","prehold", @@ -97,7 +98,7 @@ customRange={ wait={0,1,2,3,4,5,6,7,8,10,15,20,30,60}, fall={0,1,2,3,4,5,6,7,8,10,15,20,30,60}, next={0,1,2,3,4,5,6}, - hold={true,false}, + hold={true,false,true}, sequence={"bag7","his4","rnd"}, visible={"show","time","fast","none"}, target={10,20,40,100,200,500,1000,1e99}, @@ -105,9 +106,8 @@ customRange={ opponent={0,60,30,20,15,10,7,5,4,3,2,1}, } -snapLevelValue={1,10,20,40,60,80} - RCPB={10,33,200,33,105,5,105,60} +snapLevelValue={1,10,20,40,60,80} up0to4={[0]="000%UP","025%UP","050%UP","075%UP","100%UP",} percent0to5={[0]="0%","20%","40%","60%","80%","100%",} @@ -135,7 +135,7 @@ modeLevel={ techmino99={"EASY","NORMAL","HARD","LUNATIC","ULTIMATE"}, drought={"NORMAL","MESS"}, hotseat={"2P","3P","4P",}, - custom={""}, + custom={"Normal","Puzzle"}, } local t,f=true,false blocks={ @@ -160,7 +160,7 @@ local virtualkeySet={ {200,720-320,6400,80},--hardDrop {200,720-80,6400,80},--softDrop {1280-320,720-200,6400,80},--hold - {1280-80,280,6400,80},--swap + {1280-80,280,6400,80},--func {80,280,6400,80},--restart },--Farter's set 3 { @@ -172,7 +172,7 @@ local virtualkeySet={ {1280-200,720-320,6400,80},--hardDrop {1280-200,720-80,6400,80},--softDrop {320,720-200,6400,80},--hold - {80,280,6400,80},--swap + {80,280,6400,80},--func {1280-80,280,6400,80},--restart },--Mirrored farter's set 3 { @@ -184,7 +184,7 @@ local virtualkeySet={ {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 },--Author's set { @@ -196,66 +196,67 @@ local virtualkeySet={ {1280-240,720-240,6400,80},--hardDrop {1280-240,720-80,6400,80},--softDrop {1280-80,720-240,6400,80},--hold - {80,720-240,6400,80},--swap + {80,720-240,6400,80},--func {80,320,6400,80},--restart },--Keyboard set { - {1200-360,40,0,40},--moveLeft - {1200-280,40,0,40},--moveRight - {1200-520,40,0,40},--rotRight - {1200-600,40,0,40},--rotLeft - {1200-440,40,0,40},--rotFlip - {1200-40,40,0,40},--hardDrop - {1200-120,40,0,40},--softDrop - {1200-200,40,0,40},--hold - {1200-680,40,0,40},--swap - {1200-760,40,0,40},--restart + {1200-360,40,1600,40},--moveLeft + {1200-280,40,1600,40},--moveRight + {1200-520,40,1600,40},--rotRight + {1200-600,40,1600,40},--rotLeft + {1200-440,40,1600,40},--rotFlip + {1200-40,40,1600,40},--hardDrop + {1200-120,40,1600,40},--softDrop + {1200-200,40,1600,40},--hold + {1200-680,40,1600,40},--func + {1200-760,40,1600,40},--restart },--PC key feedback } Buttons={ load={}, intro={}, main={ - play={x=380,y=300,w=240,h=240,rgb=color.red,f=70,code=function()gotoScene("mode")end,down="stat",right="setting"}, + play= {x=380,y=300,w=240,h=240,rgb=color.red,f=70,code=function()gotoScene("mode")end,down="stat",right="setting"}, setting={x=640,y=300,w=240,h=240,rgb=color.lightBlue,f=55,code=function()gotoScene("setting")end,down="stat",left="play",right="help"}, - stat={x=640,y=560,w=240,h=240,rgb=color.cyan,f=55,code=function()gotoScene("stat")end,up="setting",left="play",right="help"}, - help={x=900,y=560,w=240,h=240,rgb=color.yellow,f=55,code=function()gotoScene("help")end,up="setting",left="stat",right="quit"}, - quit={x=1180,y=620,w=120,h=120,rgb=color.lightGrey,f=50,code=function()gotoScene("quit")end,up="setting",left="help"}, + stat= {x=640,y=560,w=240,h=240,rgb=color.cyan,f=55,code=function()gotoScene("stat")end,up="setting",left="play",right="help"}, + help= {x=900,y=560,w=240,h=240,rgb=color.yellow,f=55,code=function()gotoScene("help")end,up="setting",left="stat",right="quit"}, + quit= {x=1180,y=620,w=120,h=120,rgb=color.lightGrey,f=50,code=function()gotoScene("quit")end,up="setting",left="help"}, }, mode={ - up= {x=1000, y=210,w=200,h=140,rgb=color.white, f=64, code=function()keyDown.mode("up")end, hide=function()return modeSel==1 end,}, - down= {x=1000, y=430,w=200,h=140,rgb=color.white, f=80, code=function()keyDown.mode("down")end, hide=function()return modeSel==#modeID end,}, - left= {x=190, y=160,w=100,h=80, rgb=color.white, code=function()keyDown.mode("left")end, hide=function()return levelSel==1 end,}, - right={x=350, y=160,w=100,h=80, rgb=color.white, code=function()keyDown.mode("right")end,hide=function()return levelSel==#modeLevel[modeID[modeSel]]end,}, - start={x=1000, y=600,w=250,h=100,rgb=color.green, f=50, code=function() + up= {x=1000,y=210,w=200,h=140, rgb=color.white, f=64, code=function()keyDown.mode("up")end, hide=function()return modeSel==1 end,}, + down= {x=1000,y=430,w=200,h=140, rgb=color.white, f=80, code=function()keyDown.mode("down")end, hide=function()return modeSel==#modeID end,}, + left= {x=190, y=160,w=100,h=80, rgb=color.white, code=function()keyDown.mode("left")end, hide=function()return levelSel==1 end,}, + right= {x=350, y=160,w=100,h=80, rgb=color.white, code=function()keyDown.mode("right")end,hide=function()return levelSel==#modeLevel[modeID[modeSel]]end,}, + start={ x=1000, y=600,w=250,h=100, rgb=color.green, f=50, code=function() loadGame(modeSel,levelSel)end}, - custom={x=275, y=420,w=200,h=90, rgb=color.yellow, code=function()gotoScene("custom")end}, + custom= {x=275, y=420,w=200,h=90, rgb=color.yellow, code=function()gotoScene("custom")end}, back= {x=640, y=630,w=230,h=90, rgb=color.white, f=45, code=back}, }, custom={ - up= {x=1000, y=220,w=100,h=100,rgb=color.white, code=function()optSel=(optSel-2)%#customID+1 end}, - down= {x=1000, y=460,w=100,h=100,rgb=color.white,f=50, code=function()optSel=optSel%#customID+1 end}, - left= {x=880, y=340,w=100,h=100,rgb=color.white,f=50, code=function()local k=customID[optSel]customSel[k]=(customSel[k]-2)%#customRange[k]+1 end}, - right={x=1120, y=340,w=100,h=100,rgb=color.white,f=50, code=function()local k=customID[optSel]customSel[k]=customSel[k]%#customRange[k]+1 end}, - start={x=1000, y=580,w=180,h=80, rgb=color.green, code=function()loadGame(0,1)end}, - draw= {x=1000, y=90, w=190,h=85, rgb=color.cyan, code=function()gotoScene("draw")end}, - back= {x=640, y=630,w=180,h=60, rgb=color.white, code=back}, + up= {x=1000,y=220, w=100, h=100, rgb=color.white, code=function()optSel=(optSel-2)%#customID+1 end}, + down= {x=1000,y=460, w=100, h=100, rgb=color.white,f=50, code=function()optSel=optSel%#customID+1 end}, + left= {x=880, y=340, w=100, h=100, rgb=color.white,f=50, code=function()local k=customID[optSel]customSel[k]=(customSel[k]-2)%#customRange[k]+1 end}, + right= {x=1120,y=340, w=100, h=100, rgb=color.white,f=50, code=function()local k=customID[optSel]customSel[k]=customSel[k]%#customRange[k]+1 end}, + start1= {x=880, y=580, w=220, h=70, rgb=color.green, code=function()loadGame(0,1)end}, + start2= {x=1120,y=580, w=220, h=70, rgb=color.lightPurple, code=function()loadGame(0,2)end}, + draw= {x=1000,y=90, w=190, h=85, rgb=color.cyan, code=function()gotoScene("draw")end}, + back= {x=640, y=630 ,w=180, h=60, rgb=color.white, code=back}, }, draw={ block1= {x=840, y=80,w=120,h=120, f=65, rgb=color.red, code=function()pen=1 end}, - block2= {x=980, y=80,w=120,h=120, f=65, rgb=color.green, code=function()pen=2 end}, - block3= {x=1120, y=80,w=120,h=120, f=65, rgb=color.orange, code=function()pen=3 end}, - block4= {x=840, y=220,w=120,h=120,f=65, rgb=color.blue, code=function()pen=4 end}, - block5= {x=980, y=220,w=120,h=120,f=65, rgb=color.magenta, code=function()pen=5 end}, - block6= {x=1120, y=220,w=120,h=120,f=65, rgb=color.yellow, code=function()pen=6 end}, - block7= {x=840, y=360,w=120,h=120,f=65, rgb=color.cyan, code=function()pen=7 end}, - gb1= {x=980, y=360,w=120,h=120,f=65, rgb=color.darkGrey, code=function()pen=9 end}, - gb2= {x=1120, y=360,w=120,h=120,f=65, rgb=color.grey, code=function()pen=10 end}, - gb3= {x=840, y=500,w=120,h=120,f=65, rgb=color.darkPurple, code=function()pen=11 end}, - gb4= {x=980, y=500,w=120,h=120,f=65, rgb=color.darkRed, code=function()pen=12 end}, - gb5= {x=1120, y=500,w=120,h=120,f=65, rgb=color.darkGreen, code=function()pen=13 end}, - erase= {x=840, y=640,w=120,h=120,f=70, rgb=color.grey, code=function()pen=0 end}, - clear= {x=1120, y=640,w=120,h=120, rgb=color.white, code=function() + block2= {x=980, y=80,w=120,h=120, f=65, rgb=color.green, code=function()pen=2 end}, + block3= {x=1120,y=80,w=120,h=120, f=65, rgb=color.orange, code=function()pen=3 end}, + block4= {x=840, y=220,w=120,h=120, f=65, rgb=color.blue, code=function()pen=4 end}, + block5= {x=980, y=220,w=120,h=120, f=65, rgb=color.magenta, code=function()pen=5 end}, + block6= {x=1120,y=220,w=120,h=120, f=65, rgb=color.yellow, code=function()pen=6 end}, + block7= {x=840, y=360,w=120,h=120, f=65, rgb=color.cyan, code=function()pen=7 end}, + gb1= {x=980, y=360,w=120,h=120, f=65, rgb=color.darkGrey, code=function()pen=9 end}, + gb2= {x=1120,y=360,w=120,h=120, f=65, rgb=color.grey, code=function()pen=10 end}, + gb3= {x=840, y=500,w=120,h=120, f=65, rgb=color.darkPurple,code=function()pen=11 end}, + gb4= {x=980, y=500,w=120,h=120, f=65, rgb=color.darkRed, code=function()pen=12 end}, + gb5= {x=1120,y=500,w=120,h=120, f=65, rgb=color.darkGreen,code=function()pen=13 end}, + erase= {x=840, y=640,w=120,h=120, f=70, rgb=color.grey, code=function()pen=0 end}, + clear= {x=1120,y=640,w=120,h=120, rgb=color.white, code=function() if clearSureTime>0 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