Compare commits

..

1 Commits
v0.1 ... v0.2

Author SHA1 Message Date
MrZ_26
30bbf1b1db Alpha V0.2 2020-02-04 19:26:27 +08:00
26 changed files with 203 additions and 183 deletions

View File

View File

@@ -58,15 +58,15 @@ Buttons={
{x=540,y=490,w=230,h=45,rgb=color.white,t=function()return setting.gamepad[8]end,code=function()gamepadsetting,keysetting=8 end,up=16,down=18,left=8,right=28}, {x=540,y=490,w=230,h=45,rgb=color.white,t=function()return setting.gamepad[8]end,code=function()gamepadsetting,keysetting=8 end,up=16,down=18,left=8,right=28},
{x=540,y=550,w=230,h=45,rgb=color.white,t=function()return setting.gamepad[9]end,code=function()gamepadsetting,keysetting=9 end,up=17,down=27,left=9,right=28}, {x=540,y=550,w=230,h=45,rgb=color.white,t=function()return setting.gamepad[9]end,code=function()gamepadsetting,keysetting=9 end,up=17,down=27,left=9,right=28},
--10~18 --10~18
{x=745,y=90,w=40,h=40,rgb=color.white,t="-",code=function()setting.das=(setting.das-1)%31 end,hold=true,left=10,right=20,down=23}, {x=745,y=90,w=40,h=40,rgb=color.white,t="-",code=function()setting.das=(setting.das-1)%31 end,left=10,right=20,down=23},
{x=910,y=90,w=40,h=40,rgb=color.white,t="+",code=function()setting.das=(setting.das+1)%31 end,hold=true,left=19,right=21,down=24}, {x=910,y=90,w=40,h=40,rgb=color.white,t="+",code=function()setting.das=(setting.das+1)%31 end,left=19,right=21,down=24},
{x=960,y=90,w=40,h=40,rgb=color.white,t="-",code=function()setting.arr=(setting.arr-1)%16 end,hold=true,left=20,right=22,down=25}, {x=960,y=90,w=40,h=40,rgb=color.white,t="-",code=function()setting.arr=(setting.arr-1)%16 end,left=20,right=22,down=25},
{x=1125,y=90,w=40,h=40,rgb=color.white,t="+",code=function()setting.arr=(setting.arr+1)%16 end,hold=true,left=21,down=26}, {x=1125,y=90,w=40,h=40,rgb=color.white,t="+",code=function()setting.arr=(setting.arr+1)%16 end,left=21,down=26},
--19~22 --19~22
{x=745,y=150,w=40,h=40,rgb=color.white,t="-",code=function()setting.sddas=(setting.sddas-1)%11 end,hold=true,up=19,down=28,left=10,right=24}, {x=745,y=150,w=40,h=40,rgb=color.white,t="-",code=function()setting.sddas=(setting.sddas-1)%11 end,up=19,down=28,left=10,right=24},
{x=910,y=150,w=40,h=40,rgb=color.white,t="+",code=function()setting.sddas=(setting.sddas+1)%11 end,hold=true,up=20,down=28,left=23,right=25}, {x=910,y=150,w=40,h=40,rgb=color.white,t="+",code=function()setting.sddas=(setting.sddas+1)%11 end,up=20,down=28,left=23,right=25},
{x=960,y=150,w=40,h=40,rgb=color.white,t="-",code=function()setting.sdarr=(setting.sdarr-1)%6 end,hold=true,up=21,down=28,left=24,right=26}, {x=960,y=150,w=40,h=40,rgb=color.white,t="-",code=function()setting.sdarr=(setting.sdarr-1)%6 end,up=21,down=28,left=24,right=26},
{x=1125,y=150,w=40,h=40,rgb=color.white,t="+",code=function()setting.sdarr=(setting.sdarr+1)%4 end,hold=true,up=22,down=28,left=25}, {x=1125,y=150,w=40,h=40,rgb=color.white,t="+",code=function()setting.sdarr=(setting.sdarr+1)%4 end,up=22,down=28,left=25},
--23~26 --23~26
{x=405,y=630,w=130,h=60,rgb=color.white,t="Reset",code=function()for i=1,#setting.key do setting.key[i]=gameEnv0.key[i] end end,up=9,right=28}, {x=405,y=630,w=130,h=60,rgb=color.white,t="Reset",code=function()for i=1,#setting.key do setting.key[i]=gameEnv0.key[i] end end,up=9,right=28},
{x=840,y=630,w=180,h=60,rgb=color.white,t="Back",code=function()keysetting=nil;back()end,up=9,left=27}, {x=840,y=630,w=180,h=60,rgb=color.white,t="Back",code=function()keysetting=nil;back()end,up=9,left=27},
@@ -78,32 +78,34 @@ Buttons={
stat={ stat={
{x=640,y=590,w=180,h=60,rgb=color.white,t="Back",code=function()back()end}, {x=640,y=590,w=180,h=60,rgb=color.white,t="Back",code=function()back()end},
}, },
sel=nil,--selected button Obj sel=nil,--selected button id(integer)
pressing=0,--pressing time
} }
for k,v in pairs(Buttons)do for k,v in pairs(Buttons)do
if type(v)=="table"then for i=1,#v do
for i=1,#v do v[i].alpha=0
v[i].alpha=0
end
end end
end end
gamePad={ gamepad={
{x=0,y=0,r=60},--moveLeft {x=80,y=-80,r=80},--moveLeft
{x=0,y=0,r=60},--moveRight {x=240,y=-80,r=80},--moveRight
{x=0,y=0,r=60},--rotLeft {x=-240,y=-80,r=80},--rotRight
{x=0,y=0,r=60},--rotRight {x=-400,y=-80,r=80},--rotLeft
{x=0,y=0,r=60},--rotFlip {x=-240,y=-240,r=80},--rotFlip
{x=0,y=0,r=60},--hardDrop {x=-80,y=-80,r=80},--hardDrop
{x=0,y=0,r=60},--softDrop {x=-80,y=-240,r=80},--softDrop
{x=0,y=0,r=60},--hold {x=-80,y=-400,r=80},--hold
{x=0,y=0,r=60},--restart {x=80,y=80,r=80},--restart
{x=0,y=0,r=60},--toLeft
{x=0,y=0,r=60},--toRight
{x=0,y=0,r=60},--toDown
} }
for i=1,#gamePad do --[[
gamePad[i].press=false {x=0,y=0,r=0},--toLeft
gamePad[i].r=gamePad[i].r^2 {x=0,y=0,r=0},--toRight
{x=0,y=0,r=0},--toDown
]]
for i=1,#gamepad do
gamepad[i].press=false
if gamepad[i].x<0 then gamepad[i].x=1280+gamepad[i].x end
if gamepad[i].y<0 then gamepad[i].y=720+gamepad[i].y end
gamepad[i].r0=gamepad[i].r
gamepad[i].r=gamepad[i].r0^2
end end

View File

@@ -9,7 +9,7 @@ function love.conf(t)
t.gammacorrect=true t.gammacorrect=true
-- t.audio.mixwithsystem=true--Keep background music playing when opening LOVE (boolean, iOS and Android only) -- t.audio.mixwithsystem=true--Keep background music playing when opening LOVE (boolean, iOS and Android only)
t.window.title="Techmino Alpha" t.window.title="Techmino V0.2"
t.window.icon="/image/icon.png" t.window.icon="/image/icon.png"
t.window.width=1280 t.window.width=1280
t.window.height=720 t.window.height=720

View File

@@ -1,5 +1,4 @@
function buttonControl_key(i) function buttonControl_key(i)
mouseShow=false
if i=="up"or i=="down"or i=="left"or i=="right"then if i=="up"or i=="down"or i=="left"or i=="right"then
if not Buttons.sel then if not Buttons.sel then
Buttons.sel=1 Buttons.sel=1
@@ -14,10 +13,10 @@ function buttonControl_key(i)
sysSFX("button") sysSFX("button")
end end
end end
mouseShow=false
end end
function buttonControl_gamepad(i) function buttonControl_gamepad(i)
if i=="dpup"or i=="dpdown"or i=="dpleft"or i=="dpright"then if i=="dpup"or i=="dpdown"or i=="dpleft"or i=="dpright"then
if not Buttons.sel then if not Buttons.sel then
Buttons.sel=1 Buttons.sel=1
mouseShow=false mouseShow=false
@@ -27,65 +26,91 @@ function buttonControl_gamepad(i)
elseif i=="start"then elseif i=="start"then
if not sceneSwaping and Buttons.sel then if not sceneSwaping and Buttons.sel then
local B=Buttons[scene][Buttons.sel] local B=Buttons[scene][Buttons.sel]
if B.hold then Buttons.pressing=max(Buttons.pressing,1)end
B.code() B.code()
B.alpha=1 B.alpha=1
sysSFX("button") sysSFX("button")
end end
end end
mouseShow=false
end end
function love.mousemoved(x,y) function love.mousemoved(x,y,dx,dy,t)
mouseShow=true if not t then
mx,my=mouseConvert(x,y) mouseShow=true
Buttons.sel=nil mx,my=convert(x,y)
for i=1,#Buttons[scene]do Buttons.sel=nil
local B=Buttons[scene][i] for i=1,#Buttons[scene]do
if not(B.hide and B.hide())then local B=Buttons[scene][i]
if abs(mx-B.x)<B.w*.5 and abs(my-B.y)<B.h*.5 then if not(B.hide and B.hide())then
Buttons.sel=i if abs(mx-B.x)<B.w*.5 and abs(my-B.y)<B.h*.5 then
return nil Buttons.sel=i
return nil
end
end end
end end
end end
if not Buttons.sel then Buttons.pressing=0 end
end end
function love.mousepressed(x,y,k) function love.mousepressed(x,y,k,t,num)
mouseShow=true if not t then
mx,my=mouseConvert(x,y) mouseShow=true
if mouseDown[scene]then mouseDown[scene](mx,my,k)end mx,my=convert(x,y)
if k==1 then if mouseDown[scene]then mouseDown[scene](mx,my,k)end
if not sceneSwaping and Buttons.sel then if k==1 then
local B=Buttons[scene][Buttons.sel] if not sceneSwaping and Buttons.sel then
if B.hold then Buttons.pressing=max(Buttons.pressing,1)end local B=Buttons[scene][Buttons.sel]
B.code() B.code()
B.alpha=1 B.alpha=1
Buttons.sel=nil Buttons.sel=nil
love.mousemoved(x,y) love.mousemoved(x,y)
sysSFX("button") sysSFX("button")
end
elseif k==3 then
back()
end end
elseif k==3 then
back()
end end
end end
function love.mousereleased(x,y,k) function love.mousereleased(x,y,k,t,num)
Buttons.pressing=0
end end
function love.touchpressed(id,x,y) function love.touchpressed(id,x,y)
ins(touches,id) if not touching then
touching=id
love.mousemoved(x,y)
end
mouseShow=false
end end
function love.touchrealeased(id,x,y) function love.touchreleased(id,x,y)
for i=1,#touches do if id==touching then
if touches[i]==id then rem(touches,i)break end touching=nil
if Buttons.sel then
local B=Buttons[scene][Buttons.sel]
B.code()
B.alpha=1
Buttons.sel=nil
end
Buttons.sel=nil
mouseShow=false
end
if scene=="play"and #tc.getTouches()==0 then
for K=1,#gamepad do
if gamepad[K].press then
releaseKey(K)
break
end
end
end end
end end
function love.touchmoved(id,x,y,dx,dy) function love.touchmoved(id,x,y,dx,dy)
love.mousemoved(x,y)
mouseShow=false
if not Buttons.sel then
touching=nil
end
end end
function love.keypressed(i) function love.keypressed(i)
if keyDown[scene]then keyDown[scene](i) if keyDown[scene]then keyDown[scene](i)
elseif i=="escape"then back() elseif i=="escape"or i=="back"then back()
else buttonControl_key(i) else buttonControl_key(i)
end end
end end
@@ -106,7 +131,6 @@ function love.gamepadpressed(joystick,i)
elseif i=="start"then elseif i=="start"then
if not sceneSwaping and Buttons.sel then if not sceneSwaping and Buttons.sel then
local B=Buttons[scene][Buttons.sel] local B=Buttons[scene][Buttons.sel]
if B.hold then Buttons.pressing=max(Buttons.pressing,1)end
B.code() B.code()
B.alpha=1 B.alpha=1
sysSFX("button") sysSFX("button")
@@ -115,6 +139,7 @@ function love.gamepadpressed(joystick,i)
end end
if gamepadDown[scene]then return gamepadDown[scene](i) if gamepadDown[scene]then return gamepadDown[scene](i)
elseif i=="back"then return back() elseif i=="back"then return back()
else buttonControl_gamepad(i)
end end
end end
function love.gamepadreleased(joystick,i) function love.gamepadreleased(joystick,i)

View File

@@ -2,7 +2,6 @@ game={}
function game.load() function game.load()
scene="load" scene="load"
curBG="none" curBG="none"
mouseShow=true
loading=1--Loading mode loading=1--Loading mode
loadnum=1--Loading counter loadnum=1--Loading counter
loadprogress=0--Loading bar loadprogress=0--Loading bar
@@ -10,18 +9,15 @@ end
function game.intro() function game.intro()
scene="intro" scene="intro"
curBG="none" curBG="none"
mouseShow=true
end end
function game.main() function game.main()
scene="main" scene="main"
curBG="none" curBG="none"
mouseShow=true
BGM("blank") BGM("blank")
end end
function game.mode() function game.mode()
scene="mode" scene="mode"
curBG="none" curBG="none"
mouseShow=true
BGM("blank") BGM("blank")
end end
function game.play() function game.play()
@@ -29,6 +25,7 @@ function game.play()
--curBG="game1" --curBG="game1"
resetGameData() resetGameData()
sysSFX("ready") sysSFX("ready")
mouseShow=false
end end
function game.setting() function game.setting()
scene="setting" scene="setting"

View File

Before

Width:  |  Height:  |  Size: 404 B

After

Width:  |  Height:  |  Size: 404 B

View File

Before

Width:  |  Height:  |  Size: 882 B

After

Width:  |  Height:  |  Size: 882 B

View File

Before

Width:  |  Height:  |  Size: 973 B

After

Width:  |  Height:  |  Size: 973 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 212 B

BIN
image/gamepadIcon/hold.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 272 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 219 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 219 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 243 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 261 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 227 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 235 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 220 B

BIN
image/mouseIcon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 638 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 201 B

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

BIN
image/title1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 201 B

View File

@@ -1,8 +1,8 @@
loseReason={"Finished","Block out"} loseReason={"Finished","Block out"}
blockName={"Z","S","L","J","T","O","I"} blockName={"Z","S","L","J","T","O","I"}
clearName={"Single","Double","Triple"} clearName={"Single","Double","Triple"}
actName={"moveLeft","moveRight","rotRight","rotLeft","rotFlip","hardDrop","softDrop","hold","restart","toLeft","toRight"} actName={"moveLeft","moveRight","rotRight","rotLeft","rotFlip","hardDrop","softDrop","hold","restart","toLeft","toRight","toDown"}
actName_show={"move left","move right","rotate right","rotate left","rotate flip","hard drop","soft drop","hold","restart","toLeft","toRight"} actName_show={"move left","move right","rotate right","rotate left","rotate flip","hard drop","soft drop","hold","restart","toLeft","toRight","toDown"}
blockPos={4,4,4,4,4,5,4} blockPos={4,4,4,4,4,5,4}
renATK={[0]=0,0,0,1,1,2,2,3,3,3}--4 else renATK={[0]=0,0,0,1,1,2,2,3,3,3}--4 else
b2bATK={3,5,8} b2bATK={3,5,8}

134
main.lua
View File

@@ -3,12 +3,8 @@ toN,toS=tonumber,tostring
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 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 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 ins,rem,sort=table.insert,table.remove,table.sort
--[[
freeRow={} --{0,0,0,0,0,0,0,0,0,0}s in freeRow are reset in resetGameData()
for i=1,50 do
freeRow[i]={0,0,0,0,0,0,0,0,0,0}
end
]]--Reset freeRow,in resetGameData
function getNewRow(val) function getNewRow(val)
if not val then val=0 end if not val then val=0 end
local t=rem(freeRow) local t=rem(freeRow)
@@ -45,10 +41,18 @@ end
ww,wh=gc.getWidth(),gc.getHeight() ww,wh=gc.getWidth(),gc.getHeight()
Timer=tm.getTime--Easy get time Timer=tm.getTime--Easy get time
mx,my,mouseShow=-10,-10,true mx,my,mouseShow=-20,-20,false
pause=0--pause countdown(frame)
focus=true focus=true
touches={}--touch ids
do
local l={
Windows=1,
Android=2,
}
system=l[love.system.getOS()]
touching=nil--touching ID
l=nil
end
scene="" scene=""
gamemode="" gamemode=""
@@ -165,12 +169,6 @@ bgm={
"push", "push",
"reason", "reason",
} }
img={
title={
eng=gc.newImage("/image/title/eng.png"),
chi=gc.newImage("/image/title/chi.png"),
}
}
FX={ FX={
flash=0,--Black screen(frame) flash=0,--Black screen(frame)
shake=0,--Screen shake(frame) shake=0,--Screen shake(frame)
@@ -267,8 +265,8 @@ gameEnv0={
sequence=1,visible=1, sequence=1,visible=1,
_20G=false,target=9e99, _20G=false,target=9e99,
freshLimit=9e99, freshLimit=9e99,
key={"left","right","x","z","c","up","down","space","LEFT","RIGHT"}, key={"left","right","x","z","c","up","down","space","r","LEFT","RIGHT","DOWN"},
gamepad={"dpleft","dpright","a","b","y","dpup","dpdown","rightshoulder","leftshoulder","LEFT","RIGHT"}, gamepad={"dpleft","dpright","a","b","y","dpup","dpdown","rightshoulder","leftshoulder","LEFT","RIGHT","DOWN"},
reach=function()end,--Called when reach row target reach=function()end,--Called when reach row target
} }
randomMethod={ randomMethod={
@@ -574,8 +572,8 @@ setting={
das=10,arr=2, das=10,arr=2,
sddas=0,sdarr=2, sddas=0,sdarr=2,
ghost=true,center=true, ghost=true,center=true,
key={"left","right","x","z","c","up","down","space","r","LEFT","RIGHT"}, key={"left","right","x","z","c","up","down","space","r","LEFT","RIGHT","DOWN"},
gamepad={"dpleft","dpright","a","b","y","dpup","dpdown","rightshoulder","leftshoulder","LEFT","RIGHT"}, gamepad={"dpleft","dpright","a","b","y","dpup","dpdown","rightshoulder","leftshoulder","LEFT","RIGHT","DOWN"},
} }
stat={ stat={
run=0, run=0,
@@ -624,12 +622,8 @@ function nextLanguage()
end end
end end
function mStr(s,x,y)gc.printf(s,x-500,y,1000,"center")end function mStr(s,x,y)gc.printf(s,x-500,y,1000,"center")end
function mouseConvert(x,y) function convert(x,y)
if wh/ww<=720/1280 then return x*screenK,(y-screenM)*screenK
return 640+(x-ww*.5)*720/wh,y*720/wh
else
return x*1280/ww,360+(y-wh*.5)*1280/ww
end
end end
function sysSFX(s,v) function sysSFX(s,v)
if setting.sfx then if setting.sfx then
@@ -1268,28 +1262,6 @@ function love.update(dt)
end end
--Background blocks update --Background blocks update
for i=1,#touches do
local x,y=tc.getPosition(touches[i])
for K=1,#gamePad do
local b=gamePad[K]
local press=false
if (x-b.x)^2+(y-b.y)^2<b.r then--Radios already squared
press=true
end
if b.press~=press then
(press and pressKey or releaseKey)(K)
b.press=press
end
end
end
--Touch system
if Buttons.pressing>0 then
Buttons.pressing=Buttons.pressing+1
if Buttons.pressing>35 and Buttons.pressing%6==0 then love.mousepressed(ms.getX(),ms.getY(),1)end
end
--DAP button
if sceneSwaping then if sceneSwaping then
sceneSwaping.time=sceneSwaping.time-1 sceneSwaping.time=sceneSwaping.time-1
if sceneSwaping.time==sceneSwaping.mid then if sceneSwaping.time==sceneSwaping.mid then
@@ -1298,7 +1270,6 @@ function love.update(dt)
end--Reset buttons' state end--Reset buttons' state
game[sceneSwaping.tar]() game[sceneSwaping.tar]()
Buttons.sel=nil Buttons.sel=nil
love.mousemoved(ms.getX(),ms.getY())
elseif sceneSwaping.time==0 then elseif sceneSwaping.time==0 then
sceneSwaping=nil sceneSwaping=nil
end end
@@ -1307,7 +1278,7 @@ function love.update(dt)
end end
--scene swapping & Timer --scene swapping & Timer
end end
function love.draw() function love.draw()print(mouseShow)
Pnt.BG[curBG]() Pnt.BG[curBG]()
gc.setColor(1,1,1,.3) gc.setColor(1,1,1,.3)
for n=1,#BGblock do for n=1,#BGblock do
@@ -1322,19 +1293,16 @@ function love.draw()
if Pnt[scene]then Pnt[scene]()end if Pnt[scene]then Pnt[scene]()end
setFont(40) setFont(40)
drawButton() drawButton()
if mouseShow then if mouseShow and not touching then
gc.setColor(1,.5,0,.7) gc.setColor(1,1,1)
gc.circle("fill",mx,my,6) gc.draw(mouseIcon,mx,my,nil,nil,nil,10,10)
end end
if sceneSwaping then sceneSwaping.draw()end if sceneSwaping then sceneSwaping.draw()end
gc.setColor(0,0,0) gc.setColor(0,0,0)
if wh/ww>=720/1280 then if screenM>0 then
gc.rectangle("fill",0,0,1280,-(wh*1280/ww-720)*.5) gc.rectangle("fill",0,0,1280,-screenM)
gc.rectangle("fill",0,720,1280,(wh*1280/ww-720)*.5) gc.rectangle("fill",0,720,1280,screenM)
else
gc.rectangle("fill",0,0,-(ww*720/wh-1280)*.5,720)
gc.rectangle("fill",1280,0,(ww*720/wh-1280)*.5,720)
end--Draw black side end--Draw black side
numFont(20)gc.setColor(1,1,1) numFont(20)gc.setColor(1,1,1)
@@ -1346,35 +1314,29 @@ function love.draw()
--if gcinfo()>500 then collectgarbage()end --if gcinfo()>500 then collectgarbage()end
end end
function love.resize(x,y) function love.resize(x,y)
ww,wh=x,y screenK=1280/gc.getWidth()
screenM=(gc.getHeight()*16/9-gc.getWidth())/2
gc.origin() gc.origin()
gc.translate(ww*.5,wh*.5) gc.scale(1/screenK,1/screenK)
if wh/ww>=.6 then gc.translate(0,screenM)
gc.scale(ww/1280)
else
gc.scale(wh/720)
end
gc.translate(-640,-360)
end end
function love.focus(f) function love.focus(f)
focus=f
if f then if f then
focus=true
ms.setVisible(false) ms.setVisible(false)
if bgmPlaying then bgm[bgmPlaying]:play()end if bgmPlaying then bgm[bgmPlaying]:play()end
else else
if scene=="play"then pause=20 end
focus=false
ms.setVisible(true) ms.setVisible(true)
if bgmPlaying then bgm[bgmPlaying]:pause()end if bgmPlaying then bgm[bgmPlaying]:pause()end
end end
end end
function love.run() function love.run()
local frameT,dt=Timer() love.focus(true)
local frameT=Timer()
tm.step() tm.step()
love.resize(1280,720) love.resize(nil,gc.getHeight())
game.load()--Launch game.load()--System scene Launch
math.randomseed(os.time()*626)--true ultheur's I D! math.randomseed(os.time()*626)--true A-lthour's ID!
-- while true do
return function() return function()
love.event.pump() love.event.pump()
for name,a,b,c,d,e,f in love.event.poll()do for name,a,b,c,d,e,f in love.event.poll()do
@@ -1384,15 +1346,13 @@ function love.run()
end end
love.handlers[name](a,b,c,d,e,f) love.handlers[name](a,b,c,d,e,f)
end end
if focus or pause==20 then -- if focus then
tm.step() tm.step()
love.update(tm.getDelta()) love.update(tm.getDelta())
if gc.isActive()then gc.clear(1,1,1)
gc.clear(1,1,1) love.draw()
love.draw()--Draw all things gc.present()
gc.present() -- end
end
end
while Timer()-frameT<1/60 do end while Timer()-frameT<1/60 do end
frameT=Timer() frameT=Timer()
end end
@@ -1400,6 +1360,7 @@ end
--System callbacks --System callbacks
do--Texture/Image do--Texture/Image
mouseIcon=gc.newImage("/image/mouseIcon.png")
local p=gc.newImage("/image/block.png") local p=gc.newImage("/image/block.png")
local l={} local l={}
gc.setColor(1,1,1) gc.setColor(1,1,1)
@@ -1417,6 +1378,11 @@ do--Texture/Image
gc.draw(p,nil,nil,nil,12,12) gc.draw(p,nil,nil,nil,12,12)
end end
background=l background=l
gamepadIcon={}
for i=1,9 do
gamepadIcon[i]=gc.newImage("/image/gamepadIcon/"..(actName[i])..".png")
end
titleImage=gc.newImage("/image/title.png")
gc.setCanvas() gc.setCanvas()
end end
do--Particle do--Particle
@@ -1432,19 +1398,19 @@ do--Particle
--Dust particles --Dust particles
PTC.attack={} PTC.attack={}
PTC.attack[1]=gc.newParticleSystem(gc.newImage("/image/attack_1.png"),200) PTC.attack[1]=gc.newParticleSystem(gc.newImage("/image/attack/1.png"),200)
PTC.attack[1]:setParticleLifetime(.25) PTC.attack[1]:setParticleLifetime(.25)
PTC.attack[1]:setEmissionRate(0) PTC.attack[1]:setEmissionRate(0)
PTC.attack[1]:setSpin(10) PTC.attack[1]:setSpin(10)
PTC.attack[1]:setColors(1,1,1,.7,1,1,1,0) PTC.attack[1]:setColors(1,1,1,.7,1,1,1,0)
PTC.attack[2]=gc.newParticleSystem(gc.newImage("/image/attack_2.png"),200) PTC.attack[2]=gc.newParticleSystem(gc.newImage("/image/attack/2.png"),200)
PTC.attack[2]:setParticleLifetime(.3) PTC.attack[2]:setParticleLifetime(.3)
PTC.attack[2]:setEmissionRate(0) PTC.attack[2]:setEmissionRate(0)
PTC.attack[2]:setSpin(8) PTC.attack[2]:setSpin(8)
PTC.attack[2]:setColors(1,1,1,.7,1,1,1,0) PTC.attack[2]:setColors(1,1,1,.7,1,1,1,0)
PTC.attack[3]=gc.newParticleSystem(gc.newImage("/image/attack_3.png"),200) PTC.attack[3]=gc.newParticleSystem(gc.newImage("/image/attack/3.png"),200)
PTC.attack[3]:setParticleLifetime(.4) PTC.attack[3]:setParticleLifetime(.4)
PTC.attack[3]:setEmissionRate(0) PTC.attack[3]:setEmissionRate(0)
PTC.attack[3]:setSpin(6) PTC.attack[3]:setSpin(6)

View File

@@ -10,26 +10,26 @@ swapDeck_data={
{7,0,8,9},{1,0,2,8},{5,2,4,8},{6,0,15,8}, {7,0,8,9},{1,0,2,8},{5,2,4,8},{6,0,15,8},
}--Block id [ZSLJTOI] ,dir,x,y }--Block id [ZSLJTOI] ,dir,x,y
swap={ swap={
none={2,1,d=function()end}, none={2,1,d=function()end},
flash={8,1,d=function()gc.clear(1,1,1)end}, flash={8,1,d=function()gc.clear(1,1,1)end},
deck={42,1,d=function() deck={42,1,d=function()
local t=sceneSwaping.time local t=sceneSwaping.time
gc.setColor(1,1,1) gc.setColor(1,1,1)
if t>6 then if t>6 then
for i=1,43-t do for i=1,43-t do
local bn=swapDeck_data[i][1] local bn=swapDeck_data[i][1]
local b=blocks[bn][swapDeck_data[i][2]] local b=blocks[bn][swapDeck_data[i][2]]
local cx,cy=swapDeck_data[i][3],swapDeck_data[i][4] local cx,cy=swapDeck_data[i][3],swapDeck_data[i][4]
for y=1,#b do for x=1,#b[1]do for y=1,#b do for x=1,#b[1]do
if b[y][x]>0 then if b[y][x]>0 then
gc.draw(blockSkin[bn],80*(cx+x-2),80*(10-cy-y),nil,8/3) gc.draw(blockSkin[bn],80*(cx+x-2),80*(10-cy-y),nil,8/3)
end end
end end end end
end
else
gc.clear(1,1,1)
end end
else
gc.clear(1,1,1)
end end
end
}, },
}--Scene swapping animations }--Scene swapping animations
@@ -109,8 +109,11 @@ end
function Pnt.main() function Pnt.main()
gc.setColor(1,1,1) gc.setColor(1,1,1)
setFont(30) setFont(30)
gc.print("Alpha 0.1+",370,150) gc.print("Alpha V0.2",370,150)
gc.draw(img.title[setting.lang],30,30) if system==2 then
gc.print("Android",530,110)
end
gc.draw(titleImage,30,30)
end end
function Pnt.play() function Pnt.play()
for p=1,#players do for p=1,#players do
@@ -264,12 +267,21 @@ function Pnt.play()
gc.draw(PTC.attack[i]) gc.draw(PTC.attack[i])
end end
setmetatable(_G,nil) setmetatable(_G,nil)
if system==2 then
gc.setColor(1,1,1,.8)
gc.setLineWidth(5)
for i=1,#gamepad do
local k=gamepad[i]
gc.circle("line",k.x,k.y,k.r0)
gc.draw(gamepadIcon[i],k.x,k.y,nil,3,nil,18,18)
end
end
end end
function Pnt.setting2() function Pnt.setting2()
gc.setColor(1,1,1) gc.setColor(1,1,1)
setFont(18) setFont(18)
mStr("softdropDAS:"..setting.sddas,828,138) mStr("softdropDAS:"..setting.sddas,828,140)
mStr("softdropARR:"..setting.sdarr,1043,138) mStr("softdropARR:"..setting.sdarr,1043,140)
setFont(35) setFont(35)
mStr("DAS:"..setting.das,828,73) mStr("DAS:"..setting.das,828,73)
mStr("ARR:"..setting.arr,1043,73) mStr("ARR:"..setting.arr,1043,73)
@@ -306,5 +318,5 @@ function Pnt.stat()
gc.print(stat.hold,600,380) gc.print(stat.hold,600,380)
gc.print(stat.spin,600,420) gc.print(stat.spin,600,420)
gc.draw(img.title[setting.lang],180,600,.2,.7+.05*sin(Timer()*2),nil,140,100) gc.draw(img.title[setting.lang],260,570,.2+.07*sin(Timer()*3),.8,nil,250,60)
end end

View File

@@ -55,6 +55,24 @@ function Tmr.play(dt)
PTC.attack[i]:update(dt) PTC.attack[i]:update(dt)
end end
-- Update attack beam -- Update attack beam
local list=tc.getTouches()
for K=1,#gamepad do
local b=gamepad[K]
local press=false
for k,v in ipairs(list)do
local x,y=convert(tc.getPosition(v))
if (x-b.x)^2+(y-b.y)^2<b.r then
press=true
end
end
if b.press~=press then
(press and pressKey or releaseKey)(K)
b.press=press
end
end
--Touch system
if count then if count then
count=count-1 count=count-1
if count==0 then if count==0 then
@@ -116,6 +134,7 @@ function Tmr.play(dt)
end end end end
--Fresh visible time --Fresh visible time
if keyPressing[1]or keyPressing[2]then if keyPressing[1]or keyPressing[2]then
P.moving=moving+sgn(moving)
local d=abs(moving)-gameEnv.das local d=abs(moving)-gameEnv.das
if d>1 then if d>1 then
if gameEnv.arr>0 then if gameEnv.arr>0 then
@@ -126,11 +145,11 @@ function Tmr.play(dt)
act[moving>0 and"toRight"or"toLeft"]() act[moving>0 and"toRight"or"toLeft"]()
end end
end end
P.moving=moving+sgn(moving)
else else
P.moving=0 P.moving=0
end end
if keyPressing[7]then if keyPressing[7]then
P.downing=downing+1
local d=abs(downing)-gameEnv.sddas local d=abs(downing)-gameEnv.sddas
if d>1 then if d>1 then
if gameEnv.sdarr>0 then if gameEnv.sdarr>0 then
@@ -141,7 +160,6 @@ function Tmr.play(dt)
act.toDown() act.toDown()
end end
end end
P.downing=downing+1
else else
P.downing=0 P.downing=0
end end