很多全局变量名改为大写
This commit is contained in:
@@ -4,7 +4,7 @@ local max,min,sin,cos=math.max,math.min,math.sin,math.cos
|
||||
local ins,rem=table.insert,table.remove
|
||||
|
||||
local BG
|
||||
local scr=scr
|
||||
local SCR=SCR
|
||||
local BGvars={_G=_G,SHADER=SHADER}
|
||||
|
||||
local back={}
|
||||
@@ -88,7 +88,7 @@ back.wing={
|
||||
end,
|
||||
resize=function()
|
||||
crystal={}
|
||||
W,H=scr.w,scr.h
|
||||
W,H=SCR.w,SCR.h
|
||||
for i=1,16 do
|
||||
crystal[i]={
|
||||
x=i<9 and W*.05*i or W*.05*(28-i),
|
||||
@@ -138,14 +138,14 @@ back.fan={
|
||||
BG.resize()
|
||||
end,
|
||||
resize=function()
|
||||
CX,CY=scr.w/2,scr.h/2
|
||||
W,H=scr.w,scr.h
|
||||
CX,CY=SCR.w/2,SCR.h/2
|
||||
W,H=SCR.w,SCR.h
|
||||
end,
|
||||
update=function()
|
||||
t=t+1
|
||||
if t%10==0 then
|
||||
ins(petal,{
|
||||
x=scr.w*rnd(),
|
||||
x=SCR.w*rnd(),
|
||||
y=0,
|
||||
vy=2+rnd()*2,
|
||||
vx=rnd()*2-.5,
|
||||
@@ -169,7 +169,7 @@ back.fan={
|
||||
draw=function()
|
||||
gc.push("transform")
|
||||
gc.translate(CX,CY+20*sin(t*.02))
|
||||
gc.scale(scr.k)
|
||||
gc.scale(SCR.k)
|
||||
gc.clear(.1,.1,.1)
|
||||
gc.setLineWidth(320)
|
||||
gc.setColor(.3,.2,.3)
|
||||
@@ -206,11 +206,11 @@ back.fan={
|
||||
back.aura={
|
||||
init=function()
|
||||
t=rnd()*3600
|
||||
BG.resize(scr.w,scr.h)
|
||||
BG.resize(SCR.w,SCR.h)
|
||||
end,
|
||||
resize=function(w,h)
|
||||
SHADER.aura:send("w",scr.W)
|
||||
SHADER.aura:send("h",h*scr.dpi)
|
||||
SHADER.aura:send("w",SCR.W)
|
||||
SHADER.aura:send("h",h*SCR.dpi)
|
||||
end,
|
||||
update=function(dt)
|
||||
t=t+dt
|
||||
@@ -218,17 +218,17 @@ back.aura={
|
||||
draw=function()
|
||||
SHADER.aura:send("t",t)
|
||||
gc.setShader(SHADER.aura)
|
||||
gc.rectangle("fill",0,0,scr.w,scr.h)
|
||||
gc.rectangle("fill",0,0,SCR.w,SCR.h)
|
||||
gc.setShader()
|
||||
end,
|
||||
}--Cool liquid background
|
||||
back.bg1={
|
||||
init=function()
|
||||
t=0
|
||||
BG.resize(scr.w)
|
||||
BG.resize(SCR.w)
|
||||
end,
|
||||
resize=function(w)
|
||||
SHADER.gradient1:send("w",scr.W)
|
||||
SHADER.gradient1:send("w",SCR.W)
|
||||
end,
|
||||
update=function(dt)
|
||||
t=t+dt
|
||||
@@ -236,17 +236,17 @@ back.bg1={
|
||||
draw=function()
|
||||
SHADER.gradient1:send("t",t)
|
||||
gc.setShader(SHADER.gradient1)
|
||||
gc.rectangle("fill",0,0,scr.w,scr.h)
|
||||
gc.rectangle("fill",0,0,SCR.w,SCR.h)
|
||||
gc.setShader()
|
||||
end,
|
||||
}--Horizonal red-blue gradient
|
||||
back.bg2={
|
||||
init=function()
|
||||
t=0
|
||||
BG.resize(nil,scr.h)
|
||||
BG.resize(nil,SCR.h)
|
||||
end,
|
||||
resize=function(w,h)
|
||||
SHADER.gradient2:send("h",h*scr.dpi)
|
||||
SHADER.gradient2:send("h",h*SCR.dpi)
|
||||
end,
|
||||
update=function(dt)
|
||||
t=t+dt
|
||||
@@ -254,18 +254,18 @@ back.bg2={
|
||||
draw=function()
|
||||
SHADER.gradient2:send("t",t)
|
||||
gc.setShader(SHADER.gradient2)
|
||||
gc.rectangle("fill",0,0,scr.w,scr.h)
|
||||
gc.rectangle("fill",0,0,SCR.w,SCR.h)
|
||||
gc.setShader()
|
||||
end,
|
||||
}--Vertical red-green gradient
|
||||
back.rainbow={
|
||||
init=function()
|
||||
t=0
|
||||
BG.resize(scr.w,scr.h)
|
||||
BG.resize(SCR.w,SCR.h)
|
||||
end,
|
||||
resize=function(w,h)
|
||||
SHADER.rgb1:send("w",scr.W)
|
||||
SHADER.rgb1:send("h",h*scr.dpi)
|
||||
SHADER.rgb1:send("w",SCR.W)
|
||||
SHADER.rgb1:send("h",h*SCR.dpi)
|
||||
end,
|
||||
update=function(dt)
|
||||
t=t+dt
|
||||
@@ -273,18 +273,18 @@ back.rainbow={
|
||||
draw=function()
|
||||
SHADER.rgb1:send("t",t)
|
||||
gc.setShader(SHADER.rgb1)
|
||||
gc.rectangle("fill",0,0,scr.w,scr.h)
|
||||
gc.rectangle("fill",0,0,SCR.w,SCR.h)
|
||||
gc.setShader()
|
||||
end,
|
||||
}--Colorful RGB
|
||||
back.rainbow2={
|
||||
init=function()
|
||||
t=0
|
||||
BG.resize(scr.w,scr.h)
|
||||
BG.resize(SCR.w,SCR.h)
|
||||
end,
|
||||
resize=function(w,h)
|
||||
SHADER.rgb2:send("w",scr.W)
|
||||
SHADER.rgb2:send("h",h*scr.dpi)
|
||||
SHADER.rgb2:send("w",SCR.W)
|
||||
SHADER.rgb2:send("h",h*SCR.dpi)
|
||||
end,
|
||||
update=function(dt)
|
||||
t=t+dt
|
||||
@@ -292,7 +292,7 @@ back.rainbow2={
|
||||
draw=function()
|
||||
SHADER.rgb2:send("t",t)
|
||||
gc.setShader(SHADER.rgb2)
|
||||
gc.rectangle("fill",0,0,scr.w,scr.h)
|
||||
gc.rectangle("fill",0,0,SCR.w,SCR.h)
|
||||
gc.setShader()
|
||||
end,
|
||||
}--Blue RGB
|
||||
@@ -317,7 +317,7 @@ back.lightning2={
|
||||
init=function()
|
||||
t=0
|
||||
colorLib=_G.SKIN.libColor
|
||||
colorSet=_G.setting.skin
|
||||
colorSet=_G.SETTING.skin
|
||||
blockImg=_G.TEXTURE.miniBlock
|
||||
end,
|
||||
update=function(dt)
|
||||
@@ -346,10 +346,10 @@ back.matrix={
|
||||
draw=function()
|
||||
gc.clear(.15,.15,.15)
|
||||
gc.push("transform")
|
||||
local k=scr.k
|
||||
local k=SCR.k
|
||||
gc.scale(k)
|
||||
local Y=ceil(scr.h/80/k)
|
||||
for x=1,ceil(scr.w/80/k)do
|
||||
local Y=ceil(SCR.h/80/k)
|
||||
for x=1,ceil(SCR.w/80/k)do
|
||||
for y=1,Y do
|
||||
gc.setColor(1,1,1,sin(x+matrixT[x][y]*t)*.1+.1)
|
||||
gc.rectangle("fill",80*x,80*y,-80,-80)
|
||||
@@ -362,14 +362,14 @@ back.matrix={
|
||||
back.space={
|
||||
init=function()
|
||||
stars={}
|
||||
W,H=scr.w+20,scr.h+20
|
||||
BG.resize(scr.w,scr.h)
|
||||
W,H=SCR.w+20,SCR.h+20
|
||||
BG.resize(SCR.w,SCR.h)
|
||||
end,
|
||||
resize=function(w,h)
|
||||
local S=stars
|
||||
for i=1,1260,5 do
|
||||
local s=rnd(26,40)*.1
|
||||
S[i]=s*scr.k --Size
|
||||
S[i]=s*SCR.k --Size
|
||||
S[i+1]=rnd(W)-10 --X
|
||||
S[i+2]=rnd(H)-10 --Y
|
||||
S[i+3]=(rnd()-.5)*.01*s --Vx
|
||||
@@ -424,7 +424,7 @@ function BG.send(data)
|
||||
end
|
||||
end
|
||||
function BG.set(bg,data)
|
||||
if bg==BG.cur or not setting.bg then return end
|
||||
if bg==BG.cur or not SETTING.bg then return end
|
||||
if BG.discard then
|
||||
BG.discard()
|
||||
collectgarbage()
|
||||
|
||||
@@ -3,7 +3,7 @@ local rem=table.remove
|
||||
|
||||
local function fadeOut(id)
|
||||
local src=BGM.list[id]
|
||||
local v=src:getVolume()-.025*setting.bgm
|
||||
local v=src:getVolume()-.025*SETTING.bgm
|
||||
src:setVolume(v>0 and v or 0)
|
||||
if v<=0 then
|
||||
src:stop()
|
||||
@@ -12,10 +12,10 @@ local function fadeOut(id)
|
||||
end
|
||||
local function fadeIn(id)
|
||||
local src=BGM.list[id]
|
||||
local v=setting.bgm
|
||||
local v=SETTING.bgm
|
||||
v=min(v,src:getVolume()+.025*v)
|
||||
src:setVolume(v)
|
||||
if v>=setting.bgm then return true end
|
||||
if v>=SETTING.bgm then return true end
|
||||
end
|
||||
|
||||
local BGM={
|
||||
@@ -64,7 +64,7 @@ function BGM.loadAll()
|
||||
end
|
||||
end
|
||||
function BGM.play(s)
|
||||
if setting.bgm==0 then
|
||||
if SETTING.bgm==0 then
|
||||
BGM.playing=BGM.list[s]
|
||||
BGM.suspend,BGM.nowPlay=s
|
||||
return
|
||||
@@ -84,7 +84,7 @@ function BGM.play(s)
|
||||
end
|
||||
function BGM.freshVolume()
|
||||
if BGM.playing then
|
||||
local v=setting.bgm
|
||||
local v=SETTING.bgm
|
||||
if v>0 then
|
||||
BGM.playing:setVolume(v)
|
||||
if BGM.suspend then
|
||||
|
||||
@@ -71,14 +71,14 @@ function FILE.loadData()
|
||||
if s then
|
||||
setfenv(s,{})
|
||||
local S=s()
|
||||
addToTable(S,stat)
|
||||
addToTable(S,STAT)
|
||||
end
|
||||
end
|
||||
end
|
||||
function FILE.saveData()
|
||||
local F=files.data
|
||||
F:open("w")
|
||||
local _,mes=F:write(dumpTable(stat))
|
||||
local _,mes=F:write(dumpTable(STAT))
|
||||
F:flush()F:close()
|
||||
if not _ then
|
||||
LOG.print(text.statSavingError..(mes or"unknown error"),color.red)
|
||||
@@ -96,14 +96,14 @@ function FILE.loadSetting()
|
||||
F:close()
|
||||
if s then
|
||||
setfenv(s,{})
|
||||
addToTable(s(),setting)
|
||||
addToTable(s(),SETTING)
|
||||
end
|
||||
end
|
||||
end
|
||||
function FILE.saveSetting()
|
||||
local F=files.setting
|
||||
F:open("w")
|
||||
local _,mes=F:write(dumpTable(setting))
|
||||
local _,mes=F:write(dumpTable(SETTING))
|
||||
F:flush()F:close()
|
||||
if _ then LOG.print(text.settingSaved,color.green)
|
||||
else LOG.print(text.settingSavingError..(mes or"unknown error"),color.red)
|
||||
|
||||
@@ -23,7 +23,7 @@ local gc=love.graphics
|
||||
local int,rnd,abs=math.floor,math.random,math.abs
|
||||
local max,min=math.max,math.min
|
||||
local ins,rem=table.insert,table.remove
|
||||
local scr=scr
|
||||
local SCR=SCR
|
||||
|
||||
local mx,my,mouseShow=-20,-20,false
|
||||
local touching=nil--First touching ID(userdata)
|
||||
@@ -107,7 +107,7 @@ function love.mousemoved(x,y,dx,dy,t)
|
||||
mouseShow=true
|
||||
mx,my=xOy:inverseTransformPoint(x,y)
|
||||
if SCN.swapping then return end
|
||||
dx,dy=dx/scr.k,dy/scr.k
|
||||
dx,dy=dx/SCR.k,dy/SCR.k
|
||||
if mouseMove[SCN.cur]then
|
||||
mouseMove[SCN.cur](mx,my,dx,dy)
|
||||
end
|
||||
@@ -151,7 +151,7 @@ function love.touchmoved(id,x,y,dx,dy)
|
||||
if SCN.swapping then return end
|
||||
x,y=xOy:inverseTransformPoint(x,y)
|
||||
if touchMove[SCN.cur]then
|
||||
touchMove[SCN.cur](id,x,y,dx/scr.k,dy/scr.k)
|
||||
touchMove[SCN.cur](id,x,y,dx/SCR.k,dy/SCR.k)
|
||||
end
|
||||
if WIDGET.sel then
|
||||
if touching then
|
||||
@@ -194,15 +194,15 @@ function love.keypressed(i)
|
||||
love._setGammaCorrect(r)
|
||||
LOG.print("GammaCorrect: "..(r and"on"or"off"),"warn")
|
||||
elseif i=="f2"then
|
||||
LOG.print("System:"..system.."["..jit.arch.."]")
|
||||
LOG.print("System:"..SYSTEM.."["..jit.arch.."]")
|
||||
LOG.print("luaVer:".._VERSION)
|
||||
LOG.print("jitVer:"..jit.version)
|
||||
LOG.print("jitVerNum:"..jit.version_num)
|
||||
elseif i=="f3"then
|
||||
for _=1,8 do
|
||||
local P=players.alive[rnd(#players.alive)]
|
||||
if P~=players[1]then
|
||||
P.lastRecv=players[1]
|
||||
local P=PLAYERS.alive[rnd(#PLAYERS.alive)]
|
||||
if P~=PLAYERS[1]then
|
||||
P.lastRecv=PLAYERS[1]
|
||||
P:lose()
|
||||
end
|
||||
end
|
||||
@@ -323,28 +323,28 @@ function love.lowmemory()
|
||||
collectgarbage()
|
||||
end
|
||||
function love.resize(w,h)
|
||||
scr.w,scr.h,scr.dpi=w,h,gc.getDPIScale()
|
||||
scr.W,scr.H=scr.w*scr.dpi,scr.h*scr.dpi
|
||||
scr.r=h/w
|
||||
scr.rad=(w^2+h^2)^.5
|
||||
SCR.w,SCR.h,SCR.dpi=w,h,gc.getDPIScale()
|
||||
SCR.W,SCR.H=SCR.w*SCR.dpi,SCR.h*SCR.dpi
|
||||
SCR.r=h/w
|
||||
SCR.rad=(w^2+h^2)^.5
|
||||
|
||||
if scr.r>=.5625 then
|
||||
scr.k=w/1280
|
||||
scr.x,scr.y=0,(h-w*9/16)*.5
|
||||
if SCR.r>=.5625 then
|
||||
SCR.k=w/1280
|
||||
SCR.x,SCR.y=0,(h-w*9/16)*.5
|
||||
else
|
||||
scr.k=h/720
|
||||
scr.x,scr.y=(w-h*16/9)*.5,0
|
||||
SCR.k=h/720
|
||||
SCR.x,SCR.y=(w-h*16/9)*.5,0
|
||||
end
|
||||
xOy=xOy:setTransformation(w*.5,h*.5,nil,scr.k,nil,640,360)
|
||||
xOy=xOy:setTransformation(w*.5,h*.5,nil,SCR.k,nil,640,360)
|
||||
BG.resize(w,h)
|
||||
|
||||
SHADER.warning:send("w",w*scr.dpi)
|
||||
SHADER.warning:send("h",h*scr.dpi)
|
||||
SHADER.warning:send("w",w*SCR.dpi)
|
||||
SHADER.warning:send("h",h*SCR.dpi)
|
||||
end
|
||||
function love.focus(f)
|
||||
if f then
|
||||
love.timer.step()
|
||||
elseif SCN.cur=="play"and setting.autoPause then
|
||||
elseif SCN.cur=="play"and SETTING.autoPause then
|
||||
pauseGame()
|
||||
end
|
||||
end
|
||||
@@ -373,7 +373,7 @@ function love.errorhandler(msg)
|
||||
gc.captureScreenshot(_)
|
||||
gc.present()
|
||||
|
||||
SFX.fplay("error",setting.voc*.8)
|
||||
SFX.fplay("error",SETTING.voc*.8)
|
||||
|
||||
local BGcolor=rnd()>.026 and{.3,.5,.9}or{.62,.3,.926}
|
||||
local needDraw=true
|
||||
@@ -415,7 +415,7 @@ function love.errorhandler(msg)
|
||||
setFont(120)gc.print(":(",100,40)
|
||||
setFont(38)gc.printf(text.errorMsg,100,200,1280-100)
|
||||
setFont(20)
|
||||
gc.print(system.."-"..gameVersion,100,660)
|
||||
gc.print(SYSTEM.."-"..gameVersion,100,660)
|
||||
gc.print("scene:"..SCN.cur,400,660)
|
||||
gc.printf(err[1],626,360,1260-626)
|
||||
gc.print("TRACEBACK",626,426)
|
||||
@@ -455,7 +455,7 @@ function love.run()
|
||||
love.resize(gc.getWidth(),gc.getHeight())
|
||||
|
||||
--Scene Launch
|
||||
if setting.appLock then
|
||||
if SETTING.appLock then
|
||||
SCN.init("calculator")
|
||||
else
|
||||
SCN.init("load")
|
||||
@@ -492,7 +492,7 @@ function love.run()
|
||||
|
||||
--DRAW
|
||||
if not mini()then
|
||||
FCT=FCT+setting.frameMul
|
||||
FCT=FCT+SETTING.frameMul
|
||||
if FCT>=100 then
|
||||
FCT=FCT-100
|
||||
gc.discard()--SPEED UPUPUP!
|
||||
@@ -511,7 +511,7 @@ function love.run()
|
||||
if mouseShow then
|
||||
local r=Timer()*.5
|
||||
local R=int(r)%7+1
|
||||
_=SKIN.libColor[setting.skin[R]]
|
||||
_=SKIN.libColor[SETTING.skin[R]]
|
||||
gc.setColor(_[1],_[2],_[3],min(1-abs(1-r%1*2),.3))
|
||||
gc.draw(TEXTURE.miniBlock[R],mx,my,Timer()%3.1416*4,20,20,scs[2*R],#blocks[R][0]-scs[2*R-1])
|
||||
gc.setColor(1,1,1,.5)gc.circle("fill",mx,my,5)
|
||||
@@ -523,8 +523,8 @@ function love.run()
|
||||
|
||||
--Draw power info.
|
||||
gc.setColor(1,1,1)
|
||||
if setting.powerInfo then
|
||||
gc.draw(infoCanvas,0,0,0,scr.k)
|
||||
if SETTING.powerInfo then
|
||||
gc.draw(infoCanvas,0,0,0,SCR.k)
|
||||
end
|
||||
|
||||
--Draw scene swapping animation
|
||||
@@ -536,7 +536,7 @@ function love.run()
|
||||
--Draw FPS
|
||||
gc.setColor(1,1,1)
|
||||
setFont(15)
|
||||
_=scr.h-20
|
||||
_=SCR.h-20
|
||||
gc.print(FPS(),5,_)
|
||||
|
||||
--Debug info.
|
||||
@@ -564,11 +564,11 @@ function love.run()
|
||||
|
||||
--Fresh power info.
|
||||
if Timer()-lastFreshPow>2 then
|
||||
if setting.powerInfo and loadingFinished then
|
||||
if SETTING.powerInfo and loadingFinished then
|
||||
updatePowerInfo()
|
||||
lastFreshPow=Timer()
|
||||
end
|
||||
if gc.getWidth()~=scr.w then
|
||||
if gc.getWidth()~=SCR.w then
|
||||
love.resize(gc.getWidth(),gc.getHeight())
|
||||
LOG.print("Screen Resized",color.yellow)
|
||||
end
|
||||
|
||||
@@ -26,7 +26,7 @@ end
|
||||
function LOG.draw()
|
||||
if debugMesList[1]then
|
||||
gc.push("transform")
|
||||
local k=scr.w/1280
|
||||
local k=SCR.w/1280
|
||||
setFont(int(20*k))
|
||||
for i=1,#debugMesList do
|
||||
local M=debugMesList[i]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
local gc=love.graphics
|
||||
local abs=math.abs
|
||||
local scr=scr
|
||||
local SCR=SCR
|
||||
|
||||
sceneInit,sceneBack={},{}
|
||||
local sceneInit,sceneBack=sceneInit,sceneBack
|
||||
@@ -54,35 +54,35 @@ local swap={
|
||||
fade={30,15,function(t)
|
||||
local t=t>15 and 2-t/15 or t/15
|
||||
gc.setColor(0,0,0,t)
|
||||
gc.rectangle("fill",0,0,scr.w,scr.h)
|
||||
gc.rectangle("fill",0,0,SCR.w,SCR.h)
|
||||
end},
|
||||
fade_togame={120,20,function(t)
|
||||
local t=t>20 and(120-t)/100 or t/20
|
||||
gc.setColor(0,0,0,t)
|
||||
gc.rectangle("fill",0,0,scr.w,scr.h)
|
||||
gc.rectangle("fill",0,0,SCR.w,SCR.h)
|
||||
end},
|
||||
slowFade={180,90,function(t)
|
||||
local t=t>90 and 2-t/90 or t/90
|
||||
gc.setColor(0,0,0,t)
|
||||
gc.rectangle("fill",0,0,scr.w,scr.h)
|
||||
gc.rectangle("fill",0,0,SCR.w,SCR.h)
|
||||
end},
|
||||
swipeL={30,15,function(t)
|
||||
t=t/30
|
||||
gc.setColor(.1,.1,.1,1-abs(t-.5))
|
||||
t=t*t*(3-2*t)*2-1
|
||||
gc.rectangle("fill",t*scr.w,0,scr.w,scr.h)
|
||||
gc.rectangle("fill",t*SCR.w,0,SCR.w,SCR.h)
|
||||
end},
|
||||
swipeR={30,15,function(t)
|
||||
t=t/30
|
||||
gc.setColor(.1,.1,.1,1-abs(t-.5))
|
||||
t=t*t*(2*t-3)*2+1
|
||||
gc.rectangle("fill",t*scr.w,0,scr.w,scr.h)
|
||||
gc.rectangle("fill",t*SCR.w,0,SCR.w,SCR.h)
|
||||
end},
|
||||
swipeD={30,15,function(t)
|
||||
t=t/30
|
||||
gc.setColor(.1,.1,.1,1-abs(t-.5))
|
||||
t=t*t*(2*t-3)*2+1
|
||||
gc.rectangle("fill",0,t*scr.h,scr.w,scr.h)
|
||||
gc.rectangle("fill",0,t*SCR.h,SCR.w,SCR.h)
|
||||
end},
|
||||
}--Scene swapping animations
|
||||
function SCN.swapTo(tar,style)--Parallel scene swapping, cannot back
|
||||
|
||||
@@ -42,7 +42,7 @@ function SFX.fieldPlay(s,v,P)
|
||||
SFX.play(s,v,(P.curX+P.sc[2]-5.5)*.15)
|
||||
end
|
||||
function SFX.play(s,vol,pos)
|
||||
if setting.sfx==0 then return end
|
||||
if SETTING.sfx==0 then return end
|
||||
local S=SFX.list[s]--Source list
|
||||
if not S then return end
|
||||
local n=1
|
||||
@@ -57,13 +57,13 @@ function SFX.play(s,vol,pos)
|
||||
S=S[n]--AU_SRC
|
||||
if S:getChannelCount()==1 then
|
||||
if pos then
|
||||
pos=pos*setting.stereo
|
||||
pos=pos*SETTING.stereo
|
||||
S:setPosition(pos,1-pos^2,0)
|
||||
else
|
||||
S:setPosition(0,0,0)
|
||||
end
|
||||
end
|
||||
S:setVolume(((vol or 1)*setting.sfx)^1.626)
|
||||
S:setVolume(((vol or 1)*SETTING.sfx)^1.626)
|
||||
S:play()
|
||||
end
|
||||
function SFX.fplay(s,vol,pos)
|
||||
@@ -81,7 +81,7 @@ function SFX.fplay(s,vol,pos)
|
||||
S=S[n]--AU_SRC
|
||||
if S:getChannelCount()==1 then
|
||||
if pos then
|
||||
pos=pos*setting.stereo
|
||||
pos=pos*SETTING.stereo
|
||||
S:setPosition(pos,1-pos^2,0)
|
||||
else
|
||||
S:setPosition(0,0,0)
|
||||
|
||||
@@ -32,7 +32,7 @@ function FXupdate.attack(S,dt)
|
||||
|
||||
ins(L,S.x)ins(L,S.y)
|
||||
end
|
||||
if #L==4+4*setting.atkFX then
|
||||
if #L==4+4*SETTING.atkFX then
|
||||
rem(L,1)rem(L,1)
|
||||
end
|
||||
return S.t>1
|
||||
|
||||
@@ -19,14 +19,14 @@ do--LOADLIB
|
||||
}
|
||||
function LOADLIB(name)
|
||||
local libName=libName[name]
|
||||
if system=="Windows"or system=="Linux"then
|
||||
local success,message=require(libName[system])
|
||||
if SYSTEM=="Windows"or SYSTEM=="Linux"then
|
||||
local success,message=require(libName[SYSTEM])
|
||||
if success then
|
||||
return success
|
||||
else
|
||||
LOG.print("Cannot load "..name..": "..message,"warn",color.red)
|
||||
end
|
||||
elseif system=="Android"then
|
||||
elseif SYSTEM=="Android"then
|
||||
local fs=love.filesystem
|
||||
local platform={"arm64-v8a","armeabi-v7a"}
|
||||
local libFunc
|
||||
@@ -55,7 +55,7 @@ do--LOADLIB
|
||||
end
|
||||
return libFunc()
|
||||
else
|
||||
LOG.print("No "..name.." for "..system,"warn",color.red)
|
||||
LOG.print("No "..name.." for "..SYSTEM,"warn",color.red)
|
||||
return
|
||||
end
|
||||
return true
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
local level={0,0,.015,.02,.03,.04,.05,.06,.07,.08}
|
||||
local _=love.system.vibrate
|
||||
return function(t)
|
||||
local L=setting.vib
|
||||
local L=SETTING.vib
|
||||
if L>0 then
|
||||
_(level[L+t])
|
||||
end
|
||||
|
||||
@@ -80,13 +80,13 @@ function VOC.update()
|
||||
end
|
||||
elseif Q.s==1 then--Waiting load source
|
||||
Q[1]=getVoice(Q[1])
|
||||
Q[1]:setVolume(setting.voc)
|
||||
Q[1]:setVolume(SETTING.voc)
|
||||
Q[1]:play()
|
||||
Q.s=Q[2]and 2 or 4
|
||||
elseif Q.s==2 then--Playing 1,ready 2
|
||||
if Q[1]:getDuration()-Q[1]:tell()<.08 then
|
||||
Q[2]=getVoice(Q[2])
|
||||
Q[2]:setVolume(setting.voc)
|
||||
Q[2]:setVolume(SETTING.voc)
|
||||
Q[2]:play()
|
||||
Q.s=3
|
||||
end
|
||||
@@ -106,7 +106,7 @@ function VOC.update()
|
||||
end
|
||||
end
|
||||
function VOC.play(s,chn)
|
||||
if setting.voc>0 then
|
||||
if SETTING.voc>0 then
|
||||
local _=VOC.list[s]
|
||||
if not _ then return end
|
||||
if chn then
|
||||
|
||||
@@ -729,7 +729,7 @@ function WIDGET.press(x,y)
|
||||
end
|
||||
end
|
||||
elseif W.type=="textBox"then
|
||||
if system=="Android"then
|
||||
if SYSTEM=="Android"then
|
||||
local _,y=xOy:transformPoint(0,W.y+W.h)
|
||||
kb.setTextInput(true,0,y,1,1)
|
||||
end
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
local rnd=math.random
|
||||
local ins,rem=table.insert,table.remove
|
||||
local mobileHide=(system=="Android"or system=="iOS")and function()return true end
|
||||
local mobileHide=(SYSTEM=="Android"or SYSTEM=="iOS")and function()return true end
|
||||
local function BACK()SCN.back()end
|
||||
local virtualkeySet={
|
||||
{
|
||||
@@ -95,9 +95,9 @@ local function CUSval(k) return function() return customEnv[k] end end
|
||||
local function CUSrev(k) return function() customEnv[k]=not customEnv[k] end end
|
||||
local function CUSsto(k) return function(i) customEnv[k]=i end end
|
||||
|
||||
local function SETval(k) return function() return setting[k] end end
|
||||
local function SETrev(k) return function() setting[k]=not setting[k] end end
|
||||
local function SETsto(k) return function(i) setting[k]=i end end
|
||||
local function SETval(k) return function() return SETTING[k] end end
|
||||
local function SETrev(k) return function() SETTING[k]=not SETTING[k] end end
|
||||
local function SETsto(k) return function(i) SETTING[k]=i end end
|
||||
|
||||
local function STPval(k) return function() return sceneTemp[k] end end
|
||||
local function STPrev(k) return function() sceneTemp[k]=not sceneTemp[k] end end
|
||||
@@ -113,7 +113,7 @@ local function VKAcode(n) return function() VK_org[n].ava=not VK_org[n].ava end
|
||||
|
||||
local function pressKey(k) return function() love.keypressed(k) end end
|
||||
local function setPen(i) return function() sceneTemp.pen=i end end
|
||||
local function setLang(n) return function() LANG.set(n)setting.lang=n end end
|
||||
local function setLang(n) return function() LANG.set(n)SETTING.lang=n end end
|
||||
local function goScene(t,s) return function() SCN.go(t,s) end end
|
||||
local function swapScene(t,s)return function() SCN.swapTo(t,s) end end
|
||||
|
||||
@@ -157,7 +157,7 @@ local Widgets={
|
||||
newButton({name="custom", x=590,y=270,w=200,h=160,color="lOrange",font=45,code=goScene("customGame"),hide=function()return not modeRanks.marathon_normal end}),
|
||||
newButton({name="help", x=150,y=450,w=200,h=160,color="lYellow",font=50,code=goScene("help")}),
|
||||
newButton({name="stat", x=370,y=450,w=200,h=160,color="lCyan", font=40,code=goScene("stat")}),
|
||||
newButton({name="qplay", x=590,y=450,w=200,h=160,color="lGreen", font=45,code=function()SCN.push()loadGame(stat.lastPlay,true)end}),
|
||||
newButton({name="qplay", x=590,y=450,w=200,h=160,color="lGreen", font=45,code=function()SCN.push()loadGame(STAT.lastPlay,true)end}),
|
||||
newButton({name="lang", x=150,y=590,w=200,h=80,color="lGreen", font=45,code=goScene("setting_lang")}),
|
||||
newButton({name="music", x=370,y=590,w=200,h=80,color="lPurple", font=30,code=goScene("music")}),
|
||||
newButton({name="quit", x=590,y=590,w=200,h=80,color="lGrey", font=45,code=function()VOC.play("bye")SCN.swapTo("quit","slowFade")end}),
|
||||
@@ -172,17 +172,17 @@ local Widgets={
|
||||
newText({name="title", x=30, y=30,font=80,align="L"}),
|
||||
newText({name="arrow", x=270, y=360,font=45,align="L"}),
|
||||
newText({name="now", x=700, y=500,font=50,align="R",hide=function()return not BGM.nowPlay end}),
|
||||
newSlider({name="bgm", x=760, y=80,w=400, font=35,disp=SETval("bgm"),code=function(v)setting.bgm=v BGM.freshVolume()end}),
|
||||
newSlider({name="bgm", x=760, y=80,w=400, font=35,disp=SETval("bgm"),code=function(v)SETTING.bgm=v BGM.freshVolume()end}),
|
||||
newButton({name="up", x=200, y=250,w=120, font=55,code=pressKey("up"),hide=function()return sceneTemp==1 end}),
|
||||
newButton({name="play", x=200, y=390,w=120, font=35,code=pressKey("space"),hide=function()return setting.bgm==0 end}),
|
||||
newButton({name="play", x=200, y=390,w=120, font=35,code=pressKey("space"),hide=function()return SETTING.bgm==0 end}),
|
||||
newButton({name="down", x=200, y=530,w=120, font=55,code=pressKey("down"),hide=function()return sceneTemp==BGM.len end}),
|
||||
newButton({name="back", x=1140, y=640,w=170,h=80, font=40,code=BACK}),
|
||||
},
|
||||
customGame={
|
||||
newText({name="title", x=600,y=5,font=80,align="R"}),
|
||||
newText({name="subTitle", x=610,y=50,font=35,align="L",color="grey"}),
|
||||
newText({name="defSeq", x=330,y=550,align="L",color="grey",hide=function()return preBag[1]end}),
|
||||
newText({name="noMsn", x=610,y=550,align="L",color="grey",hide=function()return preMission[1]end}),
|
||||
newText({name="defSeq", x=330,y=550,align="L",color="grey",hide=function()return BAG[1]end}),
|
||||
newText({name="noMsn", x=610,y=550,align="L",color="grey",hide=function()return MISSION[1]end}),
|
||||
|
||||
--Basic
|
||||
newSelector({name="drop", x=170, y=150,w=220,color="orange", list=CUSlist.drop, disp=CUSval("drop"),code=CUSsto("drop")}),
|
||||
@@ -317,7 +317,7 @@ local Widgets={
|
||||
newKey({name="ten", x=1000, y=440, w=90, color="lGreen", font=40,code=pressKey("ten")}),
|
||||
newKey({name="backsp", x=1000, y=540, w=90, color="lYellow",font=50,code=pressKey("backspace")}),
|
||||
newKey({name="reset", x=1000, y=640, w=90, color="lYellow",font=50,code=pressKey("delete")}),
|
||||
newButton({name="copy", x=1140, y=440, w=170,h=80, color="lRed", font=40,code=pressKey("cC"),hide=function()return #preBag==0 end}),
|
||||
newButton({name="copy", x=1140, y=440, w=170,h=80, color="lRed", font=40,code=pressKey("cC"),hide=function()return #BAG==0 end}),
|
||||
newButton({name="paste", x=1140, y=540, w=170,h=80, color="lBlue", font=40,code=pressKey("cV")}),
|
||||
|
||||
newButton({name="back", x=1140, y=640, w=170,h=80, font=40,code=BACK}),
|
||||
@@ -368,7 +368,7 @@ local Widgets={
|
||||
newKey({name="ten", x=1000, y=440, w=90, color="lGreen", font=40,code=pressKey("ten")}),
|
||||
newKey({name="backsp", x=1000, y=540, w=90, color="lYellow",font=50,code=pressKey("backspace")}),
|
||||
newKey({name="reset", x=1000, y=640, w=90, color="lYellow",font=50,code=pressKey("delete")}),
|
||||
newButton({name="copy", x=1140, y=440, w=170,h=80, color="lRed", font=40,code=pressKey("cC"),hide=function()return #preMission==0 end}),
|
||||
newButton({name="copy", x=1140, y=440, w=170,h=80, color="lRed", font=40,code=pressKey("cC"),hide=function()return #MISSION==0 end}),
|
||||
newButton({name="paste", x=1140, y=540, w=170,h=80, color="lBlue", font=40,code=pressKey("cV")}),
|
||||
newSwitch({name="mission", x=1150, y=350, disp=CUSval("missionKill"), code=CUSrev("missionKill")}),
|
||||
|
||||
@@ -379,7 +379,7 @@ local Widgets={
|
||||
},
|
||||
pause={
|
||||
newButton({name="setting", x=1120, y=70, w=240,h=90, color="lBlue", font=35,code=pressKey("s")}),
|
||||
newButton({name="replay", x=640, y=250, w=240,h=100,color="lYellow",font=30,code=pressKey("p"),hide=function()return not(game.result or game.replaying)or #players>1 end}),
|
||||
newButton({name="replay", x=640, y=250, w=240,h=100,color="lYellow",font=30,code=pressKey("p"),hide=function()return not(GAME.result or GAME.replaying)or #PLAYERS>1 end}),
|
||||
newButton({name="resume", x=640, y=367, w=240,h=100,color="lGreen", font=30,code=pressKey("escape")}),
|
||||
newButton({name="restart", x=640, y=483, w=240,h=100,color="lRed", font=35,code=pressKey("r")}),
|
||||
newButton({name="quit", x=640, y=600, w=240,h=100,font=35,code=BACK}),
|
||||
@@ -398,9 +398,9 @@ local Widgets={
|
||||
newButton({name="layout", x=460, y=540, w=140,h=70, font=35,code=goScene("setting_skin")}),
|
||||
newSwitch({name="autoPause",x=1080, y=320, font=20,disp=SETval("autoPause"), code=SETrev("autoPause")}),
|
||||
newSwitch({name="swap", x=1080, y=380, font=20,disp=SETval("swap"), code=SETrev("swap")}),
|
||||
newSwitch({name="fine", x=1080, y=440, font=20,disp=SETval("fine"), code=function()setting.fine=not setting.fine if setting.fine then SFX.play("finesseError",.6) end end}),
|
||||
newSwitch({name="fine", x=1080, y=440, font=20,disp=SETval("fine"), code=function()SETTING.fine=not SETTING.fine if SETTING.fine then SFX.play("finesseError",.6) end end}),
|
||||
newSwitch({name="appLock", x=1080, y=500, font=20,disp=SETval("appLock"), code=SETrev("appLock")}),
|
||||
newButton({name="calc", x=970, y=550, w=150,h=60,color="dGrey", font=25,code=goScene("calculator"),hide=function()return not setting.appLock end}),
|
||||
newButton({name="calc", x=970, y=550, w=150,h=60,color="dGrey", font=25,code=goScene("calculator"),hide=function()return not SETTING.appLock end}),
|
||||
newButton({name="back", x=1140, y=640, w=170,h=80, font=40,code=BACK}),
|
||||
},
|
||||
setting_video={
|
||||
@@ -425,10 +425,10 @@ local Widgets={
|
||||
newSlider({name="atkFX", x=350, y=600,w=373,unit=5, disp=SETval("atkFX"), code=SETsto("atkFX")}),
|
||||
newSlider({name="frame", x=350, y=650,w=373,unit=10,
|
||||
disp=function()
|
||||
return setting.frameMul>35 and setting.frameMul/10 or setting.frameMul/5-4
|
||||
return SETTING.frameMul>35 and SETTING.frameMul/10 or SETTING.frameMul/5-4
|
||||
end,
|
||||
code=function(i)
|
||||
setting.frameMul=i<5 and 5*i+20 or 10*i
|
||||
SETTING.frameMul=i<5 and 5*i+20 or 10*i
|
||||
end}),
|
||||
|
||||
newSwitch({name="text", x=1100, y=180,font=35,disp=SETval("text"),code=SETrev("text")}),
|
||||
@@ -438,19 +438,19 @@ local Widgets={
|
||||
newSwitch({name="nextPos", x=1100, y=420,font=35,disp=SETval("nextPos"),code=SETrev("nextPos")}),
|
||||
newSwitch({name="fullscreen",x=1100,y=480,disp=SETval("fullscreen"),
|
||||
code=function()
|
||||
setting.fullscreen=not setting.fullscreen
|
||||
love.window.setFullscreen(setting.fullscreen)
|
||||
SETTING.fullscreen=not SETTING.fullscreen
|
||||
love.window.setFullscreen(SETTING.fullscreen)
|
||||
love.resize(love.graphics.getWidth(),love.graphics.getHeight())
|
||||
end}),
|
||||
newSwitch({name="bg", x=1100, y=540,font=35,disp=SETval("bg"),
|
||||
code=function()
|
||||
BG.set("none")
|
||||
setting.bg=not setting.bg
|
||||
SETTING.bg=not SETTING.bg
|
||||
BG.set("space")
|
||||
end}),
|
||||
newSwitch({name="power", x=990, y=640,font=35,disp=SETval("powerInfo"),
|
||||
code=function()
|
||||
setting.powerInfo=not setting.powerInfo
|
||||
SETTING.powerInfo=not SETTING.powerInfo
|
||||
end}),
|
||||
newButton({name="back", x=1140, y=640,w=170,h=80, font=40,code=BACK}),
|
||||
},
|
||||
@@ -461,8 +461,8 @@ local Widgets={
|
||||
newButton({name="graphic", x=1080, y=80,w=240,h=80,color="lCyan", font=35,code=swapScene("setting_video","swipeL")}),
|
||||
|
||||
newSlider({name="sfx", x=180, y=200,w=400, font=35,change=function()SFX.play("blip_1")end, disp=SETval("sfx"), code=SETsto("sfx")}),
|
||||
newSlider({name="stereo", x=180, y=500,w=400, font=35,change=function()SFX.play("move",1,-1)SFX.play("lock",1,1)end,disp=SETval("stereo"),code=SETsto("stereo"),hide=function()return setting.sfx==0 end}),
|
||||
newSlider({name="spawn", x=180, y=300,w=400, font=30,change=function()SFX.fplay("spawn_"..rnd(7),setting.spawn)end,disp=SETval("spawn"), code=SETsto("spawn")}),
|
||||
newSlider({name="stereo", x=180, y=500,w=400, font=35,change=function()SFX.play("move",1,-1)SFX.play("lock",1,1)end,disp=SETval("stereo"),code=SETsto("stereo"),hide=function()return SETTING.sfx==0 end}),
|
||||
newSlider({name="spawn", x=180, y=300,w=400, font=30,change=function()SFX.fplay("spawn_"..rnd(7),SETTING.spawn)end,disp=SETval("spawn"), code=SETsto("spawn")}),
|
||||
newSlider({name="bgm", x=180, y=400,w=400, font=35,change=function()BGM.freshVolume()end, disp=SETval("bgm"), code=SETsto("bgm")}),
|
||||
newSlider({name="vib", x=750, y=200,w=400, unit=5, font=25,change=function()VIB(2)end, disp=SETval("vib"), code=SETsto("vib")}),
|
||||
newSlider({name="voc", x=750, y=300,w=400, font=35,change=function()VOC.play("test")end, disp=SETval("voc"), code=SETsto("voc")}),
|
||||
@@ -481,7 +481,7 @@ local Widgets={
|
||||
newSwitch({name="ims", x=1100, y=470, disp=SETval("ims"), code=SETrev("ims")}),
|
||||
newButton({name="reset", x=160, y=580,w=200,h=100,color="lRed",font=40,
|
||||
code=function()
|
||||
local _=setting
|
||||
local _=SETTING
|
||||
_.das,_.arr=10,2
|
||||
_.sddas,_.sdarr=0,2
|
||||
_.ihs,_.irs,_.ims=false,false,false
|
||||
@@ -527,13 +527,13 @@ local Widgets={
|
||||
|
||||
newButton({name="skinR", x=200,y=640,w=220,h=80,color="lPurple",font=35,
|
||||
code=function()
|
||||
setting.skin={1,5,8,2,10,3,7,1,5,5,1,8,2,10,3,7,10,7,8,2,8,2,1,5,3}
|
||||
SETTING.skin={1,5,8,2,10,3,7,1,5,5,1,8,2,10,3,7,10,7,8,2,8,2,1,5,3}
|
||||
SFX.play("rotate")
|
||||
end}),
|
||||
newButton({name="faceR", x=480,y=640,w=220,h=80,color="lRed",font=35,
|
||||
code=function()
|
||||
for i=1,25 do
|
||||
setting.face[i]=0
|
||||
SETTING.face[i]=0
|
||||
end
|
||||
SFX.play("hold")
|
||||
end}),
|
||||
@@ -606,23 +606,23 @@ local Widgets={
|
||||
newButton({name="pro", x=1120, y=100, w=240,h=80, font=35,code=function()for i=1,20 do VK_org[i].ava=true end end}),
|
||||
newSwitch({name="hide", x=1170, y=200, font=40,disp=SETval("VKSwitch"),code=SETrev("VKSwitch")}),
|
||||
newSwitch({name="track", x=1170, y=300, font=35,disp=SETval("VKTrack"),code=SETrev("VKTrack")}),
|
||||
newSlider({name="sfx", x=800, y=380, w=180, font=35,change=function()SFX.play("virtualKey",setting.VKSFX)end,disp=SETval("VKSFX"),code=SETsto("VKSFX")}),
|
||||
newSlider({name="vib", x=800, y=460, w=180,unit=2, font=35,change=function()VIB(setting.VKVIB)end,disp=SETval("VKVIB"),code=SETsto("VKVIB")}),
|
||||
newSlider({name="sfx", x=800, y=380, w=180, font=35,change=function()SFX.play("virtualKey",SETTING.VKSFX)end,disp=SETval("VKSFX"),code=SETsto("VKSFX")}),
|
||||
newSlider({name="vib", x=800, y=460, w=180,unit=2, font=35,change=function()VIB(SETTING.VKVIB)end,disp=SETval("VKVIB"),code=SETsto("VKVIB")}),
|
||||
newSwitch({name="icon", x=850, y=300, font=40,disp=SETval("VKIcon"),code=SETrev("VKIcon")}),
|
||||
newButton({name="tkset", x=1120, y=420, w=240,h=80,
|
||||
code=function()
|
||||
SCN.go("setting_trackSetting")
|
||||
end,
|
||||
hide=function()
|
||||
return not setting.VKTrack
|
||||
return not SETTING.VKTrack
|
||||
end}),
|
||||
newSlider({name="alpha", x=840, y=540, w=400,font=40,disp=SETval("VKAlpha"),code=SETsto("VKAlpha")}),
|
||||
newButton({name="back", x=1140, y=640, w=170,h=80,font=40,code=BACK}),
|
||||
},
|
||||
setting_trackSetting={
|
||||
newSwitch({name="VKDodge", x=400, y=200, font=35, disp=SETval("VKDodge"),code=SETrev("VKDodge")}),
|
||||
newSlider({name="VKTchW", x=140, y=310, w=1000, unit=10,font=35,disp=SETval("VKTchW"),code=function(i)setting.VKTchW=i setting.VKCurW=math.max(setting.VKCurW,i)end}),
|
||||
newSlider({name="VKCurW", x=140, y=370, w=1000, unit=10,font=35,disp=SETval("VKCurW"),code=function(i)setting.VKCurW=i setting.VKTchW=math.min(setting.VKTchW,i)end}),
|
||||
newSlider({name="VKTchW", x=140, y=310, w=1000, unit=10,font=35,disp=SETval("VKTchW"),code=function(i)SETTING.VKTchW=i SETTING.VKCurW=math.max(SETTING.VKCurW,i)end}),
|
||||
newSlider({name="VKCurW", x=140, y=370, w=1000, unit=10,font=35,disp=SETval("VKCurW"),code=function(i)SETTING.VKCurW=i SETTING.VKTchW=math.min(SETTING.VKTchW,i)end}),
|
||||
newButton({name="back", x=1140, y=640, w=170,h=80,font=40,code=BACK}),
|
||||
},
|
||||
setting_lang={
|
||||
@@ -696,12 +696,12 @@ local Widgets={
|
||||
debug={
|
||||
newButton({name="scrInfo", x=300,y=120,w=300,h=100,color="green",code=function()
|
||||
LOG.print("Screen Info:")
|
||||
LOG.print("x y: "..scr.x.." "..scr.y)
|
||||
LOG.print("w h: "..scr.w.." "..scr.h)
|
||||
LOG.print("W H: "..scr.W.." "..scr.H)
|
||||
LOG.print("k: "..math.floor(scr.k*100)*.01)
|
||||
LOG.print("rad: "..math.floor(scr.rad*100)*.01)
|
||||
LOG.print("dpi: "..scr.dpi)
|
||||
LOG.print("x y: "..SCR.x.." "..SCR.y)
|
||||
LOG.print("w h: "..SCR.w.." "..SCR.h)
|
||||
LOG.print("W H: "..SCR.W.." "..SCR.H)
|
||||
LOG.print("k: "..math.floor(SCR.k*100)*.01)
|
||||
LOG.print("rad: "..math.floor(SCR.rad*100)*.01)
|
||||
LOG.print("dpi: "..SCR.dpi)
|
||||
end}),
|
||||
newButton({name="reset", x=640,y=380,w=240,h=100,color="orange", font=40,
|
||||
code=function()sceneTemp.reset=true end,
|
||||
|
||||
44
main.lua
44
main.lua
@@ -11,6 +11,7 @@
|
||||
--?
|
||||
function NULL()end
|
||||
DBP=print--use this if need debugging print
|
||||
SYSTEM=love.system.getOS()
|
||||
MARKING=true
|
||||
LOADED=false
|
||||
NOGAME=false
|
||||
@@ -21,8 +22,7 @@ math.randomseed(os.time()*626)
|
||||
love.keyboard.setKeyRepeat(true)
|
||||
love.mouse.setVisible(false)
|
||||
|
||||
system=love.system.getOS()
|
||||
scr={
|
||||
SCR={
|
||||
x=0,y=0,--Up-left Coord on screen
|
||||
w=0,h=0,--Fullscreen w/h in gc
|
||||
W=0,H=0,--Fullscreen w/h in shader
|
||||
@@ -72,11 +72,11 @@ customEnv={
|
||||
bg="none",
|
||||
bgm="race"
|
||||
}
|
||||
preField={h=20}for i=1,20 do preField[i]={0,0,0,0,0,0,0,0,0,0}end--Field for custom game
|
||||
preBag={}--Sequence for custom game
|
||||
preMission={}--Clearing target for custom game
|
||||
FIELD={h=20}for i=1,20 do FIELD[i]={0,0,0,0,0,0,0,0,0,0}end--Field for custom game
|
||||
BAG={}--Sequence for custom game
|
||||
MISSION={}--Clearing mission for custom game
|
||||
|
||||
game={
|
||||
GAME={
|
||||
frame=0, --Frame count
|
||||
result=false, --Game result (string)
|
||||
pauseTime=0, --Time paused
|
||||
@@ -97,13 +97,13 @@ game={
|
||||
mostDangerous=nil, --Most dangerous player
|
||||
secDangerous=nil, --Second dangerous player
|
||||
}--Global game data
|
||||
players={alive={}}--Players data
|
||||
curMode=nil--Current mode object
|
||||
PLAYERS={alive={}}--Players data
|
||||
CURMODE=nil--Current mode object
|
||||
--blockSkin,blockSkinMini={},{}--Redefined in SKIN.change
|
||||
|
||||
require("Zframework")--Load Zframework
|
||||
|
||||
--Load modules
|
||||
require("Zframework")--Load Zframework
|
||||
blocks= require("parts/mino")
|
||||
AITemplate= require("parts/AITemplate")
|
||||
freeRow= require("parts/freeRow")
|
||||
@@ -132,18 +132,18 @@ if fs.getInfo("settings.dat")then
|
||||
FILE.loadSetting()
|
||||
else
|
||||
-- firstRun=true
|
||||
if system=="Android"or system=="iOS" then
|
||||
setting.VKSwitch=true
|
||||
setting.swap=false
|
||||
setting.vib=2
|
||||
setting.powerInfo=true
|
||||
setting.fullscreen=true
|
||||
if SYSTEM=="Android"or SYSTEM=="iOS" then
|
||||
SETTING.VKSwitch=true
|
||||
SETTING.swap=false
|
||||
SETTING.vib=2
|
||||
SETTING.powerInfo=true
|
||||
SETTING.fullscreen=true
|
||||
love.window.setFullscreen(true)
|
||||
love.resize(love.graphics.getWidth(),love.graphics.getHeight())
|
||||
end
|
||||
end
|
||||
LANG.set(setting.lang)
|
||||
if setting.fullscreen then love.window.setFullscreen(true)end
|
||||
LANG.set(SETTING.lang)
|
||||
if SETTING.fullscreen then love.window.setFullscreen(true)end
|
||||
|
||||
if fs.getInfo("unlock.dat")then FILE.loadUnlock()end
|
||||
if fs.getInfo("data.dat")then FILE.loadData()end
|
||||
@@ -172,12 +172,12 @@ do
|
||||
R.tech_finesse2=R["tech_finesse+"]
|
||||
R["tech_normal+"],R["tech_hard+"],R["tech_lunatic+"],R["tech_finesse+"]=nil
|
||||
end
|
||||
if not text.modes[stat.lastPlay]then
|
||||
stat.lastPlay="sprint_10"
|
||||
if not text.modes[STAT.lastPlay]then
|
||||
STAT.lastPlay="sprint_10"
|
||||
end
|
||||
|
||||
--Check setting file
|
||||
local S=setting
|
||||
local S=SETTING
|
||||
if
|
||||
type(S.block)~="boolean"or
|
||||
type(S.spawn)~="number"or
|
||||
@@ -191,7 +191,7 @@ do
|
||||
end
|
||||
|
||||
--Update data file
|
||||
S=stat
|
||||
S=STAT
|
||||
if not S.spin[1][6]then
|
||||
for i=1,25 do
|
||||
S.spin[i][6]=0
|
||||
@@ -210,7 +210,7 @@ do
|
||||
FILE.saveData()
|
||||
FILE.saveSetting()
|
||||
end
|
||||
if system=="Android"and not setting.fullscreen then
|
||||
if SYSTEM=="Android"and not SETTING.fullscreen then
|
||||
LOG.print("如果手机上方状态栏不消失,请到设置界面开启全屏",300,color.yellow)
|
||||
LOG.print("Switch fullscreen on if titleBar don't disappear",300,color.yellow)
|
||||
end
|
||||
|
||||
@@ -36,7 +36,7 @@ return{
|
||||
slowMark=true,
|
||||
load=function()
|
||||
PLY.newPlayer(1,340,15)
|
||||
players[1].modeData.event="M7"
|
||||
PLAYERS[1].modeData.event="M7"
|
||||
end,
|
||||
mesDisp=function(P)
|
||||
mText(drawableText.line,69,370)
|
||||
|
||||
@@ -17,17 +17,17 @@ return{
|
||||
pauseLimit=true,
|
||||
load=function()
|
||||
PLY.newPlayer(1,340,15)
|
||||
if setting.spawn==0 then
|
||||
if SETTING.spawn==0 then
|
||||
LOG.print(text.switchSpawnSFX,color.yellow)
|
||||
end
|
||||
end,
|
||||
mesDisp=function(P)
|
||||
if not game.result then
|
||||
if game.replaying then
|
||||
if not GAME.result then
|
||||
if GAME.replaying then
|
||||
gc.setColor(.3,.3,.3,.7)
|
||||
gc.push("transform")
|
||||
gc.origin()
|
||||
gc.rectangle("fill",0,0,scr.w,scr.h)
|
||||
gc.rectangle("fill",0,0,SCR.w,SCR.h)
|
||||
gc.pop()
|
||||
else
|
||||
gc.clear(.26,.26,.26)
|
||||
|
||||
@@ -28,7 +28,7 @@ return{
|
||||
pauseLimit=true,
|
||||
load=function()
|
||||
PLY.newPlayer(1,340,15)
|
||||
local P=players[1]
|
||||
local P=PLAYERS[1]
|
||||
local F=P.field
|
||||
for i=1,24 do
|
||||
F[i]=freeRow.get(13)
|
||||
|
||||
@@ -26,7 +26,7 @@ return{
|
||||
pauseLimit=true,
|
||||
load=function()
|
||||
PLY.newPlayer(1,340,15)
|
||||
local P=players[1]
|
||||
local P=PLAYERS[1]
|
||||
local F=P.field
|
||||
for i=1,24 do
|
||||
F[i]=freeRow.get(13)
|
||||
|
||||
@@ -9,13 +9,13 @@ return{
|
||||
for k,v in next,customEnv do
|
||||
modeEnv[k]=v
|
||||
end
|
||||
if preBag[1]then
|
||||
modeEnv.bag=preBag
|
||||
if BAG[1]then
|
||||
modeEnv.bag=BAG
|
||||
else
|
||||
modeEnv.bag=nil
|
||||
end
|
||||
if preMission[1]then
|
||||
modeEnv.mission=preMission
|
||||
if MISSION[1]then
|
||||
modeEnv.mission=MISSION
|
||||
else
|
||||
modeEnv.mission=nil
|
||||
end
|
||||
@@ -29,24 +29,24 @@ return{
|
||||
PLY.newAIPlayer(2,965,360,.5,AITemplate("CC",2*L-11,int(L*.5-1.5),modeEnv.hold,4000*L))
|
||||
end
|
||||
end
|
||||
preField.h=20
|
||||
FIELD.h=20
|
||||
repeat
|
||||
for i=1,10 do
|
||||
if preField[preField.h][i]>0 then
|
||||
if FIELD[FIELD.h][i]>0 then
|
||||
goto L
|
||||
end
|
||||
end
|
||||
preField.h=preField.h-1
|
||||
until preField.h==0
|
||||
FIELD.h=FIELD.h-1
|
||||
until FIELD.h==0
|
||||
::L::
|
||||
for _,P in next,players.alive do
|
||||
for _,P in next,PLAYERS.alive do
|
||||
local t=P.showTime*3
|
||||
for y=1,preField.h do
|
||||
for y=1,FIELD.h do
|
||||
P.field[y]=freeRow.get(0)
|
||||
P.visTime[y]=freeRow.get(t)
|
||||
for x=1,10 do P.field[y][x]=preField[y][x]end
|
||||
for x=1,10 do P.field[y][x]=FIELD[y][x]end
|
||||
end
|
||||
P.garbageBeneath=preField.h
|
||||
P.garbageBeneath=FIELD.h
|
||||
end
|
||||
modeEnv.bg=customEnv.bg
|
||||
modeEnv.bgm=customEnv.bgm
|
||||
|
||||
@@ -4,7 +4,7 @@ local function puzzleCheck(P)
|
||||
for y=1,20 do
|
||||
local L=P.field[y]
|
||||
for x=1,10 do
|
||||
local a,b=preField[y][x],L and L[x]or 0
|
||||
local a,b=FIELD[y][x],L and L[x]or 0
|
||||
if a~=0 then
|
||||
if a==-1 then if b>0 then return end
|
||||
elseif a<12 then if a~=b then return end
|
||||
@@ -27,13 +27,13 @@ return{
|
||||
for k,v in next,customEnv do
|
||||
modeEnv[k]=v
|
||||
end
|
||||
if preBag[1]then
|
||||
modeEnv.bag=preBag
|
||||
if BAG[1]then
|
||||
modeEnv.bag=BAG
|
||||
else
|
||||
modeEnv.bag=nil
|
||||
end
|
||||
if preMission[1]then
|
||||
modeEnv.mission=preMission
|
||||
if MISSION[1]then
|
||||
modeEnv.mission=MISSION
|
||||
else
|
||||
modeEnv.mission=nil
|
||||
end
|
||||
@@ -47,15 +47,15 @@ return{
|
||||
PLY.newAIPlayer(2,965,360,.5,AITemplate("CC",2*L-11,int(L*.5-1.5),modeEnv.hold,4000*L))
|
||||
end
|
||||
end
|
||||
preField.h=20
|
||||
FIELD.h=20
|
||||
repeat
|
||||
for i=1,10 do
|
||||
if preField[preField.h][i]~=0 then
|
||||
if FIELD[FIELD.h][i]~=0 then
|
||||
goto L
|
||||
end
|
||||
end
|
||||
preField.h=preField.h-1
|
||||
until preField.h==0
|
||||
FIELD.h=FIELD.h-1
|
||||
until FIELD.h==0
|
||||
::L::
|
||||
modeEnv.bg=customEnv.bg
|
||||
modeEnv.bgm=customEnv.bgm
|
||||
@@ -67,8 +67,8 @@ return{
|
||||
mText(drawableText.line,69,360)
|
||||
if P.modeData.event==0 then
|
||||
local m=puzzleMark
|
||||
for y=1,preField.h do for x=1,10 do
|
||||
local T=preField[y][x]
|
||||
for y=1,FIELD.h do for x=1,10 do
|
||||
local T=FIELD[y][x]
|
||||
if T~=0 then
|
||||
gc.draw(m[T],150+30*x-30+dx,70+600-30*y+dy)
|
||||
end
|
||||
|
||||
@@ -13,7 +13,7 @@ return{
|
||||
},
|
||||
load=function()
|
||||
PLY.newPlayer(1,340,15)
|
||||
local P=players[1]
|
||||
local P=PLAYERS[1]
|
||||
for _=1,10 do
|
||||
P:garbageRise(13,1,P:RND(10))
|
||||
end
|
||||
|
||||
@@ -16,7 +16,7 @@ return{
|
||||
},
|
||||
load=function()
|
||||
PLY.newPlayer(1,340,15)
|
||||
local P=players[1]
|
||||
local P=PLAYERS[1]
|
||||
for _=1,10 do
|
||||
P:garbageRise(13,1,P:RND(10))
|
||||
end
|
||||
|
||||
@@ -16,7 +16,7 @@ return{
|
||||
},
|
||||
load=function()
|
||||
PLY.newPlayer(1,340,15)
|
||||
local P=players[1]
|
||||
local P=PLAYERS[1]
|
||||
for _=1,10 do
|
||||
P:garbageRise(13,1,P:RND(10))
|
||||
end
|
||||
|
||||
@@ -16,7 +16,7 @@ return{
|
||||
},
|
||||
load=function()
|
||||
PLY.newPlayer(1,340,15)
|
||||
local P=players[1]
|
||||
local P=PLAYERS[1]
|
||||
for _=1,10 do
|
||||
P:garbageRise(13,1,P:RND(10))
|
||||
end
|
||||
|
||||
@@ -37,7 +37,7 @@ return{
|
||||
},
|
||||
load=function()
|
||||
PLY.newPlayer(1,340,15)
|
||||
local P=players[1]
|
||||
local P=PLAYERS[1]
|
||||
for _=1,8 do
|
||||
P:garbageRise(13,1,P:RND(10))
|
||||
end
|
||||
|
||||
@@ -63,7 +63,7 @@ return{
|
||||
pauseLimit=true,
|
||||
load=function()
|
||||
PLY.newPlayer(1,340,15)
|
||||
newPC(players[1])
|
||||
newPC(PLAYERS[1])
|
||||
end,
|
||||
mesDisp=function(P)
|
||||
setFont(75)
|
||||
|
||||
@@ -54,7 +54,7 @@ return{
|
||||
pauseLimit=true,
|
||||
load=function()
|
||||
PLY.newPlayer(1,340,15)
|
||||
newPC(players[1])
|
||||
newPC(PLAYERS[1])
|
||||
end,
|
||||
mesDisp=function(P)
|
||||
setFont(75)
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
local function update_round(P)
|
||||
if #players.alive>1 then
|
||||
if #PLAYERS.alive>1 then
|
||||
P.control=false
|
||||
local ID=P.id
|
||||
repeat
|
||||
ID=ID+1
|
||||
if not players[ID]then ID=1 end
|
||||
until players[ID].alive or ID==P.id
|
||||
players[ID].control=true
|
||||
if not PLAYERS[ID]then ID=1 end
|
||||
until PLAYERS[ID].alive or ID==P.id
|
||||
PLAYERS[ID].control=true
|
||||
end
|
||||
end
|
||||
|
||||
@@ -21,7 +21,7 @@ return{
|
||||
load=function()
|
||||
PLY.newPlayer(1,340,15)
|
||||
PLY.newAIPlayer(2,965,360,.5,AITemplate("CC",10,1,true,10000))
|
||||
game.garbageSpeed=1e99
|
||||
GAME.garbageSpeed=1e99
|
||||
end,
|
||||
score=function(P)return{P.stat.piece,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Pieces "..toTime(D[2])end,
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
local function update_round(P)
|
||||
if #players.alive>1 then
|
||||
if #PLAYERS.alive>1 then
|
||||
P.control=false
|
||||
local ID=P.id
|
||||
repeat
|
||||
ID=ID+1
|
||||
if not players[ID]then ID=1 end
|
||||
until players[ID].alive or ID==P.id
|
||||
players[ID].control=true
|
||||
if not PLAYERS[ID]then ID=1 end
|
||||
until PLAYERS[ID].alive or ID==P.id
|
||||
PLAYERS[ID].control=true
|
||||
end
|
||||
end
|
||||
|
||||
@@ -21,7 +21,7 @@ return{
|
||||
load=function()
|
||||
PLY.newPlayer(1,340,15)
|
||||
PLY.newAIPlayer(2,965,360,.5,AITemplate("CC",10,1,true,13000))
|
||||
game.garbageSpeed=1e99
|
||||
GAME.garbageSpeed=1e99
|
||||
end,
|
||||
score=function(P)return{P.stat.piece,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Pieces "..toTime(D[2])end,
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
local function update_round(P)
|
||||
if #players.alive>1 then
|
||||
if #PLAYERS.alive>1 then
|
||||
P.control=false
|
||||
local ID=P.id
|
||||
repeat
|
||||
ID=ID+1
|
||||
if not players[ID]then ID=1 end
|
||||
until players[ID].alive or ID==P.id
|
||||
players[ID].control=true
|
||||
if not PLAYERS[ID]then ID=1 end
|
||||
until PLAYERS[ID].alive or ID==P.id
|
||||
PLAYERS[ID].control=true
|
||||
end
|
||||
end
|
||||
|
||||
@@ -21,7 +21,7 @@ return{
|
||||
load=function()
|
||||
PLY.newPlayer(1,340,15)
|
||||
PLY.newAIPlayer(2,965,360,.5,AITemplate("CC",10,2,true,16000))
|
||||
game.garbageSpeed=1e99
|
||||
GAME.garbageSpeed=1e99
|
||||
end,
|
||||
score=function(P)return{P.stat.piece,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Pieces "..toTime(D[2])end,
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
local function update_round(P)
|
||||
if #players.alive>1 then
|
||||
if #PLAYERS.alive>1 then
|
||||
P.control=false
|
||||
local ID=P.id
|
||||
repeat
|
||||
ID=ID+1
|
||||
if not players[ID]then ID=1 end
|
||||
until players[ID].alive or ID==P.id
|
||||
players[ID].control=true
|
||||
if not PLAYERS[ID]then ID=1 end
|
||||
until PLAYERS[ID].alive or ID==P.id
|
||||
PLAYERS[ID].control=true
|
||||
end
|
||||
end
|
||||
|
||||
@@ -21,7 +21,7 @@ return{
|
||||
load=function()
|
||||
PLY.newPlayer(1,340,15)
|
||||
PLY.newAIPlayer(2,965,360,.5,AITemplate("CC",10,3,true,26000))
|
||||
game.garbageSpeed=1e99
|
||||
GAME.garbageSpeed=1e99
|
||||
end,
|
||||
score=function(P)return{P.stat.piece,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Pieces "..toTime(D[2])end,
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
local function update_round(P)
|
||||
if #players.alive>1 then
|
||||
if #PLAYERS.alive>1 then
|
||||
P.control=false
|
||||
local ID=P.id
|
||||
repeat
|
||||
ID=ID+1
|
||||
if not players[ID]then ID=1 end
|
||||
until players[ID].alive or ID==P.id
|
||||
players[ID].control=true
|
||||
if not PLAYERS[ID]then ID=1 end
|
||||
until PLAYERS[ID].alive or ID==P.id
|
||||
PLAYERS[ID].control=true
|
||||
end
|
||||
end
|
||||
|
||||
@@ -21,7 +21,7 @@ return{
|
||||
load=function()
|
||||
PLY.newPlayer(1,340,15)
|
||||
PLY.newAIPlayer(2,965,360,.5,AITemplate("CC",10,3,true,40000))
|
||||
game.garbageSpeed=1e99
|
||||
GAME.garbageSpeed=1e99
|
||||
end,
|
||||
score=function(P)return{P.stat.piece,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Pieces "..toTime(D[2])end,
|
||||
|
||||
@@ -2,7 +2,7 @@ local gc=love.graphics
|
||||
local int,rnd=math.floor,math.random
|
||||
local powerUp={[0]="000%UP","025%UP","050%UP","075%UP","100%UP",}
|
||||
local function selectTarget(P)
|
||||
if setting.swap then
|
||||
if SETTING.swap then
|
||||
for i=1,#P.keyPressing do
|
||||
if P.keyPressing[i]then
|
||||
P.keyPressing[i]=false
|
||||
@@ -58,7 +58,7 @@ return{
|
||||
end,
|
||||
mesDisp=function(P)
|
||||
setFont(35)
|
||||
mStr(#players.alive.."/49",69,245)
|
||||
mStr(#PLAYERS.alive.."/49",69,245)
|
||||
mStr(P.modeData.point,80,285)
|
||||
gc.draw(drawableText.ko,23,295)
|
||||
setFont(20)
|
||||
|
||||
@@ -2,7 +2,7 @@ local gc=love.graphics
|
||||
local int,rnd=math.floor,math.random
|
||||
local powerUp={[0]="000%UP","025%UP","050%UP","075%UP","100%UP",}
|
||||
local function selectTarget(P)
|
||||
if setting.swap then
|
||||
if SETTING.swap then
|
||||
for i=1,#P.keyPressing do
|
||||
if P.keyPressing[i]then
|
||||
P.keyPressing[i]=false
|
||||
@@ -58,7 +58,7 @@ return{
|
||||
end,
|
||||
mesDisp=function(P)
|
||||
setFont(35)
|
||||
mStr(#players.alive.."/49",69,245)
|
||||
mStr(#PLAYERS.alive.."/49",69,245)
|
||||
mStr(P.modeData.point,80,285)
|
||||
gc.draw(drawableText.ko,23,295)
|
||||
setFont(20)
|
||||
|
||||
@@ -2,7 +2,7 @@ local gc=love.graphics
|
||||
local int,rnd=math.floor,math.random
|
||||
local powerUp={[0]="000%UP","025%UP","050%UP","075%UP","100%UP",}
|
||||
local function selectTarget(P)
|
||||
if setting.swap then
|
||||
if SETTING.swap then
|
||||
for i=1,#P.keyPressing do
|
||||
if P.keyPressing[i]then
|
||||
P.keyPressing[i]=false
|
||||
@@ -58,7 +58,7 @@ return{
|
||||
end,
|
||||
mesDisp=function(P)
|
||||
setFont(35)
|
||||
mStr(#players.alive.."/49",69,245)
|
||||
mStr(#PLAYERS.alive.."/49",69,245)
|
||||
mStr(P.modeData.point,80,285)
|
||||
gc.draw(drawableText.ko,23,295)
|
||||
setFont(20)
|
||||
|
||||
@@ -2,7 +2,7 @@ local gc=love.graphics
|
||||
local int,rnd=math.floor,math.random
|
||||
local powerUp={[0]="000%UP","025%UP","050%UP","075%UP","100%UP",}
|
||||
local function selectTarget(P)
|
||||
if setting.swap then
|
||||
if SETTING.swap then
|
||||
for i=1,#P.keyPressing do
|
||||
if P.keyPressing[i]then
|
||||
P.keyPressing[i]=false
|
||||
@@ -58,7 +58,7 @@ return{
|
||||
end,
|
||||
mesDisp=function(P)
|
||||
setFont(35)
|
||||
mStr(#players.alive.."/99",69,245)
|
||||
mStr(#PLAYERS.alive.."/99",69,245)
|
||||
mStr(P.modeData.point,80,285)
|
||||
gc.draw(drawableText.ko,23,295)
|
||||
setFont(20)
|
||||
|
||||
@@ -2,7 +2,7 @@ local gc=love.graphics
|
||||
local int,rnd=math.floor,math.random
|
||||
local powerUp={[0]="000%UP","025%UP","050%UP","075%UP","100%UP",}
|
||||
local function selectTarget(P)
|
||||
if setting.swap then
|
||||
if SETTING.swap then
|
||||
for i=1,#P.keyPressing do
|
||||
if P.keyPressing[i]then
|
||||
P.keyPressing[i]=false
|
||||
@@ -58,7 +58,7 @@ return{
|
||||
end,
|
||||
mesDisp=function(P)
|
||||
setFont(35)
|
||||
mStr(#players.alive.."/99",69,245)
|
||||
mStr(#PLAYERS.alive.."/99",69,245)
|
||||
mStr(P.modeData.point,80,285)
|
||||
gc.draw(drawableText.ko,23,295)
|
||||
setFont(20)
|
||||
|
||||
@@ -2,7 +2,7 @@ local gc=love.graphics
|
||||
local int,rnd=math.floor,math.random
|
||||
local powerUp={[0]="000%UP","025%UP","050%UP","075%UP","100%UP",}
|
||||
local function selectTarget(P)
|
||||
if setting.swap then
|
||||
if SETTING.swap then
|
||||
for i=1,#P.keyPressing do
|
||||
if P.keyPressing[i]then
|
||||
P.keyPressing[i]=false
|
||||
@@ -58,7 +58,7 @@ return{
|
||||
end,
|
||||
mesDisp=function(P)
|
||||
setFont(35)
|
||||
mStr(#players.alive.."/99",69,245)
|
||||
mStr(#PLAYERS.alive.."/99",69,245)
|
||||
mStr(P.modeData.point,80,285)
|
||||
gc.draw(drawableText.ko,23,295)
|
||||
setFont(20)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
setting={
|
||||
SETTING={
|
||||
--Game
|
||||
das=10,arr=2,
|
||||
sddas=0,sdarr=2,
|
||||
@@ -57,10 +57,10 @@ setting={
|
||||
VKAlpha=.3,
|
||||
}
|
||||
for i=1,25 do
|
||||
setting.face[i]=0
|
||||
SETTING.face[i]=0
|
||||
end
|
||||
|
||||
stat={
|
||||
STAT={
|
||||
version=gameVersion,
|
||||
run=0,game=0,time=0,
|
||||
key=0,rotate=0,hold=0,
|
||||
@@ -73,8 +73,8 @@ stat={
|
||||
lastPlay="sprint_10",--Last played mode ID
|
||||
}
|
||||
for i=1,25 do
|
||||
stat.clear[i]={0,0,0,0,0}
|
||||
stat.spin[i]={0,0,0,0,0,0}
|
||||
STAT.clear[i]={0,0,0,0,0}
|
||||
STAT.spin[i]={0,0,0,0,0,0}
|
||||
end
|
||||
|
||||
keyMap={
|
||||
|
||||
@@ -17,17 +17,17 @@ local default_setting={
|
||||
local function copyGameSetting()
|
||||
local S={face={}}
|
||||
for _,v in next,default_setting do
|
||||
S[v]=setting[v]
|
||||
S[v]=SETTING[v]
|
||||
end
|
||||
for i=1,25 do
|
||||
S.face[i]=setting.face[i]
|
||||
S.face[i]=SETTING.face[i]
|
||||
end
|
||||
return S
|
||||
end
|
||||
|
||||
function destroyPlayers()
|
||||
for i=#players,1,-1 do
|
||||
local P=players[i]
|
||||
for i=#PLAYERS,1,-1 do
|
||||
local P=PLAYERS[i]
|
||||
if P.canvas then P.canvas:release()end
|
||||
while P.field[1]do
|
||||
freeRow.discard(rem(P.field))
|
||||
@@ -39,10 +39,10 @@ function destroyPlayers()
|
||||
CC.destroy(P.AI_bot)
|
||||
P.AI_mode=nil
|
||||
end
|
||||
players[i]=nil
|
||||
PLAYERS[i]=nil
|
||||
end
|
||||
for i=#players.alive,1,-1 do
|
||||
players.alive[i]=nil
|
||||
for i=#PLAYERS.alive,1,-1 do
|
||||
PLAYERS.alive[i]=nil
|
||||
end
|
||||
collectgarbage()
|
||||
end
|
||||
@@ -89,13 +89,13 @@ end
|
||||
Example: "abcdefg" is [SZJLTOI], "a^aDb)" is [Z*63,Z*37,S*10]
|
||||
]]
|
||||
function copySequence()
|
||||
local preBag=preBag
|
||||
local BAG=BAG
|
||||
local str=""
|
||||
|
||||
local count=1
|
||||
for i=1,#preBag+1 do
|
||||
if preBag[i+1]~=preBag[i]or count==64 then
|
||||
str=str..char(96+preBag[i])
|
||||
for i=1,#BAG+1 do
|
||||
if BAG[i+1]~=BAG[i]or count==64 then
|
||||
str=str..char(96+BAG[i])
|
||||
if count>1 then
|
||||
str=str..char(32+count)
|
||||
count=1
|
||||
@@ -136,7 +136,7 @@ function pasteSequence(str)
|
||||
ins(bag,reg)
|
||||
end
|
||||
|
||||
preBag=bag
|
||||
BAG=bag
|
||||
sceneTemp.cur=#bag
|
||||
return true
|
||||
end
|
||||
@@ -147,7 +147,7 @@ function copyBoard()
|
||||
|
||||
for y=20,1,-1 do
|
||||
for x=1,10 do
|
||||
if preField[y][x]~=0 then
|
||||
if FIELD[y][x]~=0 then
|
||||
H=y
|
||||
goto topFound
|
||||
end
|
||||
@@ -158,7 +158,7 @@ function copyBoard()
|
||||
--Encode field
|
||||
for y=1,H do
|
||||
local S=""
|
||||
local L=preField[y]
|
||||
local L=FIELD[y]
|
||||
for x=1,10 do
|
||||
S=S..char(L[x]+1)
|
||||
end
|
||||
@@ -193,7 +193,7 @@ function pasteBoard(str)
|
||||
if __>17 then return end--Illegal blockid
|
||||
_=int(_/32)--Mode id
|
||||
|
||||
preField[fY][fX]=__
|
||||
FIELD[fY][fX]=__
|
||||
if fX<10 then
|
||||
fX=fX+1
|
||||
else
|
||||
@@ -206,7 +206,7 @@ function pasteBoard(str)
|
||||
|
||||
for y=fY,20 do
|
||||
for x=1,10 do
|
||||
preField[y][x]=0
|
||||
FIELD[y][x]=0
|
||||
end
|
||||
end
|
||||
|
||||
@@ -231,13 +231,13 @@ end
|
||||
]]
|
||||
function copyMission()
|
||||
local _
|
||||
local preMission=preMission
|
||||
local MISSION=MISSION
|
||||
local str=""
|
||||
|
||||
local count=1
|
||||
for i=1,#preMission+1 do
|
||||
if preMission[i+1]~=preMission[i]or count==13 then
|
||||
_=33+preMission[i]
|
||||
for i=1,#MISSION+1 do
|
||||
if MISSION[i+1]~=MISSION[i]or count==13 then
|
||||
_=33+MISSION[i]
|
||||
str=str..char(_)
|
||||
if count>1 then
|
||||
str=str..char(113+count)
|
||||
@@ -282,7 +282,7 @@ function pasteMission(str)
|
||||
ins(mission,reg)
|
||||
end
|
||||
|
||||
preMission=mission
|
||||
MISSION=mission
|
||||
sceneTemp.cur=#mission
|
||||
return true
|
||||
end
|
||||
@@ -302,84 +302,84 @@ function mergeStat(stat,delta)
|
||||
end
|
||||
|
||||
function randomTarget(P)--Return a random opponent for P
|
||||
if #players.alive>1 then
|
||||
if #PLAYERS.alive>1 then
|
||||
local R
|
||||
repeat
|
||||
R=players.alive[rnd(#players.alive)]
|
||||
R=PLAYERS.alive[rnd(#PLAYERS.alive)]
|
||||
until R~=P
|
||||
return R
|
||||
end
|
||||
end
|
||||
function freshMostDangerous()
|
||||
game.mostDangerous,game.secDangerous=nil
|
||||
GAME.mostDangerous,GAME.secDangerous=nil
|
||||
local m,m2=0,0
|
||||
for i=1,#players.alive do
|
||||
local h=#players.alive[i].field
|
||||
for i=1,#PLAYERS.alive do
|
||||
local h=#PLAYERS.alive[i].field
|
||||
if h>=m then
|
||||
game.mostDangerous,game.secDangerous=players.alive[i],game.mostDangerous
|
||||
GAME.mostDangerous,GAME.secDangerous=PLAYERS.alive[i],GAME.mostDangerous
|
||||
m,m2=h,m
|
||||
elseif h>=m2 then
|
||||
game.secDangerous=players.alive[i]
|
||||
GAME.secDangerous=PLAYERS.alive[i]
|
||||
m2=h
|
||||
end
|
||||
end
|
||||
|
||||
for i=1,#players.alive do
|
||||
if players.alive[i].atkMode==3 then
|
||||
players.alive[i]:freshTarget()
|
||||
for i=1,#PLAYERS.alive do
|
||||
if PLAYERS.alive[i].atkMode==3 then
|
||||
PLAYERS.alive[i]:freshTarget()
|
||||
end
|
||||
end
|
||||
end
|
||||
function freshMostBadge()
|
||||
game.mostBadge,game.secBadge=nil
|
||||
GAME.mostBadge,GAME.secBadge=nil
|
||||
local m,m2=0,0
|
||||
for i=1,#players.alive do
|
||||
local P=players.alive[i]
|
||||
for i=1,#PLAYERS.alive do
|
||||
local P=PLAYERS.alive[i]
|
||||
local b=P.badge
|
||||
if b>=m then
|
||||
game.mostBadge,game.secBadge=P,game.mostBadge
|
||||
GAME.mostBadge,GAME.secBadge=P,GAME.mostBadge
|
||||
m,m2=b,m
|
||||
elseif b>=m2 then
|
||||
game.secBadge=P
|
||||
GAME.secBadge=P
|
||||
m2=b
|
||||
end
|
||||
end
|
||||
|
||||
for i=1,#players.alive do
|
||||
if players.alive[i].atkMode==4 then
|
||||
players.alive[i]:freshTarget()
|
||||
for i=1,#PLAYERS.alive do
|
||||
if PLAYERS.alive[i].atkMode==4 then
|
||||
PLAYERS.alive[i]:freshTarget()
|
||||
end
|
||||
end
|
||||
end
|
||||
function royaleLevelup()
|
||||
game.stage=game.stage+1
|
||||
GAME.stage=GAME.stage+1
|
||||
local spd
|
||||
TEXT.show(text.royale_remain(#players.alive),640,200,40,"beat",.3)
|
||||
if game.stage==2 then
|
||||
TEXT.show(text.royale_remain(#PLAYERS.alive),640,200,40,"beat",.3)
|
||||
if GAME.stage==2 then
|
||||
spd=30
|
||||
elseif game.stage==3 then
|
||||
elseif GAME.stage==3 then
|
||||
spd=15
|
||||
game.garbageSpeed=.6
|
||||
if players[1].alive then BGM.play("cruelty")end
|
||||
elseif game.stage==4 then
|
||||
GAME.garbageSpeed=.6
|
||||
if PLAYERS[1].alive then BGM.play("cruelty")end
|
||||
elseif GAME.stage==4 then
|
||||
spd=10
|
||||
local _=players.alive
|
||||
local _=PLAYERS.alive
|
||||
for i=1,#_ do
|
||||
_[i].gameEnv.pushSpeed=3
|
||||
end
|
||||
elseif game.stage==5 then
|
||||
elseif GAME.stage==5 then
|
||||
spd=5
|
||||
game.garbageSpeed=1
|
||||
elseif game.stage==6 then
|
||||
GAME.garbageSpeed=1
|
||||
elseif GAME.stage==6 then
|
||||
spd=3
|
||||
if players[1].alive then BGM.play("final")end
|
||||
if PLAYERS[1].alive then BGM.play("final")end
|
||||
end
|
||||
for i=1,#players.alive do
|
||||
players.alive[i].gameEnv.drop=spd
|
||||
for i=1,#PLAYERS.alive do
|
||||
PLAYERS.alive[i].gameEnv.drop=spd
|
||||
end
|
||||
if curMode.lv==3 then
|
||||
for i=1,#players.alive do
|
||||
local P=players.alive[i]
|
||||
if CURMODE.lv==3 then
|
||||
for i=1,#PLAYERS.alive do
|
||||
local P=PLAYERS.alive[i]
|
||||
P.gameEnv.drop=int(P.gameEnv.drop*.3)
|
||||
if P.gameEnv.drop==0 then
|
||||
P.curY=P.imgY
|
||||
@@ -393,15 +393,15 @@ end
|
||||
function pauseGame()
|
||||
if not SCN.swapping then
|
||||
restartCount=0--Avoid strange darkness
|
||||
if not game.result then
|
||||
game.pauseCount=game.pauseCount+1
|
||||
if not GAME.result then
|
||||
GAME.pauseCount=GAME.pauseCount+1
|
||||
end
|
||||
if not game.replaying then
|
||||
for i=1,#players do
|
||||
local l=players[i].keyPressing
|
||||
if not GAME.replaying then
|
||||
for i=1,#PLAYERS do
|
||||
local l=PLAYERS[i].keyPressing
|
||||
for j=1,#l do
|
||||
if l[j]then
|
||||
players[i]:releaseKey(j)
|
||||
PLAYERS[i]:releaseKey(j)
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -413,9 +413,8 @@ function resumeGame()
|
||||
SCN.swapTo("play","none")
|
||||
end
|
||||
function loadGame(M,ifQuickPlay)
|
||||
stat.lastPlay=M
|
||||
curMode=Modes[M]
|
||||
local lang=setting.lang
|
||||
STAT.lastPlay=M
|
||||
CURMODE=Modes[M]
|
||||
drawableText.modeName:set(text.modes[M][1])
|
||||
drawableText.levelName:set(text.modes[M][2])
|
||||
needResetGameData=true
|
||||
@@ -423,31 +422,31 @@ function loadGame(M,ifQuickPlay)
|
||||
SFX.play("enter")
|
||||
end
|
||||
function resetGameData()
|
||||
if players[1]and not game.replaying then
|
||||
mergeStat(stat,players[1].stat)
|
||||
if PLAYERS[1]and not GAME.replaying then
|
||||
mergeStat(STAT,PLAYERS[1].stat)
|
||||
end
|
||||
|
||||
game.frame=150-setting.reTime*15
|
||||
game.result=false
|
||||
game.pauseTime=0
|
||||
game.pauseCount=0
|
||||
game.garbageSpeed=1
|
||||
game.warnLVL0=0
|
||||
game.warnLVL=0
|
||||
game.recording=true
|
||||
game.replaying=false
|
||||
game.setting=copyGameSetting()
|
||||
game.rec={}
|
||||
GAME.frame=150-SETTING.reTime*15
|
||||
GAME.result=false
|
||||
GAME.pauseTime=0
|
||||
GAME.pauseCount=0
|
||||
GAME.garbageSpeed=1
|
||||
GAME.warnLVL0=0
|
||||
GAME.warnLVL=0
|
||||
GAME.recording=true
|
||||
GAME.replaying=false
|
||||
GAME.setting=copyGameSetting()
|
||||
GAME.rec={}
|
||||
math.randomseed(tm.getTime())
|
||||
game.seed=rnd(261046101471026)
|
||||
GAME.seed=rnd(261046101471026)
|
||||
|
||||
destroyPlayers()
|
||||
modeEnv=curMode.env
|
||||
modeEnv=CURMODE.env
|
||||
restoreVirtualKey()
|
||||
curMode.load()
|
||||
CURMODE.load()
|
||||
if modeEnv.task then
|
||||
for i=1,#players do
|
||||
players[i]:newTask(modeEnv.task)
|
||||
for i=1,#PLAYERS do
|
||||
PLAYERS[i]:newTask(modeEnv.task)
|
||||
end
|
||||
end
|
||||
BG.set(modeEnv.bg)
|
||||
@@ -455,55 +454,55 @@ function resetGameData()
|
||||
|
||||
TEXT.clear()
|
||||
if modeEnv.royaleMode then
|
||||
for i=1,#players do
|
||||
players[i]:changeAtk(randomTarget(players[i]))
|
||||
for i=1,#PLAYERS do
|
||||
PLAYERS[i]:changeAtk(randomTarget(PLAYERS[i]))
|
||||
end
|
||||
game.stage=nil
|
||||
game.mostBadge=nil
|
||||
game.secBadge=nil
|
||||
game.mostDangerous=nil
|
||||
game.secDangerous=nil
|
||||
game.stage=1
|
||||
game.garbageSpeed=.3
|
||||
GAME.stage=nil
|
||||
GAME.mostBadge=nil
|
||||
GAME.secBadge=nil
|
||||
GAME.mostDangerous=nil
|
||||
GAME.secDangerous=nil
|
||||
GAME.stage=1
|
||||
GAME.garbageSpeed=.3
|
||||
end
|
||||
stat.game=stat.game+1
|
||||
freeRow.reset(30*#players)
|
||||
STAT.game=STAT.game+1
|
||||
freeRow.reset(30*#PLAYERS)
|
||||
SFX.play("ready")
|
||||
collectgarbage()
|
||||
end
|
||||
function resetPartGameData(replaying)
|
||||
TASK.removeTask_code(TICK.autoPause)
|
||||
if players[1]and not game.replaying then
|
||||
mergeStat(stat,players[1].stat)
|
||||
if PLAYERS[1]and not GAME.replaying then
|
||||
mergeStat(STAT,PLAYERS[1].stat)
|
||||
end
|
||||
|
||||
game.result=false
|
||||
game.garbageSpeed=1
|
||||
game.warnLVL0=0
|
||||
game.warnLVL=0
|
||||
GAME.result=false
|
||||
GAME.garbageSpeed=1
|
||||
GAME.warnLVL0=0
|
||||
GAME.warnLVL=0
|
||||
if replaying then
|
||||
game.frame=0
|
||||
game.recording=false
|
||||
game.replaying=1
|
||||
GAME.frame=0
|
||||
GAME.recording=false
|
||||
GAME.replaying=1
|
||||
else
|
||||
game.frame=150-setting.reTime*15
|
||||
game.pauseTime=0
|
||||
game.pauseCount=0
|
||||
game.recording=true
|
||||
game.replaying=false
|
||||
game.setting=copyGameSetting()
|
||||
game.rec={}
|
||||
GAME.frame=150-SETTING.reTime*15
|
||||
GAME.pauseTime=0
|
||||
GAME.pauseCount=0
|
||||
GAME.recording=true
|
||||
GAME.replaying=false
|
||||
GAME.setting=copyGameSetting()
|
||||
GAME.rec={}
|
||||
math.randomseed(tm.getTime())
|
||||
game.seed=rnd(1046101471,2662622626)
|
||||
GAME.seed=rnd(1046101471,2662622626)
|
||||
end
|
||||
|
||||
destroyPlayers()
|
||||
modeEnv=curMode.env
|
||||
modeEnv=CURMODE.env
|
||||
restoreVirtualKey()
|
||||
curMode.load()
|
||||
CURMODE.load()
|
||||
if modeEnv.task then
|
||||
for i=1,#players do
|
||||
players[i]:newTask(modeEnv.task)
|
||||
for i=1,#PLAYERS do
|
||||
PLAYERS[i]:newTask(modeEnv.task)
|
||||
end
|
||||
end
|
||||
BG.set(modeEnv.bg)
|
||||
@@ -511,23 +510,23 @@ function resetPartGameData(replaying)
|
||||
|
||||
TEXT.clear()
|
||||
if modeEnv.royaleMode then
|
||||
for i=1,#players do
|
||||
players[i]:changeAtk(randomTarget(players[i]))
|
||||
for i=1,#PLAYERS do
|
||||
PLAYERS[i]:changeAtk(randomTarget(PLAYERS[i]))
|
||||
end
|
||||
game.stage=nil
|
||||
game.mostBadge=nil
|
||||
game.secBadge=nil
|
||||
game.mostDangerous=nil
|
||||
game.secDangerous=nil
|
||||
game.stage=1
|
||||
game.garbageSpeed=.3
|
||||
GAME.stage=nil
|
||||
GAME.mostBadge=nil
|
||||
GAME.secBadge=nil
|
||||
GAME.mostDangerous=nil
|
||||
GAME.secDangerous=nil
|
||||
GAME.stage=1
|
||||
GAME.garbageSpeed=.3
|
||||
end
|
||||
collectgarbage()
|
||||
end
|
||||
function gameStart()
|
||||
SFX.play("start")
|
||||
for P=1,#players do
|
||||
P=players[P]
|
||||
for P=1,#PLAYERS do
|
||||
P=PLAYERS[P]
|
||||
P.control=true
|
||||
P.timing=true
|
||||
P:popNext()
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
local L
|
||||
if setting.lang==1 or setting.lang==2 then
|
||||
if SETTING.lang==1 or SETTING.lang==2 then
|
||||
L={
|
||||
'注意到"旋转"到底对方块做了些什么吗?',
|
||||
"(RUR'U')R'FR2U'R'U'(RUR'F')",
|
||||
@@ -159,7 +159,7 @@ if setting.lang==1 or setting.lang==2 then
|
||||
"ZS JL T O I",
|
||||
-- "Z酱 可爱!",
|
||||
}
|
||||
elseif setting.lang==3 then
|
||||
elseif SETTING.lang==3 then
|
||||
L={
|
||||
'Free block game with Battle Royale mode!',
|
||||
'Have you noticed what "rotating" does do to the block?',
|
||||
@@ -228,14 +228,14 @@ elseif setting.lang==3 then
|
||||
"You can set orientation for each block",
|
||||
"ZS JL T O I",
|
||||
}
|
||||
elseif setting.lang==4 then
|
||||
elseif SETTING.lang==4 then
|
||||
L={'!','@','#','$','%','^','&','*','(',')','-','=','_','+','[',']','{','}','\\','|',';',':','\'','"',',','<','.','>','/','?'}
|
||||
local s=""
|
||||
for i=1,math.random(16,26)do
|
||||
s=s..L[math.random(#L)]
|
||||
end
|
||||
return s
|
||||
elseif setting.lang==5 then
|
||||
elseif SETTING.lang==5 then
|
||||
local R=math.random()
|
||||
if R<.05 then
|
||||
local time={
|
||||
@@ -268,14 +268,14 @@ elseif setting.lang==5 then
|
||||
elseif R<.1 then
|
||||
local int=math.floor
|
||||
L={
|
||||
"平均"..int(stat.row/stat.time*60).."LPM,那可真强呢",
|
||||
"平均"..int(stat.atk/stat.time*60).."APM,好厉害哦",
|
||||
"平均"..(int(stat.atk/stat.row*10)*.1).."效,你看这数据能看么",
|
||||
"平均"..(int(stat.atk/stat.row*10)*.1).."效,我就不说你多菜了",
|
||||
"才玩了"..stat.game.."把,跟几十万局的没法比",
|
||||
"才玩了"..stat.game.."把,玩了不下几万局的人可不在少数",
|
||||
"才玩了"..int(stat.time/3600).."小时,人家总时长是你不知道多少倍",
|
||||
"才玩了"..int(stat.time/3600).."小时,别人总时长跟你都不在一个数量级",
|
||||
"平均"..int(STAT.row/STAT.time*60).."LPM,那可真强呢",
|
||||
"平均"..int(STAT.atk/STAT.time*60).."APM,好厉害哦",
|
||||
"平均"..(int(STAT.atk/STAT.row*10)*.1).."效,你看这数据能看么",
|
||||
"平均"..(int(STAT.atk/STAT.row*10)*.1).."效,我就不说你多菜了",
|
||||
"才玩了"..STAT.game.."把,跟几十万局的没法比",
|
||||
"才玩了"..STAT.game.."把,玩了不下几万局的人可不在少数",
|
||||
"才玩了"..int(STAT.time/3600).."小时,人家总时长是你不知道多少倍",
|
||||
"才玩了"..int(STAT.time/3600).."小时,别人总时长跟你都不在一个数量级",
|
||||
}
|
||||
else
|
||||
L={
|
||||
|
||||
122
parts/player.lua
122
parts/player.lua
@@ -5,7 +5,7 @@ local int,ceil,rnd=math.floor,math.ceil,math.random
|
||||
local max,min,abs,sin,cos,log=math.max,math.min,math.abs,math.sin,math.cos,math.log
|
||||
local ins,rem=table.insert,table.remove
|
||||
local format=string.format
|
||||
local scr=scr
|
||||
local SCR=SCR
|
||||
local setFont=setFont
|
||||
|
||||
--------------------------<Data>--------------------------
|
||||
@@ -74,7 +74,7 @@ local function updateLine(P,dt)--Attacks, line pushing, cam moving
|
||||
A.time=A.time+1
|
||||
if not A.sent then
|
||||
if A.countdown>0 then
|
||||
A.countdown=max(A.countdown-game.garbageSpeed,0)
|
||||
A.countdown=max(A.countdown-GAME.garbageSpeed,0)
|
||||
end
|
||||
else
|
||||
if A.time>20 then
|
||||
@@ -167,7 +167,7 @@ end
|
||||
local function Pupdate_alive(P,dt)
|
||||
if P.timing then P.stat.time=P.stat.time+dt end
|
||||
if P.keyRec then--Update speeds
|
||||
local _=game.frame
|
||||
local _=GAME.frame
|
||||
|
||||
local v=0
|
||||
for i=2,10 do v=v+i*(i-1)*7.2/(_-P.keyTime[i]+1)end
|
||||
@@ -428,7 +428,7 @@ end
|
||||
local function drawField(P)
|
||||
local V,F=P.visTime,P.field
|
||||
local start=int((P.fieldBeneath+P.fieldUp)/30+1)
|
||||
local rep=game.replaying
|
||||
local rep=GAME.replaying
|
||||
if P.falling==-1 then--Blocks only
|
||||
for j=start,min(start+21,#F)do
|
||||
for i=1,10 do
|
||||
@@ -608,7 +608,7 @@ local Pdraw_norm do
|
||||
--In-field things
|
||||
gc.push("transform")
|
||||
gc.translate(0,600+FBN+FUP)
|
||||
gc.setScissor(scr.x+(P.absFieldX+P.fieldOff.x)*scr.k,scr.y+(P.absFieldY+P.fieldOff.y)*scr.k,300*P.size*scr.k,610*P.size*scr.k)
|
||||
gc.setScissor(SCR.x+(P.absFieldX+P.fieldOff.x)*SCR.k,SCR.y+(P.absFieldY+P.fieldOff.y)*SCR.k,300*P.size*SCR.k,610*P.size*SCR.k)
|
||||
|
||||
--Draw dangerous area
|
||||
gc.setColor(1,0,0,.3)
|
||||
@@ -848,8 +848,8 @@ local Pdraw_norm do
|
||||
|
||||
--Other messages
|
||||
gc.setColor(1,1,1)
|
||||
if curMode.mesDisp then
|
||||
curMode.mesDisp(P)
|
||||
if CURMODE.mesDisp then
|
||||
CURMODE.mesDisp(P)
|
||||
end
|
||||
|
||||
--Missions
|
||||
@@ -882,8 +882,8 @@ local Pdraw_norm do
|
||||
|
||||
--Draw starting counter
|
||||
gc.setColor(1,1,1)
|
||||
if game.frame<180 then
|
||||
local count=179-game.frame
|
||||
if GAME.frame<180 then
|
||||
local count=179-GAME.frame
|
||||
gc.push("transform")
|
||||
gc.translate(305,290)
|
||||
setFont(95)
|
||||
@@ -1092,7 +1092,7 @@ local function pressKey(P,i)
|
||||
P.act[i](P)
|
||||
if P.control then
|
||||
if P.keyRec then
|
||||
ins(P.keyTime,1,game.frame)
|
||||
ins(P.keyTime,1,GAME.frame)
|
||||
P.keyTime[11]=nil
|
||||
end
|
||||
end
|
||||
@@ -1104,15 +1104,15 @@ local function releaseKey(P,i)
|
||||
end
|
||||
local function pressKey_Rec(P,i)
|
||||
if P.keyAvailable[i]then
|
||||
if game.recording then
|
||||
ins(game.rec,game.frame+1)
|
||||
ins(game.rec,i)
|
||||
if GAME.recording then
|
||||
ins(GAME.rec,GAME.frame+1)
|
||||
ins(GAME.rec,i)
|
||||
end
|
||||
P.keyPressing[i]=true
|
||||
P.act[i](P)
|
||||
if P.control then
|
||||
if P.keyRec then
|
||||
ins(P.keyTime,1,game.frame)
|
||||
ins(P.keyTime,1,GAME.frame)
|
||||
P.keyTime[11]=nil
|
||||
end
|
||||
end
|
||||
@@ -1120,9 +1120,9 @@ local function pressKey_Rec(P,i)
|
||||
end
|
||||
end
|
||||
local function releaseKey_Rec(P,i)
|
||||
if game.recording then
|
||||
ins(game.rec,game.frame+1)
|
||||
ins(game.rec,-i)
|
||||
if GAME.recording then
|
||||
ins(GAME.rec,GAME.frame+1)
|
||||
ins(GAME.rec,-i)
|
||||
end
|
||||
P.keyPressing[i]=false
|
||||
end
|
||||
@@ -1135,11 +1135,11 @@ local function loadGameEnv(P)--Load gameEnv
|
||||
if modeEnv[k]~=nil then
|
||||
v=modeEnv[k] --Mode setting
|
||||
-- DBP("mode-"..k..":"..tostring(v))
|
||||
elseif game.setting[k]~=nil then
|
||||
v=game.setting[k] --Game setting
|
||||
elseif GAME.setting[k]~=nil then
|
||||
v=GAME.setting[k] --Game setting
|
||||
-- DBP("game-"..k..":"..tostring(v))
|
||||
elseif setting[k]~=nil then
|
||||
v=setting[k] --Global setting
|
||||
elseif SETTING[k]~=nil then
|
||||
v=SETTING[k] --Global setting
|
||||
-- DBP("global-"..k..":"..tostring(v))
|
||||
-- else
|
||||
-- DBP("default-"..k..":"..tostring(v))
|
||||
@@ -1189,7 +1189,7 @@ local function applyGameEnv(P)--Finish gameEnv processing
|
||||
ENV.das=max(ENV.das,ENV.mindas)
|
||||
ENV.arr=max(ENV.arr,ENV.minarr)
|
||||
ENV.sdarr=max(ENV.sdarr,ENV.minsdarr)
|
||||
ENV.next=min(ENV.next,setting.maxNext)
|
||||
ENV.next=min(ENV.next,SETTING.maxNext)
|
||||
|
||||
if ENV.sequence~="bag"and ENV.sequence~="loop"then
|
||||
ENV.bagLine=false
|
||||
@@ -1355,12 +1355,12 @@ local function loadAI(P,AIdata)--Load AI params
|
||||
end
|
||||
local function newEmptyPlayer(id,x,y,size)
|
||||
local P={id=id}
|
||||
players[id]=P
|
||||
players.alive[id]=P
|
||||
PLAYERS[id]=P
|
||||
PLAYERS.alive[id]=P
|
||||
|
||||
--Inherit functions of player class
|
||||
for k,v in next,player do P[k]=v end
|
||||
if P.id==1 and game.recording then
|
||||
if P.id==1 and GAME.recording then
|
||||
P.pressKey=pressKey_Rec
|
||||
P.releaseKey=releaseKey_Rec
|
||||
else
|
||||
@@ -1387,7 +1387,7 @@ local function newEmptyPlayer(id,x,y,size)
|
||||
P.draw=Pdraw_norm
|
||||
P.bonus={}--Text objects
|
||||
end
|
||||
P.randGen=mt.newRandomGenerator(game.seed)
|
||||
P.randGen=mt.newRandomGenerator(GAME.seed)
|
||||
|
||||
P.small=false
|
||||
P.alive=true
|
||||
@@ -1581,7 +1581,7 @@ function player.createBeam(P,R,send,time,target,color,clear,combo)
|
||||
radius=radius*.4
|
||||
a=.35
|
||||
end
|
||||
sysFX.newAttack(x1,y1,x2,y2,radius*(setting.atkFX+3)*.12,corner,type==1 and"fill"or"line",r,g,b,a*(setting.atkFX+5)*.1)
|
||||
sysFX.newAttack(x1,y1,x2,y2,radius*(SETTING.atkFX+3)*.12,corner,type==1 and"fill"or"line",r,g,b,a*(SETTING.atkFX+5)*.1)
|
||||
end
|
||||
function player.newTask(P,code,data)
|
||||
local L=P.tasks
|
||||
@@ -1621,7 +1621,7 @@ function player.ckfull(P,i)
|
||||
return true
|
||||
end
|
||||
function player.attack(P,R,send,time,...)
|
||||
if setting.atkFX>0 then
|
||||
if SETTING.atkFX>0 then
|
||||
P:createBeam(R,send,time,...)
|
||||
end
|
||||
R.lastRecv=P
|
||||
@@ -1730,9 +1730,9 @@ function player.freshTarget(P)
|
||||
P:changeAtk(randomTarget(P))
|
||||
end
|
||||
elseif P.atkMode==2 then
|
||||
P:changeAtk(P~=game.mostBadge and game.mostBadge or game.secBadge or randomTarget(P))
|
||||
P:changeAtk(P~=GAME.mostBadge and GAME.mostBadge or GAME.secBadge or randomTarget(P))
|
||||
elseif P.atkMode==3 then
|
||||
P:changeAtk(P~=game.mostDangerous and game.mostDangerous or game.secDangerous or randomTarget(P))
|
||||
P:changeAtk(P~=GAME.mostDangerous and GAME.mostDangerous or GAME.secDangerous or randomTarget(P))
|
||||
elseif P.atkMode==4 then
|
||||
for i=1,#P.atker do
|
||||
if not P.atker[i].alive then
|
||||
@@ -1754,7 +1754,7 @@ function player.changeAtkMode(P,m)
|
||||
end
|
||||
end
|
||||
function player.changeAtk(P,R)
|
||||
-- if not P.human then R=players[1]end--1vALL mode?
|
||||
-- if not P.human then R=PLAYERS[1]end--1vALL mode?
|
||||
if P.atking then
|
||||
local K=P.atking.atker
|
||||
for i=1,#K do
|
||||
@@ -1905,7 +1905,7 @@ function player.resetBlock(P)
|
||||
|
||||
--Spawn SFX
|
||||
if P.sound and id<8 then
|
||||
SFX.fplay(spawnSFX_name[id],setting.spawn)
|
||||
SFX.fplay(spawnSFX_name[id],SETTING.spawn)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -2133,7 +2133,7 @@ do--player.drop(P)--Place piece
|
||||
function player.drop(P)
|
||||
local _
|
||||
local CHN=VOC.getFreeChannel()
|
||||
P.dropTime[11]=ins(P.dropTime,1,game.frame)--Update speed dial
|
||||
P.dropTime[11]=ins(P.dropTime,1,GAME.frame)--Update speed dial
|
||||
local ENV=P.gameEnv
|
||||
local STAT=P.stat
|
||||
P.waiting=ENV.wait
|
||||
@@ -2491,7 +2491,7 @@ do--player.drop(P)--Place piece
|
||||
P:freshTarget()
|
||||
T=P.atking
|
||||
end
|
||||
elseif #players.alive>1 then
|
||||
elseif #PLAYERS.alive>1 then
|
||||
T=randomTarget(P)
|
||||
end
|
||||
if T then
|
||||
@@ -2622,12 +2622,12 @@ end
|
||||
|
||||
--------------------------<Events>--------------------------
|
||||
local function gameOver()--Save record
|
||||
if game.replaying then return end
|
||||
if GAME.replaying then return end
|
||||
FILE.saveData()
|
||||
local M=curMode
|
||||
local M=CURMODE
|
||||
local R=M.getRank
|
||||
if R then
|
||||
local P=players[1]
|
||||
local P=PLAYERS[1]
|
||||
R=R(P)--New rank
|
||||
if R then
|
||||
local r=modeRanks[M.name]--Old rank
|
||||
@@ -2700,14 +2700,14 @@ function player.win(P,result)
|
||||
P:changeAtk()
|
||||
end
|
||||
if P.human then
|
||||
game.result=result or"win"
|
||||
GAME.result=result or"win"
|
||||
SFX.play("win")
|
||||
VOC.play("win")
|
||||
if modeEnv.royaleMode then
|
||||
BGM.play("8-bit happiness")
|
||||
end
|
||||
end
|
||||
if curMode.id=="custom_puzzle"then
|
||||
if CURMODE.id=="custom_puzzle"then
|
||||
P:showTextF(text.win,0,0,90,"beat",.4)
|
||||
else
|
||||
P:showTextF(text.win,0,0,90,"beat",.5,.2)
|
||||
@@ -2761,16 +2761,16 @@ function player.lose(P)
|
||||
return
|
||||
end
|
||||
P:die()
|
||||
for i=1,#players.alive do
|
||||
if players.alive[i]==P then
|
||||
rem(players.alive,i)
|
||||
for i=1,#PLAYERS.alive do
|
||||
if PLAYERS.alive[i]==P then
|
||||
rem(PLAYERS.alive,i)
|
||||
break
|
||||
end
|
||||
end
|
||||
P.result="K.O."
|
||||
if modeEnv.royaleMode then
|
||||
P:changeAtk()
|
||||
P.modeData.event=#players.alive+1
|
||||
P.modeData.event=#PLAYERS.alive+1
|
||||
P.strength=0
|
||||
if P.lastRecv then
|
||||
local A,i=P,0
|
||||
@@ -2799,7 +2799,7 @@ function player.lose(P)
|
||||
|
||||
freshMostBadge()
|
||||
freshMostDangerous()
|
||||
if #players.alive==royaleData.stage[game.stage]then
|
||||
if #PLAYERS.alive==royaleData.stage[GAME.stage]then
|
||||
royaleLevelup()
|
||||
end
|
||||
P:showTextF(P.modeData.event,0,120,60,"appear",.26,.9)
|
||||
@@ -2807,7 +2807,7 @@ function player.lose(P)
|
||||
P.gameEnv.keepVisible=P.gameEnv.visible~="show"
|
||||
P:showTextF(text.gameover,0,0,60,"appear",.26,.9)
|
||||
if P.human then
|
||||
game.result="gameover"
|
||||
GAME.result="gameover"
|
||||
SFX.play("fail")
|
||||
VOC.play("lose")
|
||||
if modeEnv.royaleMode then
|
||||
@@ -2818,7 +2818,7 @@ function player.lose(P)
|
||||
end
|
||||
end
|
||||
gameOver()
|
||||
P:newTask(#players>1 and TICK.lose or TICK.finish)
|
||||
P:newTask(#PLAYERS>1 and TICK.lose or TICK.finish)
|
||||
TASK.new(TICK.autoPause,{0})
|
||||
if MARKING then
|
||||
P:showTextF(text.marking,0,-226,25,"appear",.4,.0626)
|
||||
@@ -2826,8 +2826,8 @@ function player.lose(P)
|
||||
else
|
||||
P:newTask(TICK.lose)
|
||||
end
|
||||
if #players.alive==1 then
|
||||
players.alive[1]:win()
|
||||
if #PLAYERS.alive==1 then
|
||||
PLAYERS.alive[1]:win()
|
||||
end
|
||||
end
|
||||
|
||||
@@ -2971,7 +2971,7 @@ function player.act.func(P)
|
||||
P.gameEnv.Fkey(P)
|
||||
end
|
||||
function player.act.restart(P)
|
||||
if game.frame<240 or game.result then
|
||||
if GAME.frame<240 or GAME.result then
|
||||
resetPartGameData()
|
||||
else
|
||||
LOG.print(text.holdR,20,color.orange)
|
||||
@@ -3119,17 +3119,17 @@ function PLY.newDemoPlayer(id,x,y,size)
|
||||
das=10,arr=2,sddas=2,sdarr=2,
|
||||
swap=true,
|
||||
|
||||
ghost=setting.ghost,
|
||||
center=setting.center,
|
||||
smooth=setting.smooth,
|
||||
grid=setting.grid,
|
||||
text=setting.text,
|
||||
score=setting.score,
|
||||
lockFX=setting.lockFX,
|
||||
dropFX=setting.dropFX,
|
||||
moveFX=setting.moveFX,
|
||||
clearFX=setting.clearFX,
|
||||
shakeFX=setting.shakeFX,
|
||||
ghost=SETTING.ghost,
|
||||
center=SETTING.center,
|
||||
smooth=SETTING.smooth,
|
||||
grid=SETTING.grid,
|
||||
text=SETTING.text,
|
||||
score=SETTING.score,
|
||||
lockFX=SETTING.lockFX,
|
||||
dropFX=SETTING.dropFX,
|
||||
moveFX=SETTING.moveFX,
|
||||
clearFX=SETTING.clearFX,
|
||||
shakeFX=SETTING.shakeFX,
|
||||
|
||||
drop=1e99,lock=1e99,
|
||||
wait=10,fall=20,
|
||||
@@ -3140,7 +3140,7 @@ function PLY.newDemoPlayer(id,x,y,size)
|
||||
sequence="bag",
|
||||
bag={1,2,3,4,5,6,7},
|
||||
face={0,0,0,0,0,0,0},
|
||||
skin=setting.skin,
|
||||
skin=SETTING.skin,
|
||||
mission=false,
|
||||
|
||||
life=1e99,
|
||||
|
||||
314
parts/scenes.lua
314
parts/scenes.lua
@@ -12,7 +12,7 @@ local format=string.format
|
||||
local ins,rem=table.insert,table.remove
|
||||
local find,sub,char,byte=string.find,string.sub,string.char,string.byte
|
||||
|
||||
local scr=scr
|
||||
local SCR=SCR
|
||||
|
||||
local floatWheel=0
|
||||
local function wheelScroll(y)
|
||||
@@ -227,7 +227,7 @@ do--load
|
||||
elseif S.phase==7 then
|
||||
--------------------------Loading other little things here
|
||||
SKIN.load()
|
||||
stat.run=stat.run+1
|
||||
STAT.run=STAT.run+1
|
||||
LOADED=true
|
||||
--------------------------
|
||||
SFX.play("welcome_sfx")
|
||||
@@ -389,13 +389,13 @@ do--main
|
||||
modeEnv={}
|
||||
--Create demo player
|
||||
destroyPlayers()
|
||||
game.frame=0
|
||||
GAME.frame=0
|
||||
PLY.newDemoPlayer(1,900,35,1.1)
|
||||
end
|
||||
|
||||
function Tmr.main(dt)
|
||||
game.frame=game.frame+1
|
||||
players[1]:update(dt)
|
||||
GAME.frame=GAME.frame+1
|
||||
PLAYERS[1]:update(dt)
|
||||
end
|
||||
|
||||
function Pnt.main()
|
||||
@@ -403,12 +403,12 @@ do--main
|
||||
gc.draw(IMG.title_color,60,30,nil,1.3)
|
||||
setFont(30)
|
||||
gc.print(gameVersion,70,125)
|
||||
gc.print(system,610,100)
|
||||
local L=text.modes[stat.lastPlay]
|
||||
gc.print(SYSTEM,610,100)
|
||||
local L=text.modes[STAT.lastPlay]
|
||||
setFont(25)
|
||||
gc.print(L[1],700,470)
|
||||
gc.print(L[2],700,500)
|
||||
players[1]:draw()
|
||||
PLAYERS[1]:draw()
|
||||
end
|
||||
end
|
||||
do--mode
|
||||
@@ -708,7 +708,7 @@ do--mode
|
||||
gc.pop()
|
||||
if sel then
|
||||
local M=Modes[sel]
|
||||
local lang=setting.lang
|
||||
local lang=SETTING.lang
|
||||
gc.setColor(.7,.7,.7,.5)
|
||||
gc.rectangle("fill",920,0,360,720)--Info board
|
||||
gc.setColor(M.color)
|
||||
@@ -765,10 +765,10 @@ do--customGame
|
||||
if customEnv.opponent>5 and customEnv.sequence=="fixed"then
|
||||
LOG.print(text.ai_fixed,"warn")
|
||||
return
|
||||
elseif customEnv.opponent>0 and #preBag>0 then
|
||||
elseif customEnv.opponent>0 and #BAG>0 then
|
||||
LOG.print(text.ai_prebag,"warn")
|
||||
return
|
||||
elseif customEnv.opponent>0 and #preMission>0 then
|
||||
elseif customEnv.opponent>0 and #MISSION>0 then
|
||||
LOG.print(text.ai_mission,"warn")
|
||||
return
|
||||
end
|
||||
@@ -785,9 +785,9 @@ do--customGame
|
||||
SCN.go("custom_advance","swipeD")
|
||||
elseif key=="c"and kb.isDown("lctrl","rctrl")or key=="cC"then
|
||||
local str="Techmino Quest:"..copyQuestArgs().."!"
|
||||
if #preBag>0 then str=str..copySequence()end
|
||||
if #BAG>0 then str=str..copySequence()end
|
||||
str=str.."!"..copyBoard().."!"
|
||||
if #preMission>0 then str=str..copyMission()end
|
||||
if #MISSION>0 then str=str..copyMission()end
|
||||
sys.setClipboardText(str.."!")
|
||||
LOG.print(text.copySuccess,color.green)
|
||||
elseif key=="v"and kb.isDown("lctrl","rctrl")or key=="cV"then
|
||||
@@ -828,7 +828,7 @@ do--customGame
|
||||
end
|
||||
end
|
||||
|
||||
local preField=preField
|
||||
local FIELD=FIELD
|
||||
function Pnt.customGame()
|
||||
--Field
|
||||
gc.push("transform")
|
||||
@@ -839,7 +839,7 @@ do--customGame
|
||||
gc.rectangle("line",-2,-2,304,604)
|
||||
local cross=puzzleMark[-1]
|
||||
for y=1,20 do for x=1,10 do
|
||||
local B=preField[y][x]
|
||||
local B=FIELD[y][x]
|
||||
if B>0 then
|
||||
gc.draw(blockSkin[B],30*x-30,600-30*y)
|
||||
elseif B==-1 then
|
||||
@@ -852,17 +852,17 @@ do--customGame
|
||||
setFont(30)
|
||||
gc.printf(customEnv.sequence,330,550,240,"right")
|
||||
setFont(40)
|
||||
if #preBag>0 then
|
||||
if #BAG>0 then
|
||||
gc.setColor(1,1,int(Timer()*6.26)%2)
|
||||
gc.print("#",330,545)
|
||||
gc.print(#preBag,360,545)
|
||||
gc.print(#BAG,360,545)
|
||||
end
|
||||
|
||||
--Sequence
|
||||
if #preMission>0 then
|
||||
if #MISSION>0 then
|
||||
gc.setColor(1,customEnv.missionKill and 0 or 1,int(Timer()*6.26)%2)
|
||||
gc.print("#",610,545)
|
||||
gc.print(#preMission,640,545)
|
||||
gc.print(#MISSION,640,545)
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -873,7 +873,7 @@ do--custom_advance
|
||||
end
|
||||
do--custom_sequence
|
||||
function sceneInit.custom_sequence()
|
||||
sceneTemp={cur=#preBag,sure=0}
|
||||
sceneTemp={cur=#BAG,sure=0}
|
||||
end
|
||||
|
||||
local minoKey={
|
||||
@@ -888,48 +888,48 @@ do--custom_sequence
|
||||
}
|
||||
function keyDown.custom_sequence(key)
|
||||
local S=sceneTemp
|
||||
local preBag=preBag
|
||||
local BAG=BAG
|
||||
if key=="left"then
|
||||
local p=S.cur
|
||||
if p==0 then
|
||||
S.cur=#preBag
|
||||
S.cur=#BAG
|
||||
else
|
||||
repeat
|
||||
p=p-1
|
||||
until preBag[p]~=preBag[S.cur]
|
||||
until BAG[p]~=BAG[S.cur]
|
||||
S.cur=p
|
||||
end
|
||||
elseif key=="right"then
|
||||
local p=S.cur
|
||||
if p==#preBag then
|
||||
if p==#BAG then
|
||||
S.cur=0
|
||||
else
|
||||
repeat
|
||||
p=p+1
|
||||
until preBag[p+1]~=preBag[S.cur+1]
|
||||
until BAG[p+1]~=BAG[S.cur+1]
|
||||
S.cur=p
|
||||
end
|
||||
elseif key=="ten"then
|
||||
for i=1,10 do
|
||||
local p=S.cur
|
||||
if p==#preBag then break end
|
||||
if p==#BAG then break end
|
||||
repeat
|
||||
p=p+1
|
||||
until preBag[p+1]~=preBag[S.cur+1]
|
||||
until BAG[p+1]~=BAG[S.cur+1]
|
||||
S.cur=p
|
||||
end
|
||||
elseif key=="backspace"then
|
||||
if S.cur>0 then
|
||||
rem(preBag,S.cur)
|
||||
rem(BAG,S.cur)
|
||||
S.cur=S.cur-1
|
||||
if S.cur>0 and preBag[S.cur]==preBag[S.cur+1]then
|
||||
if S.cur>0 and BAG[S.cur]==BAG[S.cur+1]then
|
||||
keyDown.custom_mission("right")
|
||||
end
|
||||
end
|
||||
elseif key=="delete"then
|
||||
if S.sure>20 then
|
||||
for i=1,#preBag do
|
||||
rem(preBag)
|
||||
for i=1,#BAG do
|
||||
rem(BAG)
|
||||
end
|
||||
S.cur=0
|
||||
S.sure=0
|
||||
@@ -938,7 +938,7 @@ do--custom_sequence
|
||||
S.sure=50
|
||||
end
|
||||
elseif key=="c"and kb.isDown("lctrl","rctrl")or key=="cC"then
|
||||
if #preBag>0 then
|
||||
if #BAG>0 then
|
||||
sys.setClipboardText("Techmino SEQ:"..copySequence())
|
||||
LOG.print(text.copySuccess,color.green)
|
||||
end
|
||||
@@ -955,13 +955,13 @@ do--custom_sequence
|
||||
SCN.back()
|
||||
elseif type(key)=="number"then
|
||||
S.cur=S.cur+1
|
||||
ins(preBag,S.cur,key)
|
||||
ins(BAG,S.cur,key)
|
||||
elseif #key==1 then
|
||||
key=(kb.isDown("lshift","lalt","rshift","ralt")and minoKey2 or minoKey)[key]
|
||||
if key then
|
||||
local p=S.cur+1
|
||||
while preBag[p]==key do p=p+1 end
|
||||
ins(preBag,p,key)
|
||||
while BAG[p]==key do p=p+1 end
|
||||
ins(BAG,p,key)
|
||||
S.cur=p
|
||||
end
|
||||
end
|
||||
@@ -982,8 +982,8 @@ do--custom_sequence
|
||||
--Draw sequence
|
||||
local miniBlock=TEXTURE.miniBlock
|
||||
local libColor=SKIN.libColor
|
||||
local set=setting.skin
|
||||
local L=preBag
|
||||
local set=SETTING.skin
|
||||
local L=BAG
|
||||
local x,y=120,136--Next block pos
|
||||
local cx,cy=120,136--Cursor-center pos
|
||||
local i,j=1,#L
|
||||
@@ -1051,7 +1051,7 @@ do--custom_field
|
||||
a=12,s=13,d=14,f=15,g=16,h=17,
|
||||
z=0,x=-1,
|
||||
}
|
||||
local preField=preField
|
||||
local FIELD=FIELD
|
||||
function mouseDown.custom_field(x,y,k)
|
||||
mouseMove.custom_field(x,y)
|
||||
end
|
||||
@@ -1061,7 +1061,7 @@ do--custom_field
|
||||
if sy<1 or sy>20 then sy=nil end
|
||||
sceneTemp.x,sceneTemp.y=sx,sy
|
||||
if sx and sy and ms.isDown(1,2,3)then
|
||||
preField[sy][sx]=ms.isDown(1)and sceneTemp.pen or ms.isDown(2)and -1 or 0
|
||||
FIELD[sy][sx]=ms.isDown(1)and sceneTemp.pen or ms.isDown(2)and -1 or 0
|
||||
end
|
||||
end
|
||||
function wheelMoved.custom_field(x,y)
|
||||
@@ -1084,7 +1084,7 @@ do--custom_field
|
||||
if sy<1 or sy>20 then sy=nil end
|
||||
sceneTemp.x,sceneTemp.y=sx,sy
|
||||
if sx and sy then
|
||||
preField[sy][sx]=sceneTemp.pen
|
||||
FIELD[sy][sx]=sceneTemp.pen
|
||||
end
|
||||
end
|
||||
function keyDown.custom_field(key)
|
||||
@@ -1098,11 +1098,11 @@ do--custom_field
|
||||
elseif key=="right"and sx<10 then sx=sx+1
|
||||
end
|
||||
if kb.isDown("space")then
|
||||
preField[sy][sx]=pen
|
||||
FIELD[sy][sx]=pen
|
||||
end
|
||||
elseif key=="delete"then
|
||||
if sceneTemp.sure>20 then
|
||||
for y=1,20 do for x=1,10 do preField[y][x]=0 end end
|
||||
for y=1,20 do for x=1,10 do FIELD[y][x]=0 end end
|
||||
sceneTemp.sure=0
|
||||
SFX.play("finesseError",.7)
|
||||
else
|
||||
@@ -1110,16 +1110,16 @@ do--custom_field
|
||||
end
|
||||
elseif key=="space"then
|
||||
if sx and sy then
|
||||
preField[sy][sx]=pen
|
||||
FIELD[sy][sx]=pen
|
||||
end
|
||||
elseif key=="escape"then
|
||||
SCN.back()
|
||||
elseif key=="k"then
|
||||
ins(preField,1,{14,14,14,14,14,14,14,14,14,14})
|
||||
preField[21]=nil
|
||||
ins(FIELD,1,{14,14,14,14,14,14,14,14,14,14})
|
||||
FIELD[21]=nil
|
||||
SFX.play("blip")
|
||||
elseif key=="l"then
|
||||
local F=preField
|
||||
local F=FIELD
|
||||
for i=20,1,-1 do
|
||||
for j=1,10 do
|
||||
if F[i][j]<=0 then goto L end
|
||||
@@ -1174,7 +1174,7 @@ do--custom_field
|
||||
gc.setLineWidth(2)
|
||||
local cross=puzzleMark[-1]
|
||||
for y=1,20 do for x=1,10 do
|
||||
local B=preField[y][x]
|
||||
local B=FIELD[y][x]
|
||||
if B>0 then
|
||||
gc.draw(blockSkin[B],30*x-30,600-30*y)
|
||||
elseif B==-1 and not S.demo then
|
||||
@@ -1210,7 +1210,7 @@ do--custom_field
|
||||
setFont(40)
|
||||
local _
|
||||
for i=1,7 do
|
||||
_=setting.skin[i]
|
||||
_=SETTING.skin[i]
|
||||
gc.setColor(SKIN.libColor[_])
|
||||
mStr(text.block[i],500+65*_,115)
|
||||
end
|
||||
@@ -1220,7 +1220,7 @@ do--custom_mission
|
||||
function sceneInit.custom_mission()
|
||||
sceneTemp={
|
||||
input="",
|
||||
cur=#preMission,
|
||||
cur=#MISSION,
|
||||
sure=0,
|
||||
}
|
||||
end
|
||||
@@ -1229,48 +1229,48 @@ do--custom_mission
|
||||
local legalInput={Z=true,S=true,J=true,L=true,T=true,O=true,I=true,A=true,_=true,P=true}
|
||||
function keyDown.custom_mission(key)
|
||||
local S=sceneTemp
|
||||
local preMission=preMission
|
||||
local MISSION=MISSION
|
||||
if key=="left"then
|
||||
local p=S.cur
|
||||
if p==0 then
|
||||
S.cur=#preMission
|
||||
S.cur=#MISSION
|
||||
else
|
||||
repeat
|
||||
p=p-1
|
||||
until preMission[p]~=preMission[S.cur]
|
||||
until MISSION[p]~=MISSION[S.cur]
|
||||
S.cur=p
|
||||
end
|
||||
elseif key=="right"then
|
||||
local p=S.cur
|
||||
if p==#preMission then
|
||||
if p==#MISSION then
|
||||
S.cur=0
|
||||
else
|
||||
repeat
|
||||
p=p+1
|
||||
until preMission[p+1]~=preMission[S.cur+1]
|
||||
until MISSION[p+1]~=MISSION[S.cur+1]
|
||||
S.cur=p
|
||||
end
|
||||
elseif key=="ten"then
|
||||
for i=1,10 do
|
||||
local p=S.cur
|
||||
if p==#preMission then break end
|
||||
if p==#MISSION then break end
|
||||
repeat
|
||||
p=p+1
|
||||
until preMission[p+1]~=preMission[S.cur+1]
|
||||
until MISSION[p+1]~=MISSION[S.cur+1]
|
||||
S.cur=p
|
||||
end
|
||||
elseif key=="backspace"then
|
||||
if S.cur>0 then
|
||||
rem(preMission,S.cur)
|
||||
rem(MISSION,S.cur)
|
||||
S.cur=S.cur-1
|
||||
if S.cur>0 and preMission[S.cur]==preMission[S.cur+1]then
|
||||
if S.cur>0 and MISSION[S.cur]==MISSION[S.cur+1]then
|
||||
keyDown.custom_mission("right")
|
||||
end
|
||||
end
|
||||
elseif key=="delete"then
|
||||
if S.sure>20 then
|
||||
for i=1,#preMission do
|
||||
rem(preMission)
|
||||
for i=1,#MISSION do
|
||||
rem(MISSION)
|
||||
end
|
||||
S.cur=0
|
||||
S.sure=0
|
||||
@@ -1279,7 +1279,7 @@ do--custom_mission
|
||||
S.sure=50
|
||||
end
|
||||
elseif key=="c"and kb.isDown("lctrl","rctrl")or key=="cC"then
|
||||
if #preMission>0 then
|
||||
if #MISSION>0 then
|
||||
sys.setClipboardText("Techmino Target:"..copyMission())
|
||||
LOG.print(text.copySuccess,color.green)
|
||||
end
|
||||
@@ -1296,8 +1296,8 @@ do--custom_mission
|
||||
SCN.back()
|
||||
elseif type(key)=="number"then
|
||||
local p=S.cur+1
|
||||
while preMission[p]==key do p=p+1 end
|
||||
ins(preMission,p,key)
|
||||
while MISSION[p]==key do p=p+1 end
|
||||
ins(MISSION,p,key)
|
||||
S.cur=p
|
||||
else
|
||||
if key=="space"then
|
||||
@@ -1310,7 +1310,7 @@ do--custom_mission
|
||||
input=input..key
|
||||
if missionEnum[input]then
|
||||
S.cur=S.cur+1
|
||||
ins(preMission,S.cur,missionEnum[input])
|
||||
ins(MISSION,S.cur,missionEnum[input])
|
||||
input=""
|
||||
elseif #input>1 or not legalInput[input]then
|
||||
input=""
|
||||
@@ -1338,8 +1338,8 @@ do--custom_mission
|
||||
|
||||
--Draw targets
|
||||
local libColor=SKIN.libColor
|
||||
local set=setting.skin
|
||||
local L=preMission
|
||||
local set=SETTING.skin
|
||||
local L=MISSION
|
||||
local x,y=100,136--Next block pos
|
||||
local cx,cy=100,136--Cursor-center pos
|
||||
local i,j=1,#L
|
||||
@@ -1422,19 +1422,19 @@ do--play
|
||||
end
|
||||
|
||||
function touchDown.play(id,x,y)
|
||||
if not setting.VKSwitch or game.replaying then return end
|
||||
if not SETTING.VKSwitch or GAME.replaying then return end
|
||||
|
||||
local t=onVirtualkey(x,y)
|
||||
if t then
|
||||
players[1]:pressKey(t)
|
||||
if setting.VKSFX>0 then
|
||||
SFX.play("virtualKey",setting.VKSFX)
|
||||
PLAYERS[1]:pressKey(t)
|
||||
if SETTING.VKSFX>0 then
|
||||
SFX.play("virtualKey",SETTING.VKSFX)
|
||||
end
|
||||
VK[t].isDown=true
|
||||
VK[t].pressTime=10
|
||||
if setting.VKTrack then
|
||||
if SETTING.VKTrack then
|
||||
local B=VK[t]
|
||||
if setting.VKDodge then--Button collision (not accurate)
|
||||
if SETTING.VKDodge then--Button collision (not accurate)
|
||||
for i=1,#VK do
|
||||
local b=VK[i]
|
||||
local d=B.r+b.r-((B.x-b.x)^2+(B.y-b.y)^2)^.5--Hit depth(Neg means distance)
|
||||
@@ -1445,25 +1445,25 @@ do--play
|
||||
end
|
||||
end
|
||||
local O=VK_org[t]
|
||||
local _FW,_CW=setting.VKTchW*.1,1-setting.VKCurW*.1
|
||||
local _FW,_CW=SETTING.VKTchW*.1,1-SETTING.VKCurW*.1
|
||||
local _OW=1-_FW-_CW
|
||||
|
||||
--Auto follow: finger, current, origin (weight from setting)
|
||||
B.x,B.y=x*_FW+B.x*_CW+O.x*_OW,y*_FW+B.y*_CW+O.y*_OW
|
||||
end
|
||||
VIB(setting.VKVIB)
|
||||
VIB(SETTING.VKVIB)
|
||||
end
|
||||
end
|
||||
function touchUp.play(id,x,y)
|
||||
if not setting.VKSwitch or game.replaying then return end
|
||||
if not SETTING.VKSwitch or GAME.replaying then return end
|
||||
|
||||
local t=onVirtualkey(x,y)
|
||||
if t then
|
||||
players[1]:releaseKey(t)
|
||||
PLAYERS[1]:releaseKey(t)
|
||||
end
|
||||
end
|
||||
function touchMove.play(id,x,y,dx,dy)
|
||||
if not setting.VKSwitch or game.replaying then return end
|
||||
if not SETTING.VKSwitch or GAME.replaying then return end
|
||||
|
||||
local l=tc.getTouches()
|
||||
for n=1,#VK do
|
||||
@@ -1474,17 +1474,17 @@ do--play
|
||||
goto next
|
||||
end
|
||||
end
|
||||
players[1]:releaseKey(n)
|
||||
PLAYERS[1]:releaseKey(n)
|
||||
::next::
|
||||
end
|
||||
end
|
||||
function keyDown.play(key)
|
||||
if game.replaying then return end
|
||||
if GAME.replaying then return end
|
||||
|
||||
local m=keyMap
|
||||
for k=1,20 do
|
||||
if key==m[1][k]or key==m[2][k]then
|
||||
players[1]:pressKey(k)
|
||||
PLAYERS[1]:pressKey(k)
|
||||
VK[k].isDown=true
|
||||
VK[k].pressTime=10
|
||||
return
|
||||
@@ -1494,23 +1494,23 @@ do--play
|
||||
if key=="escape"then pauseGame()end
|
||||
end
|
||||
function keyUp.play(key)
|
||||
if game.replaying then return end
|
||||
if GAME.replaying then return end
|
||||
local m=keyMap
|
||||
for k=1,20 do
|
||||
if key==m[1][k]or key==m[2][k]then
|
||||
players[1]:releaseKey(k)
|
||||
PLAYERS[1]:releaseKey(k)
|
||||
VK[k].isDown=false
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
function gamepadDown.play(key)
|
||||
if game.replaying then return end
|
||||
if GAME.replaying then return end
|
||||
|
||||
local m=keyMap
|
||||
for k=1,20 do
|
||||
if key==m[3][k]or key==m[4][k]then
|
||||
players[1]:pressKey(k)
|
||||
PLAYERS[1]:pressKey(k)
|
||||
VK[k].isDown=true
|
||||
VK[k].pressTime=10
|
||||
return
|
||||
@@ -1520,12 +1520,12 @@ do--play
|
||||
if key=="back"then pauseGame()end
|
||||
end
|
||||
function gamepadUp.play(key)
|
||||
if game.replaying then return end
|
||||
if GAME.replaying then return end
|
||||
|
||||
local m=keyMap
|
||||
for k=1,20 do
|
||||
if key==m[3][k]or key==m[4][k]then
|
||||
players[1]:releaseKey(k)
|
||||
PLAYERS[1]:releaseKey(k)
|
||||
VK[k].isDown=false
|
||||
return
|
||||
end
|
||||
@@ -1534,13 +1534,13 @@ do--play
|
||||
|
||||
function Tmr.play(dt)
|
||||
local _
|
||||
local P1=players[1]
|
||||
local game=game
|
||||
game.frame=game.frame+1
|
||||
stat.time=stat.time+dt
|
||||
local P1=PLAYERS[1]
|
||||
local GAME=GAME
|
||||
GAME.frame=GAME.frame+1
|
||||
STAT.time=STAT.time+dt
|
||||
|
||||
--Update virtualkey animation
|
||||
if setting.VKSwitch then
|
||||
if SETTING.VKSwitch then
|
||||
for i=1,#VK do
|
||||
_=VK[i]
|
||||
if _.pressTime>0 then
|
||||
@@ -1550,10 +1550,10 @@ do--play
|
||||
end
|
||||
|
||||
--Replay
|
||||
if game.replaying then
|
||||
_=game.replaying
|
||||
local L=game.rec
|
||||
while game.frame==L[_]do
|
||||
if GAME.replaying then
|
||||
_=GAME.replaying
|
||||
local L=GAME.rec
|
||||
while GAME.frame==L[_]do
|
||||
local k=L[_+1]
|
||||
if k>0 then
|
||||
P1:pressKey(k)
|
||||
@@ -1565,18 +1565,18 @@ do--play
|
||||
end
|
||||
_=_+2
|
||||
end
|
||||
game.replaying=_
|
||||
GAME.replaying=_
|
||||
end
|
||||
|
||||
--Counting,include pre-das,directy RETURN,or restart counting
|
||||
if game.frame<180 then
|
||||
if game.frame==179 then
|
||||
if GAME.frame<180 then
|
||||
if GAME.frame==179 then
|
||||
gameStart()
|
||||
elseif game.frame==60 or game.frame==120 then
|
||||
elseif GAME.frame==60 or GAME.frame==120 then
|
||||
SFX.play("ready")
|
||||
end
|
||||
for p=1,#players do
|
||||
local P=players[p]
|
||||
for p=1,#PLAYERS do
|
||||
local P=PLAYERS[p]
|
||||
if P.movDir~=0 then
|
||||
if P.moving<P.gameEnv.das then
|
||||
P.moving=P.moving+1
|
||||
@@ -1598,19 +1598,19 @@ do--play
|
||||
end
|
||||
|
||||
--Update players
|
||||
for p=1,#players do
|
||||
local P=players[p]
|
||||
for p=1,#PLAYERS do
|
||||
local P=PLAYERS[p]
|
||||
P:update(dt)
|
||||
end
|
||||
|
||||
--Fresh royale target
|
||||
if modeEnv.royaleMode and game.frame%120==0 then
|
||||
if modeEnv.royaleMode and GAME.frame%120==0 then
|
||||
freshMostDangerous()
|
||||
end
|
||||
|
||||
--Warning check
|
||||
if P1.alive then
|
||||
if game.frame%26==0 and setting.warn then
|
||||
if GAME.frame%26==0 and SETTING.warn then
|
||||
local F=P1.field
|
||||
local height=0--Max height of row 4~7
|
||||
for x=4,7 do
|
||||
@@ -1623,17 +1623,17 @@ do--play
|
||||
end
|
||||
end
|
||||
end
|
||||
game.warnLVL0=log(height-15+P1.atkBuffer.sum*.8)
|
||||
GAME.warnLVL0=log(height-15+P1.atkBuffer.sum*.8)
|
||||
end
|
||||
_=game.warnLVL
|
||||
if _<game.warnLVL0 then
|
||||
_=_*.95+game.warnLVL0*.05
|
||||
_=GAME.warnLVL
|
||||
if _<GAME.warnLVL0 then
|
||||
_=_*.95+GAME.warnLVL0*.05
|
||||
elseif _>0 then
|
||||
_=max(_-.026,0)
|
||||
end
|
||||
game.warnLVL=_
|
||||
elseif game.warnLVL>0 then
|
||||
game.warnLVL=max(game.warnLVL-.026,0)
|
||||
GAME.warnLVL=_
|
||||
elseif GAME.warnLVL>0 then
|
||||
GAME.warnLVL=max(GAME.warnLVL-.026,0)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1646,9 +1646,9 @@ do--play
|
||||
gc.circle("line",x,y,30*(1+a),6)
|
||||
end
|
||||
local function drawVirtualkey()
|
||||
local a=setting.VKAlpha
|
||||
local a=SETTING.VKAlpha
|
||||
local _
|
||||
if setting.VKIcon then
|
||||
if SETTING.VKIcon then
|
||||
local icons=TEXTURE.VKIcon
|
||||
for i=1,#VK do
|
||||
if VK[i].ava then
|
||||
@@ -1689,15 +1689,15 @@ do--play
|
||||
gc.setColor(1,1,1,.2+.1*(sin(3*t)+sin(2.6*t)))
|
||||
mStr(text.marking,190,60+26*sin(t))
|
||||
end
|
||||
for p=1,#players do
|
||||
players[p]:draw()
|
||||
for p=1,#PLAYERS do
|
||||
PLAYERS[p]:draw()
|
||||
end
|
||||
|
||||
gc.setColor(1,1,1)
|
||||
if setting.VKSwitch then drawVirtualkey()end
|
||||
if SETTING.VKSwitch then drawVirtualkey()end
|
||||
|
||||
if modeEnv.royaleMode then
|
||||
local P=players[1]
|
||||
local P=PLAYERS[1]
|
||||
gc.setLineWidth(5)
|
||||
gc.setColor(.8,1,0,.2)
|
||||
for i=1,#P.atker do
|
||||
@@ -1720,7 +1720,7 @@ do--play
|
||||
gc.draw(drawableText.levelName,511+drawableText.modeName:getWidth(),10)
|
||||
|
||||
--Replaying
|
||||
if game.replaying then
|
||||
if GAME.replaying then
|
||||
gc.setColor(1,1,Timer()%1>.5 and 1 or 0)
|
||||
mText(drawableText.replaying,410,17)
|
||||
end
|
||||
@@ -1728,16 +1728,16 @@ do--play
|
||||
--Warning
|
||||
gc.push("transform")
|
||||
gc.origin()
|
||||
if game.warnLVL>0 then
|
||||
if GAME.warnLVL>0 then
|
||||
gc.setColor(0,0,0,0)
|
||||
SHADER.warning:send("level",game.warnLVL)
|
||||
SHADER.warning:send("level",GAME.warnLVL)
|
||||
gc.setShader(SHADER.warning)
|
||||
gc.rectangle("fill",0,0,scr.w,scr.h)
|
||||
gc.rectangle("fill",0,0,SCR.w,SCR.h)
|
||||
gc.setShader()
|
||||
end
|
||||
if restartCount>0 then
|
||||
gc.setColor(0,0,0,restartCount*.05)
|
||||
gc.rectangle("fill",0,0,scr.w,scr.h)
|
||||
gc.rectangle("fill",0,0,SCR.w,SCR.h)
|
||||
end
|
||||
gc.pop()
|
||||
end
|
||||
@@ -1761,7 +1761,7 @@ do--pause
|
||||
then
|
||||
TEXT.show(text.needRestart,640,440,50,"fly",.6)
|
||||
end
|
||||
local P=players[1]
|
||||
local P=PLAYERS[1]
|
||||
local S=P.stat
|
||||
sceneTemp={
|
||||
timer=org=="play"and 0 or 50,
|
||||
@@ -1848,8 +1848,8 @@ do--pause
|
||||
end
|
||||
function sceneBack.pause()
|
||||
love.keyboard.setKeyRepeat(true)
|
||||
if not game.replaying then
|
||||
mergeStat(stat,players[1].stat)
|
||||
if not GAME.replaying then
|
||||
mergeStat(STAT,PLAYERS[1].stat)
|
||||
end
|
||||
FILE.saveData()
|
||||
end
|
||||
@@ -1864,15 +1864,15 @@ do--pause
|
||||
elseif key=="r"then
|
||||
resetGameData()
|
||||
SCN.swapTo("play","none")
|
||||
elseif key=="p"and(game.result or game.replaying)and #players==1 then
|
||||
elseif key=="p"and(GAME.result or GAME.replaying)and #PLAYERS==1 then
|
||||
resetPartGameData(true)
|
||||
SCN.swapTo("play","none")
|
||||
end
|
||||
end
|
||||
|
||||
function Tmr.pause(dt)
|
||||
if not game.result then
|
||||
game.pauseTime=game.pauseTime+dt
|
||||
if not GAME.result then
|
||||
GAME.pauseTime=GAME.pauseTime+dt
|
||||
end
|
||||
if sceneTemp.timer<50 then
|
||||
sceneTemp.timer=sceneTemp.timer+1
|
||||
@@ -1886,22 +1886,22 @@ do--pause
|
||||
function Pnt.pause()
|
||||
local S=sceneTemp
|
||||
local T=S.timer*.02
|
||||
if T<1 or game.result then Pnt.play()end
|
||||
if T<1 or GAME.result then Pnt.play()end
|
||||
|
||||
--Dark BG
|
||||
local _=T
|
||||
if game.result then _=_*.7 end
|
||||
if GAME.result then _=_*.7 end
|
||||
gc.setColor(.15,.15,.15,_)
|
||||
gc.push("transform")
|
||||
gc.origin()
|
||||
gc.rectangle("fill",0,0,scr.w,scr.h)
|
||||
gc.rectangle("fill",0,0,SCR.w,SCR.h)
|
||||
gc.pop()
|
||||
|
||||
--Pause Info
|
||||
setFont(25)
|
||||
if game.pauseCount>0 then
|
||||
if GAME.pauseCount>0 then
|
||||
gc.setColor(1,.4,.4,T)
|
||||
gc.print(text.pauseCount..":["..game.pauseCount.."] "..format("%.2f",game.pauseTime).."s",70,100)
|
||||
gc.print(text.pauseCount..":["..GAME.pauseCount.."] "..format("%.2f",GAME.pauseTime).."s",70,100)
|
||||
end
|
||||
|
||||
gc.setColor(1,1,1,T)
|
||||
@@ -1913,10 +1913,10 @@ do--pause
|
||||
|
||||
--Result Text
|
||||
setFont(35)
|
||||
mText(game.result and drawableText[game.result]or drawableText.pause,640,50-10*(5-sceneTemp.timer*.1)^1.5)
|
||||
mText(GAME.result and drawableText[GAME.result]or drawableText.pause,640,50-10*(5-sceneTemp.timer*.1)^1.5)
|
||||
|
||||
--Infos
|
||||
if game.frame>180 then
|
||||
if GAME.frame>180 then
|
||||
_=S.list
|
||||
setFont(26)
|
||||
for i=1,10 do
|
||||
@@ -1938,7 +1938,7 @@ do--pause
|
||||
end
|
||||
|
||||
--Radar Chart
|
||||
if T>.5 and game.frame>180 then
|
||||
if T>.5 and GAME.frame>180 then
|
||||
T=T*2-1
|
||||
gc.setLineWidth(2)
|
||||
gc.push("transform")
|
||||
@@ -2057,8 +2057,8 @@ end
|
||||
do--setting_control
|
||||
function sceneInit.setting_control()
|
||||
sceneTemp={
|
||||
das=setting.das,
|
||||
arr=setting.arr,
|
||||
das=SETTING.das,
|
||||
arr=SETTING.arr,
|
||||
pos=0,
|
||||
dir=1,
|
||||
wait=30,
|
||||
@@ -2081,8 +2081,8 @@ do--setting_control
|
||||
if T.das==0 then
|
||||
if T.arr==0 then
|
||||
T.pos=T.pos+7*T.dir
|
||||
T.das=setting.das+1
|
||||
T.arr=setting.arr
|
||||
T.das=SETTING.das+1
|
||||
T.arr=SETTING.arr
|
||||
T.dir=-T.dir
|
||||
T.wait=26
|
||||
else
|
||||
@@ -2093,15 +2093,15 @@ do--setting_control
|
||||
T.arr=T.arr-1
|
||||
if T.arr==0 then
|
||||
T.pos=T.pos+T.dir
|
||||
T.arr=setting.arr
|
||||
T.arr=SETTING.arr
|
||||
elseif T.arr==-1 then
|
||||
T.pos=T.dir>0 and 8 or 0
|
||||
T.arr=setting.arr
|
||||
T.arr=SETTING.arr
|
||||
end
|
||||
if T.pos%8==0 then
|
||||
T.dir=-T.dir
|
||||
T.wait=26
|
||||
T.das=setting.das
|
||||
T.das=SETTING.das
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -2121,7 +2121,7 @@ do--setting_control
|
||||
gc.line(950,530,950,630)
|
||||
|
||||
--Testing O mino
|
||||
_=blockSkin[setting.skin[6]]
|
||||
_=blockSkin[SETTING.skin[6]]
|
||||
local x=550+40*sceneTemp.pos
|
||||
gc.draw(_,x,540,nil,40/30)
|
||||
gc.draw(_,x,580,nil,40/30)
|
||||
@@ -2261,13 +2261,13 @@ do--setting_skin
|
||||
function Pnt.setting_skin()
|
||||
gc.setColor(1,1,1)
|
||||
for N=1,7 do
|
||||
local face=setting.face[N]
|
||||
local face=SETTING.face[N]
|
||||
local B=blocks[N][face]
|
||||
local x,y=-55+140*N-scs[N][face][2]*30,355+scs[N][face][1]*30
|
||||
local col=#B[1]
|
||||
for i=1,#B do for j=1,col do
|
||||
if B[i][j]then
|
||||
gc.draw(blockSkin[setting.skin[N]],x+30*j,y-30*i)
|
||||
gc.draw(blockSkin[SETTING.skin[N]],x+30*j,y-30*i)
|
||||
end
|
||||
end end
|
||||
gc.circle("fill",-10+140*N,340,sin(Timer()*10)+5)
|
||||
@@ -2341,15 +2341,15 @@ do--setting_touch
|
||||
end
|
||||
|
||||
local function VirtualkeyPreview()
|
||||
if setting.VKSwitch then
|
||||
if SETTING.VKSwitch then
|
||||
for i=1,#VK_org do
|
||||
local B=VK_org[i]
|
||||
if B.ava then
|
||||
local c=sceneTemp.sel==i and .6 or 1
|
||||
gc.setColor(c,1,c,setting.VKAlpha)
|
||||
gc.setColor(c,1,c,SETTING.VKAlpha)
|
||||
gc.setLineWidth(B.r*.07)
|
||||
gc.circle("line",B.x,B.y,B.r,10)
|
||||
if setting.VKIcon then gc.draw(TEXTURE.VKIcon[i],B.x,B.y,nil,B.r*.025,nil,18,18)end
|
||||
if SETTING.VKIcon then gc.draw(TEXTURE.VKIcon[i],B.x,B.y,nil,B.r*.025,nil,18,18)end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -2375,9 +2375,9 @@ end
|
||||
do--setting_trackSetting
|
||||
function Pnt.setting_trackSetting()
|
||||
gc.setColor(1,1,1)
|
||||
mText(drawableText.VKTchW,140+50*setting.VKTchW,260)
|
||||
mText(drawableText.VKOrgW,140+50*setting.VKTchW+50*setting.VKCurW,320)
|
||||
mText(drawableText.VKCurW,640+50*setting.VKCurW,380)
|
||||
mText(drawableText.VKTchW,140+50*SETTING.VKTchW,260)
|
||||
mText(drawableText.VKOrgW,140+50*SETTING.VKTchW+50*SETTING.VKCurW,320)
|
||||
mText(drawableText.VKCurW,640+50*SETTING.VKCurW,380)
|
||||
end
|
||||
end
|
||||
do--setting_touchSwitch
|
||||
@@ -2421,7 +2421,7 @@ do--music
|
||||
end
|
||||
elseif key=="return"or key=="space"then
|
||||
if BGM.nowPlay~=BGM.list[S]then
|
||||
if setting.bgm>0 then
|
||||
if SETTING.bgm>0 then
|
||||
SFX.play("click")
|
||||
BGM.play(BGM.list[S])
|
||||
end
|
||||
@@ -2488,7 +2488,7 @@ do--help
|
||||
end
|
||||
do--dict
|
||||
function sceneInit.dict()
|
||||
local location=(setting.lang==3 or setting.lang==4)and"en"or"zh"
|
||||
local location=(SETTING.lang==3 or SETTING.lang==4)and"en"or"zh"
|
||||
sceneTemp={
|
||||
dict=require("document/dict_"..location),
|
||||
|
||||
@@ -2689,7 +2689,7 @@ do--staff
|
||||
end
|
||||
do--stat
|
||||
function sceneInit.stat()
|
||||
local S=stat
|
||||
local S=STAT
|
||||
local X1,X2,Y1,Y2={0,0,0,0},{0,0,0,0},{},{}
|
||||
for i=1,7 do
|
||||
local S,C=S.spin[i],S.clear[i]
|
||||
@@ -2728,7 +2728,7 @@ do--stat
|
||||
function Pnt.stat()
|
||||
local chart=sceneTemp.chart
|
||||
setFont(24)
|
||||
local _,__=SKIN.libColor,setting.skin
|
||||
local _,__=SKIN.libColor,SETTING.skin
|
||||
local A,B=chart.A1,chart.A2
|
||||
for x=1,7 do
|
||||
gc.setColor(_[__[x]])
|
||||
|
||||
@@ -82,7 +82,7 @@ function SKIN.load()
|
||||
end
|
||||
I:release()
|
||||
end
|
||||
SKIN.change(setting.skinSet)
|
||||
SKIN.change(SETTING.skinSet)
|
||||
puzzleMark={}
|
||||
gc.setLineWidth(3)
|
||||
for i=1,11 do
|
||||
@@ -110,29 +110,29 @@ function SKIN.load()
|
||||
end
|
||||
local L=#list
|
||||
function SKIN.prevSet()--Prev skin_set
|
||||
local _=(setting.skinSet-2)%L+1
|
||||
setting.skinSet=_
|
||||
local _=(SETTING.skinSet-2)%L+1
|
||||
SETTING.skinSet=_
|
||||
SKIN.change(_)
|
||||
_=list[_]
|
||||
TEXT.show(_,1100,100,int(300/#_)+5,"fly")
|
||||
end
|
||||
function SKIN.nextSet()--Next skin_set
|
||||
local _=setting.skinSet%L+1
|
||||
setting.skinSet=_
|
||||
local _=SETTING.skinSet%L+1
|
||||
SETTING.skinSet=_
|
||||
SKIN.change(_)
|
||||
_=list[_]
|
||||
TEXT.show(_,1100,100,int(300/#_)+5,"fly")
|
||||
end
|
||||
function SKIN.prev(i)--Prev skin for [i]
|
||||
local _=setting.skin
|
||||
local _=SETTING.skin
|
||||
_[i]=(_[i]-2)%11+1
|
||||
end
|
||||
function SKIN.next(i)--Next skin for [i]
|
||||
local _=setting.skin
|
||||
local _=SETTING.skin
|
||||
_[i]=_[i]%11+1
|
||||
end
|
||||
function SKIN.rotate(i)--Change direction of [i]
|
||||
setting.face[i]=(setting.face[i]+1)%4
|
||||
SETTING.face[i]=(SETTING.face[i]+1)%4
|
||||
SFX.play("rotate")
|
||||
end
|
||||
function SKIN.change(i)--Change to skin_set[i]
|
||||
|
||||
@@ -34,7 +34,7 @@ function Tick.lose(P)
|
||||
return true
|
||||
end
|
||||
end
|
||||
if not modeEnv.royaleMode and #players>1 then
|
||||
if not modeEnv.royaleMode and #PLAYERS>1 then
|
||||
P.y=P.y+P.endCounter*.26
|
||||
P.absFieldY=P.absFieldY+P.endCounter*.26
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user