Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3bef016019 |
@@ -7,25 +7,25 @@ local color={
|
|||||||
cyan={0,1,1},
|
cyan={0,1,1},
|
||||||
grey={.6,.6,.6},
|
grey={.6,.6,.6},
|
||||||
|
|
||||||
lightRed={1,.5,.5},
|
lRed={1,.5,.5},
|
||||||
lightGreen={.5,1,.5},
|
lGreen={.5,1,.5},
|
||||||
lightBlue={.6,.6,1},
|
lBlue={.6,.6,1},
|
||||||
lightCyan={.5,1,1},
|
lCyan={.5,1,1},
|
||||||
lightMagenta={1,.5,1},
|
lMagenta={1,.5,1},
|
||||||
lightYellow={1,1,.5},
|
lYellow={1,1,.5},
|
||||||
lightPurple={.8,.4,1},
|
lPurple={.8,.4,1},
|
||||||
lightOrange={1,.7,.3},
|
lOrange={1,.7,.3},
|
||||||
lightGrey={.8,.8,.8},
|
lGrey={.8,.8,.8},
|
||||||
|
|
||||||
darkRed={.6,0,0},
|
dRed={.6,0,0},
|
||||||
darkGreen={0,.6,0},
|
dGreen={0,.6,0},
|
||||||
darkBlue={0,0,.6},
|
dBlue={0,0,.6},
|
||||||
darkCyan={0,.6,.6},
|
dCyan={0,.6,.6},
|
||||||
darkMagenta={.6,0,.6},
|
dMagenta={.6,0,.6},
|
||||||
darkYellow={.6,.6,0},
|
dYellow={.6,.6,0},
|
||||||
darkPurple={.3,0,.6},
|
dPurple={.3,0,.6},
|
||||||
darkOrange={.6,.4,0},
|
dOrange={.6,.4,0},
|
||||||
darkGrey={.3,.3,.3},
|
dGrey={.3,.3,.3},
|
||||||
|
|
||||||
black={0,0,0},
|
black={0,0,0},
|
||||||
orange={1,.6,0},
|
orange={1,.6,0},
|
||||||
@@ -36,24 +36,4 @@ local color={
|
|||||||
white={1,1,1},
|
white={1,1,1},
|
||||||
purple={.5,0,1},
|
purple={.5,0,1},
|
||||||
}
|
}
|
||||||
|
|
||||||
color.lRed= color.lightRed
|
|
||||||
color.lGreen= color.lightGreen
|
|
||||||
color.lBlue= color.lightBlue
|
|
||||||
color.lCyan= color.lightCyan
|
|
||||||
color.lMagenta= color.lightMagenta
|
|
||||||
color.lYellow= color.lightYellow
|
|
||||||
color.lPurple= color.lightPurple
|
|
||||||
color.lOrange= color.lightOrange
|
|
||||||
color.lGrey= color.lightGrey
|
|
||||||
|
|
||||||
color.dRed= color.darkRed
|
|
||||||
color.dGreen= color.darkGreen
|
|
||||||
color.dBlue= color.darkBlue
|
|
||||||
color.dCyan= color.darkCyan
|
|
||||||
color.dMagenta= color.darkMagenta
|
|
||||||
color.dYellow= color.darkYellow
|
|
||||||
color.dPurple= color.darkPurple
|
|
||||||
color.dOrange= color.darkOrange
|
|
||||||
color.dGrey= color.darkGrey
|
|
||||||
return color
|
return color
|
||||||
@@ -18,6 +18,7 @@ local IMG={
|
|||||||
miyaF4="miya/f4.png",
|
miyaF4="miya/f4.png",
|
||||||
|
|
||||||
electric="mess/electric.png",
|
electric="mess/electric.png",
|
||||||
|
hbm="mess/hbm.png",
|
||||||
}
|
}
|
||||||
local list={}
|
local list={}
|
||||||
local count=0
|
local count=0
|
||||||
|
|||||||
@@ -849,8 +849,19 @@ function love.touchreleased(id,x,y)
|
|||||||
end
|
end
|
||||||
function love.keypressed(i)
|
function love.keypressed(i)
|
||||||
mouseShow=false
|
mouseShow=false
|
||||||
if SCN.swapping then return end
|
if not devMode then
|
||||||
if devMode then
|
if i~="f8"then
|
||||||
|
if SCN.swapping then return end
|
||||||
|
|
||||||
|
if keyDown[SCN.cur]then keyDown[SCN.cur](i)
|
||||||
|
elseif i=="escape"then SCN.back()
|
||||||
|
else WIDGET.keyPressed(i)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
devMode=1
|
||||||
|
TEXT.show("DEBUG ON",640,360,80,"fly",.8)
|
||||||
|
end
|
||||||
|
else
|
||||||
if i=="f5"then
|
if i=="f5"then
|
||||||
print("DEBUG:")
|
print("DEBUG:")
|
||||||
elseif i=="f8"then devMode=nil TEXT.show("DEBUG OFF",640,360,80,"fly",.8)
|
elseif i=="f8"then devMode=nil TEXT.show("DEBUG OFF",640,360,80,"fly",.8)
|
||||||
@@ -891,14 +902,6 @@ function love.keypressed(i)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
elseif i=="f8"then
|
|
||||||
devMode=1
|
|
||||||
TEXT.show("DEBUG ON",640,360,80,"fly",.8)
|
|
||||||
else
|
|
||||||
if keyDown[SCN.cur]then keyDown[SCN.cur](i)
|
|
||||||
elseif i=="escape"then SCN.back()
|
|
||||||
else WIDGET.keyPressed(i)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
function love.keyreleased(i)
|
function love.keyreleased(i)
|
||||||
@@ -987,6 +990,7 @@ end
|
|||||||
function love.focus(f)
|
function love.focus(f)
|
||||||
if f then
|
if f then
|
||||||
TASK.new(TICK.autoResize,{0})
|
TASK.new(TICK.autoResize,{0})
|
||||||
|
love.timer.step()
|
||||||
elseif SCN.cur=="play"and setting.autoPause then
|
elseif SCN.cur=="play"and setting.autoPause then
|
||||||
pauseGame()
|
pauseGame()
|
||||||
end
|
end
|
||||||
@@ -994,25 +998,33 @@ end
|
|||||||
local scs={1,2,1,2,1,2,1,2,1,2,1.5,1.5,.5,2.5}
|
local scs={1,2,1,2,1,2,1,2,1,2,1.5,1.5,.5,2.5}
|
||||||
local devColor={
|
local devColor={
|
||||||
color.white,
|
color.white,
|
||||||
color.lightMagenta,
|
color.lMagenta,
|
||||||
color.lightGreen,
|
color.lGreen,
|
||||||
color.lightBlue,
|
color.lBlue,
|
||||||
}
|
}
|
||||||
local FPS=love.timer.getFPS
|
local FPS=love.timer.getFPS
|
||||||
love.draw,love.update=nil
|
love.draw,love.update=nil
|
||||||
function love.run()
|
function love.run()
|
||||||
local T=love.timer
|
local T=love.timer
|
||||||
local STEP,GETDelta,WAIT=T.step,T.getDelta,T.sleep
|
local STEP,GETDelta,WAIT=T.step,T.getDelta,T.sleep
|
||||||
|
local mini=love.window.isMinimized
|
||||||
|
local PUMP,POLL=love.event.pump,love.event.poll
|
||||||
|
|
||||||
|
local waitTime=1/60
|
||||||
|
local LIST={}
|
||||||
local lastFrame=T.getTime()
|
local lastFrame=T.getTime()
|
||||||
local lastFreshPow=lastFrame
|
local lastFreshPow=lastFrame
|
||||||
local FCT=0--framedraw counter
|
local FCT=0--framedraw counter
|
||||||
local mini=love.window.isMinimized
|
|
||||||
local PUMP,POLL=love.event.pump,love.event.poll
|
|
||||||
love.resize(gc.getWidth(),gc.getHeight())
|
love.resize(gc.getWidth(),gc.getHeight())
|
||||||
SCN.init("load")--Scene Launch
|
SCN.init("load")--Scene Launch
|
||||||
marking=true
|
marking=true
|
||||||
|
|
||||||
return function()
|
return function()
|
||||||
local _
|
local _
|
||||||
|
|
||||||
|
lastFrame=Timer()
|
||||||
|
|
||||||
--EVENT
|
--EVENT
|
||||||
PUMP()
|
PUMP()
|
||||||
for N,a,b,c,d,e in POLL()do
|
for N,a,b,c,d,e in POLL()do
|
||||||
@@ -1025,7 +1037,8 @@ function love.run()
|
|||||||
end
|
end
|
||||||
|
|
||||||
--UPDATE
|
--UPDATE
|
||||||
STEP()local dt=GETDelta()
|
STEP()
|
||||||
|
local dt=GETDelta()
|
||||||
TASK.update()
|
TASK.update()
|
||||||
VOC.update()
|
VOC.update()
|
||||||
BG.update(dt)
|
BG.update(dt)
|
||||||
@@ -1045,8 +1058,14 @@ function love.run()
|
|||||||
BG.draw()
|
BG.draw()
|
||||||
gc.push("transform")
|
gc.push("transform")
|
||||||
gc.replaceTransform(xOy)
|
gc.replaceTransform(xOy)
|
||||||
|
|
||||||
|
--Draw scene contents
|
||||||
if Pnt[SCN.cur]then Pnt[SCN.cur]()end
|
if Pnt[SCN.cur]then Pnt[SCN.cur]()end
|
||||||
WIDGET.draw()--Draw widgets
|
|
||||||
|
--Draw widgets
|
||||||
|
WIDGET.draw()
|
||||||
|
|
||||||
|
--Draw cursor
|
||||||
if mouseShow then
|
if mouseShow then
|
||||||
local r=Timer()*.5
|
local r=Timer()*.5
|
||||||
local R=int(r)%7+1
|
local R=int(r)%7+1
|
||||||
@@ -1055,26 +1074,30 @@ function love.run()
|
|||||||
gc.draw(TEXTURE.miniBlock[R],mx,my,Timer()%3.1416*4,20,20,scs[2*R]-.5,#blocks[R][0]-scs[2*R-1]+.5)
|
gc.draw(TEXTURE.miniBlock[R],mx,my,Timer()%3.1416*4,20,20,scs[2*R]-.5,#blocks[R][0]-scs[2*R-1]+.5)
|
||||||
gc.setColor(1,1,1,.5)gc.circle("fill",mx,my,5)
|
gc.setColor(1,1,1,.5)gc.circle("fill",mx,my,5)
|
||||||
gc.setColor(1,1,1)gc.circle("fill",mx,my,3)
|
gc.setColor(1,1,1)gc.circle("fill",mx,my,3)
|
||||||
end--Awesome mouse!
|
end
|
||||||
sysFX.draw()
|
sysFX.draw()
|
||||||
TEXT.draw()
|
TEXT.draw()
|
||||||
gc.pop()
|
gc.pop()
|
||||||
|
|
||||||
|
--Draw power info.
|
||||||
gc.setColor(1,1,1)
|
gc.setColor(1,1,1)
|
||||||
if setting.powerInfo then
|
if setting.powerInfo then
|
||||||
gc.draw(infoCanvas,0,0,0,scr.k)
|
gc.draw(infoCanvas,0,0,0,scr.k)
|
||||||
end
|
end
|
||||||
--Power Info
|
|
||||||
|
|
||||||
|
--Draw scene swapping animation
|
||||||
if SCN.swapping then
|
if SCN.swapping then
|
||||||
_=SCN.swap
|
_=SCN.swap
|
||||||
_.draw(_.time)
|
_.draw(_.time)
|
||||||
end--Scene swapping animation
|
end
|
||||||
|
|
||||||
setFont(15)
|
--Draw FPS
|
||||||
gc.setColor(1,1,1)
|
gc.setColor(1,1,1)
|
||||||
|
setFont(15)
|
||||||
_=scr.h-20
|
_=scr.h-20
|
||||||
gc.print(FPS(),5,_)
|
gc.print(FPS(),5,_)
|
||||||
|
|
||||||
|
--Debug info.
|
||||||
if devMode then
|
if devMode then
|
||||||
gc.setColor(devColor[devMode])
|
gc.setColor(devColor[devMode])
|
||||||
gc.print("Cache used:"..gcinfo(),5,_-20)
|
gc.print("Cache used:"..gcinfo(),5,_-20)
|
||||||
@@ -1082,21 +1105,26 @@ function love.run()
|
|||||||
gc.print("Mouse:"..mx.." "..my,5,_-60)
|
gc.print("Mouse:"..mx.." "..my,5,_-60)
|
||||||
gc.print("Voices:"..VOC.getCount(),5,_-80)
|
gc.print("Voices:"..VOC.getCount(),5,_-80)
|
||||||
gc.print("Tasks:"..TASK.getCount(),5,_-100)
|
gc.print("Tasks:"..TASK.getCount(),5,_-100)
|
||||||
|
ins(LIST,1,dt)
|
||||||
|
rem(LIST,126)
|
||||||
|
for i=1,#LIST do
|
||||||
|
gc.rectangle("fill",900+2*i,_,2,-LIST[i]*4000)
|
||||||
|
end
|
||||||
if devMode==3 then love.timer.sleep(.26)
|
if devMode==3 then love.timer.sleep(.26)
|
||||||
elseif devMode==4 then love.timer.sleep(.626)
|
elseif devMode==4 then love.timer.sleep(.626)
|
||||||
end
|
end
|
||||||
end--DEV info
|
end
|
||||||
|
|
||||||
gc.present()
|
gc.present()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
--FRAME TIME CTRL
|
--Keep 60fps
|
||||||
if Timer()-lastFrame<.058 then WAIT(.01)end
|
if FPS()>60 then
|
||||||
while Timer()-lastFrame<.0159 do WAIT(.001)end
|
WAIT(1/60+lastFrame-Timer())
|
||||||
|
end
|
||||||
|
|
||||||
--FRESH POWERINFO
|
--Fresh power info.
|
||||||
lastFrame=Timer()
|
|
||||||
if Timer()-lastFreshPow>3 and setting.powerInfo and SCN.cur~="load"then
|
if Timer()-lastFreshPow>3 and setting.powerInfo and SCN.cur~="load"then
|
||||||
updatePowerInfo()
|
updatePowerInfo()
|
||||||
lastFreshPow=Timer()
|
lastFreshPow=Timer()
|
||||||
|
|||||||
@@ -164,9 +164,9 @@ local langList={
|
|||||||
"程序:MrZ, FinnTenzor",
|
"程序:MrZ, FinnTenzor",
|
||||||
"美术:MrZ, (Gnyar)",
|
"美术:MrZ, (Gnyar)",
|
||||||
"音乐:MrZ, (T0722)",
|
"音乐:MrZ, (T0722)",
|
||||||
"音效:MrZ",
|
"音效/语音: MrZ, Miya",
|
||||||
"语音:Miya, MrZ",
|
"演出: 模电, 吉备宏纯",
|
||||||
"官网:渣渣120",
|
"官网: 渣渣120",
|
||||||
"",
|
"",
|
||||||
"特别感谢:",
|
"特别感谢:",
|
||||||
"Flyz, Farter, 蕴空之灵,",
|
"Flyz, Farter, 蕴空之灵,",
|
||||||
@@ -616,9 +616,9 @@ local langList={
|
|||||||
"程序:MrZ, FinnTenzor",
|
"程序:MrZ, FinnTenzor",
|
||||||
"美术:MrZ, (T0722, Gnyar)",
|
"美术:MrZ, (T0722, Gnyar)",
|
||||||
"音乐:MrZ, (T0722)",
|
"音乐:MrZ, (T0722)",
|
||||||
"音效:MrZ",
|
"音效/语音: MrZ, Miya",
|
||||||
"语音:Miya, MrZ",
|
"演出: 模电, 吉备宏纯",
|
||||||
"官网:渣渣120",
|
"官网: 渣渣120",
|
||||||
"",
|
"",
|
||||||
"特别感谢:",
|
"特别感谢:",
|
||||||
"Flyz, Farter, 蕴空之灵,",
|
"Flyz, Farter, 蕴空之灵,",
|
||||||
@@ -1065,8 +1065,8 @@ local langList={
|
|||||||
"Program: MrZ, FinnTenzor",
|
"Program: MrZ, FinnTenzor",
|
||||||
"Art: MrZ, (Gnyar)",
|
"Art: MrZ, (Gnyar)",
|
||||||
"Music: MrZ, (T0722)",
|
"Music: MrZ, (T0722)",
|
||||||
"Sound: MrZ",
|
"Voice/ Sound: MrZ, Miya",
|
||||||
"Voice: Miya, MrZ",
|
"Performance: 模电 吉备宏纯",
|
||||||
"Web: 渣渣120",
|
"Web: 渣渣120",
|
||||||
"",
|
"",
|
||||||
"Special Thanks:",
|
"Special Thanks:",
|
||||||
@@ -1502,8 +1502,8 @@ local langList={
|
|||||||
"Program: MrZ, FinnTenzor",
|
"Program: MrZ, FinnTenzor",
|
||||||
"Art: MrZ, (Gnyar)",
|
"Art: MrZ, (Gnyar)",
|
||||||
"Music: MrZ, (T0722)",
|
"Music: MrZ, (T0722)",
|
||||||
"Sound: MrZ",
|
"Voice/ Sound: MrZ, Miya",
|
||||||
"Voice: Miya, MrZ",
|
"Performance: 模电 吉备宏纯",
|
||||||
"Web: 渣渣120",
|
"Web: 渣渣120",
|
||||||
"",
|
"",
|
||||||
"Special Thanks:",
|
"Special Thanks:",
|
||||||
|
|||||||
@@ -9,12 +9,12 @@ local mStr=mStr
|
|||||||
local scr=scr
|
local scr=scr
|
||||||
local scs=require("parts/spinCenters")
|
local scs=require("parts/spinCenters")
|
||||||
local modeRankColor={
|
local modeRankColor={
|
||||||
color.bronze, --Rank1
|
color.bronze, --Rank1
|
||||||
color.lightGrey, --Rank2
|
color.lGrey, --Rank2
|
||||||
color.lightYellow, --Rank3
|
color.lYellow, --Rank3
|
||||||
color.lightPurple, --Rank4
|
color.lPurple, --Rank4
|
||||||
color.lightCyan, --Rank5
|
color.lCyan, --Rank5
|
||||||
color.purple, --Special
|
color.lGreen, --Special
|
||||||
}
|
}
|
||||||
local rankString={
|
local rankString={
|
||||||
"D","C","B","A","S",
|
"D","C","B","A","S",
|
||||||
|
|||||||
@@ -123,11 +123,11 @@ function sceneInit.pause(org)
|
|||||||
S.key.."/"..S.rotate.."/"..S.hold,
|
S.key.."/"..S.rotate.."/"..S.hold,
|
||||||
format("%d %.2fPPS",S.piece,S.piece/S.time),
|
format("%d %.2fPPS",S.piece,S.piece/S.time),
|
||||||
format("%d(%d) %.2fLPM",S.row,S.dig,S.row/S.time*60),
|
format("%d(%d) %.2fLPM",S.row,S.dig,S.row/S.time*60),
|
||||||
format("%d(%d)",S.atk,S.digatk),
|
format("%d(%d) %.2fAPM",S.atk,S.digatk,S.atk/S.time*60),
|
||||||
format("%d(%d-%d)",S.pend,S.recv,S.recv-S.pend),
|
format("%d(%d-%d)",S.pend,S.recv,S.recv-S.pend),
|
||||||
format("%d/%d/%d/%d",S.clears[1],S.clears[2],S.clears[3],S.clears[4]),
|
format("%d/%d/%d/%d",S.clears[1],S.clears[2],S.clears[3],S.clears[4]),
|
||||||
format("(%d)/%d/%d/%d",S.spins[1],S.spins[2],S.spins[3],S.spins[4]),
|
format("(%d)/%d/%d/%d",S.spins[1],S.spins[2],S.spins[3],S.spins[4]),
|
||||||
format("%d(+%d)/%d(%d)",S.b2b,S.b3b,S.pc,S.hpc),
|
format("%d/%d;%d/%d",S.b2b,S.b3b,S.pc,S.hpc),
|
||||||
format("%d[%.2f%%]",S.extraPiece,100*max(1-S.extraRate/S.piece,0)),
|
format("%d[%.2f%%]",S.extraPiece,100*max(1-S.extraRate/S.piece,0)),
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -207,7 +207,7 @@ function sceneInit.setting_key()
|
|||||||
}
|
}
|
||||||
end
|
end
|
||||||
function sceneInit.setting_touch()
|
function sceneInit.setting_touch()
|
||||||
BG.set("game2")
|
BG.set("game3")
|
||||||
sceneTemp={
|
sceneTemp={
|
||||||
default=1,
|
default=1,
|
||||||
snap=1,
|
snap=1,
|
||||||
|
|||||||
@@ -3,9 +3,9 @@ vec4 effect(vec4 color,Image text,vec2 pos,vec2 scr_pos){
|
|||||||
float x=scr_pos.x/w;
|
float x=scr_pos.x/w;
|
||||||
float y=scr_pos.y/h;
|
float y=scr_pos.y/h;
|
||||||
return vec4(
|
return vec4(
|
||||||
.8-y*.6-.2*sin(t/6.26),
|
.8-y*.7+.2*sin(t/6.26),
|
||||||
.3+.1*sin(t),
|
.2+y*.5+.15*sin(t/4.),
|
||||||
.2+x*.6,
|
.2+x*.6-.1*sin(t/2.83),
|
||||||
1.
|
1.
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -62,25 +62,6 @@ end
|
|||||||
function Tmr.main(dt)
|
function Tmr.main(dt)
|
||||||
players[1]:update(dt)
|
players[1]:update(dt)
|
||||||
end
|
end
|
||||||
local function dumpTable(L)
|
|
||||||
local s="{\n"
|
|
||||||
for k,v in next,L do
|
|
||||||
local T
|
|
||||||
T=type(k)
|
|
||||||
if T=="number"then k="["..k.."]="
|
|
||||||
elseif T=="string"then k=k.."="
|
|
||||||
else assert(false,"Error data type!")
|
|
||||||
end
|
|
||||||
T=type(v)
|
|
||||||
if T=="number"then v=tostring(v)
|
|
||||||
elseif T=="string"then v="\""..v.."\""
|
|
||||||
elseif T=="table"then v=dumpTable(v)
|
|
||||||
else assert(false,"Error data type!")
|
|
||||||
end
|
|
||||||
s=s..k..v..",\n"
|
|
||||||
end
|
|
||||||
return s.."}"
|
|
||||||
end
|
|
||||||
function Tmr.mode(dt)
|
function Tmr.mode(dt)
|
||||||
local cam=mapCam
|
local cam=mapCam
|
||||||
local x,y,k=cam.x,cam.y,cam.k
|
local x,y,k=cam.x,cam.y,cam.k
|
||||||
|
|||||||
@@ -396,21 +396,25 @@ function WIDGET.keyPressed(i)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
local keyMirror={
|
||||||
|
dpup="up",
|
||||||
|
dpdown="down",
|
||||||
|
dpleft="left",
|
||||||
|
dpright="right",
|
||||||
|
start="return",
|
||||||
|
back="escape",
|
||||||
|
}
|
||||||
function WIDGET.gamepadPressed(i)
|
function WIDGET.gamepadPressed(i)
|
||||||
if i=="dpup"or i=="dpdown"then
|
if i=="start"then
|
||||||
if WIDGET.sel then
|
if WIDGET.sel then
|
||||||
WIDGET.sel=i=="dpup"and WIDGET.sel.prev or WIDGET.sel.next or WIDGET.sel
|
WIDGET.press()
|
||||||
else
|
|
||||||
WIDGET.sel=select(2,next(WIDGET.active))
|
|
||||||
end
|
end
|
||||||
elseif i=="start"then
|
elseif i=="a"or i=="b"then
|
||||||
if WIDGET.sel then
|
local W=WIDGET.sel
|
||||||
WIDGET.press(WIDGET.sel)
|
if W then
|
||||||
end
|
if W.type=="button"then
|
||||||
elseif i=="dpleft"or i=="dpright"then
|
WIDGET.press()
|
||||||
if WIDGET.sel then
|
elseif W.type=="slider"then
|
||||||
local W=WIDGET.sel
|
|
||||||
if W.type=="slider"then
|
|
||||||
local p=W.disp()
|
local p=W.disp()
|
||||||
local P=i=="left"and(p>0 and p-1)or p<W.unit and p+1
|
local P=i=="left"and(p>0 and p-1)or p<W.unit and p+1
|
||||||
if p==P or not P then return end
|
if p==P or not P then return end
|
||||||
@@ -418,6 +422,8 @@ function WIDGET.gamepadPressed(i)
|
|||||||
if W.change then W.change()end
|
if W.change then W.change()end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
elseif i=="dpup"or i=="dpdown"or i=="dpleft"or i=="dpright"then
|
||||||
|
WIDGET.keyPressed(keyMirror[i])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -208,14 +208,16 @@ local Widgets={
|
|||||||
},
|
},
|
||||||
pause={
|
pause={
|
||||||
newButton({name="resume", x=640,y=290,w=240,h=100,color="white",font=30,code=function()resumeGame()end}),
|
newButton({name="resume", x=640,y=290,w=240,h=100,color="white",font=30,code=function()resumeGame()end}),
|
||||||
newButton({name="restart", x=640,y=445,w=240,h=100,color="white",font=33,code=function()
|
newButton({name="restart", x=640,y=445,w=240,h=100,color="white",font=33,
|
||||||
TASK.removeTask_code(TICK.autoPause)
|
code=function()
|
||||||
mergeStat(stat,players[1].stat)
|
TASK.removeTask_code(TICK.autoPause)
|
||||||
resetGameData()
|
mergeStat(stat,players[1].stat)
|
||||||
SCN.swapTo("play","none")
|
resetGameData()
|
||||||
|
SCN.swapTo("play","none")
|
||||||
end}),
|
end}),
|
||||||
newButton({name="setting", x=1120, y=70, w=240,h=90, color="lBlue",font=35,code=function()
|
newButton({name="setting", x=1120, y=70, w=240,h=90, color="lBlue",font=35,
|
||||||
SCN.goto("setting_sound")
|
code=function()
|
||||||
|
SCN.goto("setting_sound")
|
||||||
end}),
|
end}),
|
||||||
newButton({name="quit", x=640, y=600, w=240,h=100,color="white",font=35,code=BACK}),
|
newButton({name="quit", x=640, y=600, w=240,h=100,color="white",font=35,code=BACK}),
|
||||||
},
|
},
|
||||||
@@ -249,25 +251,31 @@ local Widgets={
|
|||||||
newSlider({name="clearFX", x=350, y=460,w=373,unit=3, font=32,disp=SETval("clearFX"), code=SETsto("clearFX")}),
|
newSlider({name="clearFX", x=350, y=460,w=373,unit=3, font=32,disp=SETval("clearFX"), code=SETsto("clearFX")}),
|
||||||
newSlider({name="shakeFX", x=350, y=520,w=373,unit=5, font=32,disp=SETval("shakeFX"), code=SETsto("shakeFX")}),
|
newSlider({name="shakeFX", x=350, y=520,w=373,unit=5, font=32,disp=SETval("shakeFX"), code=SETsto("shakeFX")}),
|
||||||
newSlider({name="atkFX", x=350, y=580,w=373,unit=5, font=32,disp=SETval("atkFX"), code=SETsto("atkFX")}),
|
newSlider({name="atkFX", x=350, y=580,w=373,unit=5, font=32,disp=SETval("atkFX"), code=SETsto("atkFX")}),
|
||||||
newSlider({name="frame", x=350, y=640,w=373,unit=10,font=30,disp=function()
|
newSlider({name="frame", x=350, y=640,w=373,unit=10,font=30,
|
||||||
|
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,
|
end,
|
||||||
code=function(i)setting.frameMul=i<5 and 5*i+20 or 10*i end}),
|
code=function(i)
|
||||||
|
setting.frameMul=i<5 and 5*i+20 or 10*i
|
||||||
|
end}),
|
||||||
newSwitch({name="text", x=1050, y=180, font=35,disp=SETval("text"),code=SETrev("text")}),
|
newSwitch({name="text", x=1050, y=180, font=35,disp=SETval("text"),code=SETrev("text")}),
|
||||||
newSwitch({name="warn", x=1050, y=260, font=35,disp=SETval("warn"),code=SETrev("warn")}),
|
newSwitch({name="warn", x=1050, y=260, font=35,disp=SETval("warn"),code=SETrev("warn")}),
|
||||||
newSwitch({name="fullscreen",x=1050,y=340, font=35,disp=SETval("fullscreen"),code=function()
|
newSwitch({name="fullscreen",x=1050,y=340, font=35,disp=SETval("fullscreen"),
|
||||||
setting.fullscreen=not setting.fullscreen
|
code=function()
|
||||||
love.window.setFullscreen(setting.fullscreen)
|
setting.fullscreen=not setting.fullscreen
|
||||||
love.resize(love.graphics.getWidth(),love.graphics.getHeight())
|
love.window.setFullscreen(setting.fullscreen)
|
||||||
|
love.resize(love.graphics.getWidth(),love.graphics.getHeight())
|
||||||
|
end}),
|
||||||
|
newSwitch({name="bg", x=1050, y=420, font=35,disp=SETval("bg"),
|
||||||
|
code=function()
|
||||||
|
BG.set("none")
|
||||||
|
setting.bg=not setting.bg
|
||||||
|
BG.set("space")
|
||||||
|
end}),
|
||||||
|
newSwitch({name="power", x=1050, y=500,font=35,disp=SETval("powerInfo"),
|
||||||
|
code=function()
|
||||||
|
setting.powerInfo=not setting.powerInfo
|
||||||
end}),
|
end}),
|
||||||
newSwitch({name="bg", x=1050, y=420, font=35,disp=SETval("bg"),code=function()
|
|
||||||
BG.set("none")
|
|
||||||
setting.bg=not setting.bg
|
|
||||||
BG.set("space")
|
|
||||||
end}),
|
|
||||||
newSwitch({name="power", x=1050, y=500,font=35,disp=SETval("powerInfo"),code=function()
|
|
||||||
setting.powerInfo=not setting.powerInfo
|
|
||||||
end}),
|
|
||||||
newButton({name="back", x=1140, y=650,w=200,h=80,color="white",font=40,code=BACK}),
|
newButton({name="back", x=1140, y=650,w=200,h=80,color="white",font=40,code=BACK}),
|
||||||
},
|
},
|
||||||
setting_sound={
|
setting_sound={
|
||||||
@@ -289,11 +297,12 @@ local Widgets={
|
|||||||
newSwitch({name="ihs", x=1100, y=290,font=30, disp=SETval("ihs"), code=SETrev("ihs")}),
|
newSwitch({name="ihs", x=1100, y=290,font=30, disp=SETval("ihs"), code=SETrev("ihs")}),
|
||||||
newSwitch({name="irs", x=1100, y=380,font=30, disp=SETval("irs"), code=SETrev("irs")}),
|
newSwitch({name="irs", x=1100, y=380,font=30, disp=SETval("irs"), code=SETrev("irs")}),
|
||||||
newSwitch({name="ims", x=1100, y=470,font=30, disp=SETval("ims"), code=SETrev("ims")}),
|
newSwitch({name="ims", x=1100, y=470,font=30, disp=SETval("ims"), code=SETrev("ims")}),
|
||||||
newButton({name="reset", x=160, y=580,w=200,h=100,color="lRed",font=40,code=function()
|
newButton({name="reset", x=160, y=580,w=200,h=100,color="lRed",font=40,
|
||||||
local _=setting
|
code=function()
|
||||||
_.das,_.arr=10,2
|
local _=setting
|
||||||
_.sddas,_.sdarr=0,2
|
_.das,_.arr=10,2
|
||||||
_.ihs,_.irs,_.ims=false,false,false
|
_.sddas,_.sdarr=0,2
|
||||||
|
_.ihs,_.irs,_.ims=false,false,false
|
||||||
end}),
|
end}),
|
||||||
newButton({name="back", x=1140,y=650,w=200,h=80,color="white",font=40,code=BACK}),
|
newButton({name="back", x=1140,y=650,w=200,h=80,color="white",font=40,code=BACK}),
|
||||||
},
|
},
|
||||||
@@ -327,43 +336,49 @@ local Widgets={
|
|||||||
--newButton({name="spin6",x=825,y=540,w=90,h=65,color="white",font=30,code=nextDir(6)}),--cannot rotate O
|
--newButton({name="spin6",x=825,y=540,w=90,h=65,color="white",font=30,code=nextDir(6)}),--cannot rotate O
|
||||||
newButton({name="spin7", x=970,y=540,w=90,h=65,color="white",font=30,code=nextDir(7)}),
|
newButton({name="spin7", x=970,y=540,w=90,h=65,color="white",font=30,code=nextDir(7)}),
|
||||||
|
|
||||||
newButton({name="skinR", x=200,y=640,w=220,h=80,color="lPurple",font=35,code=function()
|
newButton({name="skinR", x=200,y=640,w=220,h=80,color="lPurple",font=35,
|
||||||
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}
|
code=function()
|
||||||
SFX.play("rotate")
|
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}),
|
end}),
|
||||||
newButton({name="faceR", x=480,y=640,w=220,h=80,color="lRed",font=35,code=function()
|
newButton({name="faceR", x=480,y=640,w=220,h=80,color="lRed",font=35,
|
||||||
for i=1,25 do
|
code=function()
|
||||||
setting.face[i]=0
|
for i=1,25 do
|
||||||
end
|
setting.face[i]=0
|
||||||
SFX.play("hold")
|
end
|
||||||
|
SFX.play("hold")
|
||||||
end}),
|
end}),
|
||||||
newButton({name="back", x=1140,y=650,w=200,h=80,color="white",font=40,code=BACK}),
|
newButton({name="back", x=1140,y=650,w=200,h=80,color="white",font=40,code=BACK}),
|
||||||
},
|
},
|
||||||
setting_touch={
|
setting_touch={
|
||||||
newButton({name="default", x=520,y=80,w=170,h=80,color="white",font=35,code=function()
|
newButton({name="default", x=520,y=80,w=170,h=80,color="white",font=35,
|
||||||
local D=virtualkeySet[sceneTemp.default]
|
code=function()
|
||||||
for i=1,#VK_org do
|
local D=virtualkeySet[sceneTemp.default]
|
||||||
VK_org[i].ava=false
|
for i=1,#VK_org do
|
||||||
end
|
VK_org[i].ava=false
|
||||||
for n=1,#D do
|
|
||||||
local T=D[n]
|
|
||||||
if T[1]then
|
|
||||||
local B=VK_org[n]
|
|
||||||
B.ava=true
|
|
||||||
B.x,B.y,B.r=T[2],T[3],T[4]
|
|
||||||
end
|
end
|
||||||
end--Replace keys
|
for n=1,#D do
|
||||||
sceneTemp.default=sceneTemp.default%5+1
|
local T=D[n]
|
||||||
sceneTemp.sel=nil
|
if T[1]then
|
||||||
|
local B=VK_org[n]
|
||||||
|
B.ava=true
|
||||||
|
B.x,B.y,B.r=T[2],T[3],T[4]
|
||||||
|
end
|
||||||
|
end--Replace keys
|
||||||
|
sceneTemp.default=sceneTemp.default%5+1
|
||||||
|
sceneTemp.sel=nil
|
||||||
end}),
|
end}),
|
||||||
newButton({name="snap", x=760,y=80,w=170,h=80,color="white",font=35,code=function()
|
newButton({name="snap", x=760,y=80,w=170,h=80,color="white",font=35,
|
||||||
sceneTemp.snap=sceneTemp.snap%6+1
|
code=function()
|
||||||
|
sceneTemp.snap=sceneTemp.snap%6+1
|
||||||
end}),
|
end}),
|
||||||
newButton({name="option", x=520,y=180,w=170,h=80,color="white",font=40,code=function()
|
newButton({name="option", x=520,y=180,w=170,h=80,color="white",font=40,
|
||||||
SCN.goto("setting_touchSwitch")
|
code=function()
|
||||||
|
SCN.goto("setting_touchSwitch")
|
||||||
end}),
|
end}),
|
||||||
newButton({name="back", x=760,y=180,w=170,h=80,color="white",font=40,code=BACK}),
|
newButton({name="back", x=760,y=180,w=170,h=80,color="white",font=40,code=BACK}),
|
||||||
newSlider({name="size", x=450,y=265,w=460,unit=14,font=40,disp=function()
|
newSlider({name="size", x=450,y=265,w=460,unit=14,font=40,
|
||||||
|
disp=function()
|
||||||
return VK_org[sceneTemp.sel].r/10-1
|
return VK_org[sceneTemp.sel].r/10-1
|
||||||
end,
|
end,
|
||||||
code=function(v)
|
code=function(v)
|
||||||
@@ -373,7 +388,7 @@ local Widgets={
|
|||||||
end,
|
end,
|
||||||
hide=function()
|
hide=function()
|
||||||
return not sceneTemp.sel
|
return not sceneTemp.sel
|
||||||
end}),
|
end}),
|
||||||
},
|
},
|
||||||
setting_touchSwitch={
|
setting_touchSwitch={
|
||||||
newSwitch({name="b1", x=280, y=80, font=35,disp=VKAdisp(1),code=VKAcode(1)}),
|
newSwitch({name="b1", x=280, y=80, font=35,disp=VKAdisp(1),code=VKAcode(1)}),
|
||||||
@@ -403,14 +418,18 @@ local Widgets={
|
|||||||
newSlider({name="sfx", x=800, y=380, w=180,unit=4,font=40,change=function()SFX.play("virtualKey",setting.VKSFX*.25)end,disp=SETval("VKSFX"),code=SETsto("VKSFX")}),
|
newSlider({name="sfx", x=800, y=380, w=180,unit=4,font=40,change=function()SFX.play("virtualKey",setting.VKSFX*.25)end,disp=SETval("VKSFX"),code=SETsto("VKSFX")}),
|
||||||
newSlider({name="vib", x=800, y=460, w=180,unit=2,font=40,change=function()VIB(setting.VKVIB)end,disp=SETval("VKVIB"),code=SETsto("VKVIB")}),
|
newSlider({name="vib", x=800, y=460, w=180,unit=2,font=40,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")}),
|
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,color="white",font=32,code=function()
|
newButton({name="tkset", x=1120, y=420, w=240,h=80,color="white",font=32,
|
||||||
SCN.goto("setting_trackSetting")
|
code=function()
|
||||||
end,hide=function()return not setting.VKTrack end}),
|
SCN.goto("setting_trackSetting")
|
||||||
|
end,
|
||||||
|
hide=function()
|
||||||
|
return not setting.VKTrack
|
||||||
|
end}),
|
||||||
newSlider({name="alpha", x=840, y=540, w=400,unit=10,font=40,disp=SETval("VKAlpha"),code=SETsto("VKAlpha")}),
|
newSlider({name="alpha", x=840, y=540, w=400,unit=10,font=40,disp=SETval("VKAlpha"),code=SETsto("VKAlpha")}),
|
||||||
newButton({name="back", x=1120, y=620, w=200,h=80,color="white",font=45,code=BACK}),
|
newButton({name="back", x=1120, y=620, w=200,h=80,color="white",font=45,code=BACK}),
|
||||||
},
|
},
|
||||||
setting_trackSetting={
|
setting_trackSetting={
|
||||||
newSwitch({name="VKDodge", x=400, y=200, font=35,SETval("VKDodge"),SETrev("VKDodge")}),
|
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="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="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=1080, y=600, w=240, h=80,color="white",font=45,code=BACK}),
|
newButton({name="back", x=1080, y=600, w=240, h=80,color="white",font=45,code=BACK}),
|
||||||
@@ -441,40 +460,46 @@ local Widgets={
|
|||||||
newButton({name="back", x=640, y=620,w=200,h=80,color="white",font=40,code=BACK}),
|
newButton({name="back", x=640, y=620,w=200,h=80,color="white",font=40,code=BACK}),
|
||||||
},
|
},
|
||||||
debug={
|
debug={
|
||||||
newButton({name="killWTM", x=340, y=200,w=260,h=100,color="white",font=35,code=function()
|
newButton({name="killWTM", x=340, y=200,w=260,h=100,color="white",font=35,
|
||||||
marking=nil
|
code=function()
|
||||||
TEXT.show("\68\69\86\58\87\97\116\101\114\109\97\114\107\32\82\101\109\111\118\101\100",640,360,60,"stretch",.6)
|
marking=nil
|
||||||
SFX.play("clear")
|
TEXT.show("\68\69\86\58\87\97\116\101\114\109\97\114\107\32\82\101\109\111\118\101\100",640,360,60,"stretch",.6)
|
||||||
|
SFX.play("clear")
|
||||||
|
end,
|
||||||
|
hide=function()
|
||||||
|
return not marking
|
||||||
end}),
|
end}),
|
||||||
newButton({name="unlock", x=640,y=200,w=260,h=100,color="white",font=40,code=function()
|
newButton({name="unlock", x=640,y=200,w=260,h=100,color="white",font=40,
|
||||||
for name,M in next,Modes do
|
code=function()
|
||||||
if not modeRanks[name]then
|
for name,M in next,Modes do
|
||||||
modeRanks[name]=M.score and 0 or 6
|
if not modeRanks[name]then
|
||||||
end
|
modeRanks[name]=M.score and 0 or 6
|
||||||
end
|
|
||||||
FILE.saveUnlock()
|
|
||||||
TEXT.show("\68\69\86\58\85\78\76\79\67\75\65\76\76",640,360,60,"stretch",.6)
|
|
||||||
SFX.play("clear_2")
|
|
||||||
end}),
|
|
||||||
newButton({name="reset", x=940,y=200,w=260,h=100,color="white",font=40,code=function()
|
|
||||||
sceneTemp.ct=sceneTemp.ct+1
|
|
||||||
if sceneTemp.ct==1 then
|
|
||||||
TEXT.show("RESET ALL DATA?",640,360,50,"appear",.5)
|
|
||||||
elseif sceneTemp.ct==5 then
|
|
||||||
TEXT.show("SURE?????",640,360,80,"beat",.5)
|
|
||||||
elseif sceneTemp.ct==10 then
|
|
||||||
local L=love.filesystem.getDirectoryItems("")
|
|
||||||
for i=1,#L do
|
|
||||||
local s=L[i]
|
|
||||||
if s:sub(-4)==".dat"then
|
|
||||||
love.filesystem.remove(s)
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
SFX.play("clear_4")SFX.play("finesseError_long")
|
FILE.saveUnlock()
|
||||||
TEXT.clear()
|
TEXT.show("\68\69\86\58\85\78\76\79\67\75\65\76\76",640,360,60,"stretch",.6)
|
||||||
TEXT.show("ALL SAVING FILE DELETED",640,360,60,"stretch",.4)
|
SFX.play("clear_2")
|
||||||
SCN.back()
|
end}),
|
||||||
end
|
newButton({name="reset", x=940,y=200,w=260,h=100,color="white",font=40,
|
||||||
|
code=function()
|
||||||
|
sceneTemp.ct=sceneTemp.ct+1
|
||||||
|
if sceneTemp.ct==1 then
|
||||||
|
TEXT.show("RESET ALL DATA?",640,360,50,"appear",.5)
|
||||||
|
elseif sceneTemp.ct==5 then
|
||||||
|
TEXT.show("SURE?????",640,360,80,"beat",.5)
|
||||||
|
elseif sceneTemp.ct==10 then
|
||||||
|
local L=love.filesystem.getDirectoryItems("")
|
||||||
|
for i=1,#L do
|
||||||
|
local s=L[i]
|
||||||
|
if s:sub(-4)==".dat"then
|
||||||
|
love.filesystem.remove(s)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
SFX.play("clear_4")SFX.play("finesseError_long")
|
||||||
|
TEXT.clear()
|
||||||
|
TEXT.show("ALL SAVING FILE DELETED",640,360,60,"stretch",.4)
|
||||||
|
SCN.back()
|
||||||
|
end
|
||||||
end}),
|
end}),
|
||||||
newButton({name="back", x=640,y=620,w=200,h=80,color="white",font=40,code=BACK}),
|
newButton({name="back", x=640,y=620,w=200,h=80,color="white",font=40,code=BACK}),
|
||||||
},
|
},
|
||||||
|
|||||||
7
conf.lua
7
conf.lua
@@ -1,8 +1,7 @@
|
|||||||
gameVersion="Alpha V0.9.2"
|
gameVersion="Alpha V0.9.3"
|
||||||
function love.conf(t)
|
function love.conf(t)
|
||||||
t.identity="Techmino"--saving folder
|
t.identity="Techmino"--saving folder
|
||||||
t.version="11.1"
|
t.version="11.1"
|
||||||
t.console=false
|
|
||||||
t.gammacorrect=false
|
t.gammacorrect=false
|
||||||
t.appendidentity=true--search files in source then in save directory
|
t.appendidentity=true--search files in source then in save directory
|
||||||
t.accelerometerjoystick=false--accelerometer=joystick on ios/android
|
t.accelerometerjoystick=false--accelerometer=joystick on ios/android
|
||||||
@@ -17,12 +16,12 @@ function love.conf(t)
|
|||||||
W.resizable=true
|
W.resizable=true
|
||||||
W.fullscreentype="desktop"--"exclusive"
|
W.fullscreentype="desktop"--"exclusive"
|
||||||
W.fullscreen=false
|
W.fullscreen=false
|
||||||
W.vsync=0--unlimit
|
W.vsync=nil--60FPS
|
||||||
W.msaa=false--num of samples to use with multi-sampled antialiasing
|
W.msaa=false--num of samples to use with multi-sampled antialiasing
|
||||||
W.depth=0--bits/samp of depth buffer
|
W.depth=0--bits/samp of depth buffer
|
||||||
W.stencil=1--bits/samp of stencil buffer
|
W.stencil=1--bits/samp of stencil buffer
|
||||||
W.display=1--monitor ID
|
W.display=1--monitor ID
|
||||||
W.highdpi=false--high-dpi mode for the window on a Retina display
|
W.highdpi=true--high-dpi mode for the window on a Retina display
|
||||||
W.x,W.y=nil
|
W.x,W.y=nil
|
||||||
|
|
||||||
local M=t.modules
|
local M=t.modules
|
||||||
|
|||||||
BIN
image/mess/hbm.png
Normal file
BIN
image/mess/hbm.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.8 KiB |
@@ -12,7 +12,7 @@ local function score(P)
|
|||||||
end
|
end
|
||||||
|
|
||||||
return{
|
return{
|
||||||
color=color.lightBlue,
|
color=color.lBlue,
|
||||||
env={
|
env={
|
||||||
noFly=true,
|
noFly=true,
|
||||||
minarr=1,
|
minarr=1,
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
local int,rnd,min=math.floor,math.random,math.min
|
local int,rnd,min=math.floor,math.random,math.min
|
||||||
return{
|
return{
|
||||||
color=color.lightYellow,
|
color=color.lYellow,
|
||||||
env={
|
env={
|
||||||
drop=5,lock=60,
|
drop=5,lock=60,
|
||||||
fall=8,
|
fall=8,
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ local function newField(P)
|
|||||||
|
|
||||||
end
|
end
|
||||||
return{
|
return{
|
||||||
color=color.lightGrey,
|
color=color.lGrey,
|
||||||
env={
|
env={
|
||||||
drop=1e99,lock=1e99,
|
drop=1e99,lock=1e99,
|
||||||
hold=false,
|
hold=false,
|
||||||
|
|||||||
@@ -24,10 +24,11 @@ return{
|
|||||||
gc.clear(.26,.26,.26)
|
gc.clear(.26,.26,.26)
|
||||||
end
|
end
|
||||||
|
|
||||||
--MD Figure
|
--Figures
|
||||||
local t=Timer()
|
local t=Timer()
|
||||||
gc.setColor(.6+.3*sin(t*1.26),.6+.3*sin(t*2.6),.6+.3*sin(t*1.626),.2)
|
gc.setColor(1,1,1,.5+.2*sin(t))
|
||||||
gc.draw(IMG.electric,-162,-8,0,3.2)
|
gc.draw(IMG.hbm,-426,-86,0,1.5)
|
||||||
|
gc.draw(IMG.electric,326,142,0,2.6)
|
||||||
|
|
||||||
--Texts
|
--Texts
|
||||||
gc.setColor(.8,.8,.8)
|
gc.setColor(.8,.8,.8)
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ local function check_LVup(P)
|
|||||||
end
|
end
|
||||||
|
|
||||||
return{
|
return{
|
||||||
color=color.lightBlue,
|
color=color.lBlue,
|
||||||
env={
|
env={
|
||||||
noFly=true,
|
noFly=true,
|
||||||
das=16,arr=6,sddas=2,sdarr=2,
|
das=16,arr=6,sddas=2,sdarr=2,
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
local max,rnd=math.max,math.random
|
local max,rnd=math.max,math.random
|
||||||
return{
|
return{
|
||||||
color=color.lightYellow,
|
color=color.lYellow,
|
||||||
env={
|
env={
|
||||||
drop=10,lock=30,
|
drop=10,lock=30,
|
||||||
freshLimit=15,
|
freshLimit=15,
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
local format=string.format
|
local format=string.format
|
||||||
return{
|
return{
|
||||||
color=color.lightGrey,
|
color=color.lGrey,
|
||||||
env={
|
env={
|
||||||
drop=1e99,lock=1e99,
|
drop=1e99,lock=1e99,
|
||||||
oncehold=false,
|
oncehold=false,
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ local function score(P)
|
|||||||
end
|
end
|
||||||
|
|
||||||
return{
|
return{
|
||||||
color=color.lightGrey,
|
color=color.lGrey,
|
||||||
env={
|
env={
|
||||||
noFly=true,
|
noFly=true,
|
||||||
das=5,arr=1,
|
das=5,arr=1,
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ local function update_round(P)
|
|||||||
end
|
end
|
||||||
|
|
||||||
return{
|
return{
|
||||||
color=color.lightYellow,
|
color=color.lYellow,
|
||||||
env={
|
env={
|
||||||
drop=1e99,lock=1e99,
|
drop=1e99,lock=1e99,
|
||||||
oncehold=false,
|
oncehold=false,
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
return{
|
return{
|
||||||
color=color.lightYellow,
|
color=color.lYellow,
|
||||||
env={
|
env={
|
||||||
drop=60,lock=60,
|
drop=60,lock=60,
|
||||||
freshLimit=15,
|
freshLimit=15,
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
local gc=love.graphics
|
local gc=love.graphics
|
||||||
local rnd=math.random
|
local rnd=math.random
|
||||||
return{
|
return{
|
||||||
color=color.lightGrey,
|
color=color.lGrey,
|
||||||
env={
|
env={
|
||||||
drop=60,lock=60,
|
drop=60,lock=60,
|
||||||
target=1000,dropPiece=PLY.reach_winCheck,
|
target=1000,dropPiece=PLY.reach_winCheck,
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
local gc=love.graphics
|
local gc=love.graphics
|
||||||
local rnd=math.random
|
local rnd=math.random
|
||||||
return{
|
return{
|
||||||
color=color.lightBlue,
|
color=color.lBlue,
|
||||||
env={
|
env={
|
||||||
drop=60,lock=60,
|
drop=60,lock=60,
|
||||||
target=20,dropPiece=PLY.reach_winCheck,
|
target=20,dropPiece=PLY.reach_winCheck,
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
local max,rnd=math.max,math.random
|
local max,rnd=math.max,math.random
|
||||||
return{
|
return{
|
||||||
color=color.lightYellow,
|
color=color.lYellow,
|
||||||
env={
|
env={
|
||||||
drop=5,lock=60,
|
drop=5,lock=60,
|
||||||
fall=10,
|
fall=10,
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
local format=string.format
|
local format=string.format
|
||||||
|
|
||||||
return{
|
return{
|
||||||
color=color.lightYellow,
|
color=color.lYellow,
|
||||||
env={
|
env={
|
||||||
arr=0,
|
arr=0,
|
||||||
drop=1e99,lock=60,
|
drop=1e99,lock=60,
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ local function tech_check_hard(P)
|
|||||||
end
|
end
|
||||||
|
|
||||||
return{
|
return{
|
||||||
color=color.darkMagenta,
|
color=color.dMagenta,
|
||||||
env={
|
env={
|
||||||
drop=30,lock=60,
|
drop=30,lock=60,
|
||||||
freshLimit=15,
|
freshLimit=15,
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ local function tech_check_hard(P)
|
|||||||
end
|
end
|
||||||
|
|
||||||
return{
|
return{
|
||||||
color=color.darkRed,
|
color=color.dRed,
|
||||||
env={
|
env={
|
||||||
_20G=true,lock=60,
|
_20G=true,lock=60,
|
||||||
freshLimit=15,
|
freshLimit=15,
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ local function tech_check_hard(P)
|
|||||||
end
|
end
|
||||||
|
|
||||||
return{
|
return{
|
||||||
color=color.darkGreen,
|
color=color.dGreen,
|
||||||
env={
|
env={
|
||||||
oncehold=false,
|
oncehold=false,
|
||||||
drop=1e99,lock=1e99,
|
drop=1e99,lock=1e99,
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ local function selectTarget(P)
|
|||||||
end
|
end
|
||||||
|
|
||||||
return{
|
return{
|
||||||
color=color.lightYellow,
|
color=color.lYellow,
|
||||||
env={
|
env={
|
||||||
drop=15,lock=60,
|
drop=15,lock=60,
|
||||||
fall=20,
|
fall=20,
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ local function selectTarget(P)
|
|||||||
end
|
end
|
||||||
|
|
||||||
return{
|
return{
|
||||||
color=color.lightYellow,
|
color=color.lYellow,
|
||||||
env={
|
env={
|
||||||
drop=15,lock=60,
|
drop=15,lock=60,
|
||||||
fall=20,
|
fall=20,
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ local function check_tsd(P)
|
|||||||
end
|
end
|
||||||
|
|
||||||
return{
|
return{
|
||||||
color=color.lightYellow,
|
color=color.lYellow,
|
||||||
env={
|
env={
|
||||||
drop=60,lock=60,
|
drop=60,lock=60,
|
||||||
freshLimit=15,
|
freshLimit=15,
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
local gc=love.graphics
|
local gc=love.graphics
|
||||||
local warnTime={60,90,105,115,116,117,118,119,120}
|
local warnTime={60,90,105,115,116,117,118,119,120}
|
||||||
return{
|
return{
|
||||||
color=color.lightGrey,
|
color=color.lGrey,
|
||||||
env={
|
env={
|
||||||
noFly=true,
|
noFly=true,
|
||||||
minarr=1,minsdarr=1,
|
minarr=1,minsdarr=1,
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
return{
|
return{
|
||||||
color=color.lightGrey,
|
color=color.lGrey,
|
||||||
env={
|
env={
|
||||||
drop=120,lock=120,
|
drop=120,lock=120,
|
||||||
oncehold=false,target=200,
|
oncehold=false,target=200,
|
||||||
|
|||||||
@@ -476,17 +476,17 @@ end
|
|||||||
--------------------------<Paint>--------------------------
|
--------------------------<Paint>--------------------------
|
||||||
local frameColor={
|
local frameColor={
|
||||||
[0]=color.white,
|
[0]=color.white,
|
||||||
color.lightGreen,
|
color.lGreen,
|
||||||
color.lightBlue,
|
color.lBlue,
|
||||||
color.lightPurple,
|
color.lPurple,
|
||||||
color.lightOrange,
|
color.lOrange,
|
||||||
}
|
}
|
||||||
local attackColor={
|
local attackColor={
|
||||||
{color.darkGrey,color.white},
|
{color.dGrey,color.white},
|
||||||
{color.grey,color.white},
|
{color.grey,color.white},
|
||||||
{color.lightPurple,color.white},
|
{color.lPurple,color.white},
|
||||||
{color.lightRed,color.white},
|
{color.lRed,color.white},
|
||||||
{color.darkGreen,color.cyan},
|
{color.dGreen,color.cyan},
|
||||||
}
|
}
|
||||||
local RCPB={10,33,200,33,105,5,105,60}
|
local RCPB={10,33,200,33,105,5,105,60}
|
||||||
local function drawPixel(y,x,id)
|
local function drawPixel(y,x,id)
|
||||||
@@ -541,10 +541,15 @@ end
|
|||||||
local function Pdraw_norm(P)
|
local function Pdraw_norm(P)
|
||||||
local _
|
local _
|
||||||
gc.push("transform")
|
gc.push("transform")
|
||||||
gc.translate(P.x,P.y)gc.scale(P.size)
|
|
||||||
--Camera
|
--Camera
|
||||||
|
gc.translate(P.x,P.y)gc.scale(P.size)
|
||||||
|
|
||||||
|
--Fill field
|
||||||
gc.translate(150+P.fieldOff.x,70+P.fieldOff.y)
|
gc.translate(150+P.fieldOff.x,70+P.fieldOff.y)
|
||||||
gc.setColor(0,0,0,.6)gc.rectangle("fill",0,-10,300,610)
|
gc.setColor(0,0,0,.6)gc.rectangle("fill",0,-10,300,610)
|
||||||
|
|
||||||
|
--Grid
|
||||||
if P.gameEnv.grid then
|
if P.gameEnv.grid then
|
||||||
gc.setLineWidth(1)
|
gc.setLineWidth(1)
|
||||||
gc.setColor(1,1,1,.2)
|
gc.setColor(1,1,1,.2)
|
||||||
@@ -553,11 +558,13 @@ local function Pdraw_norm(P)
|
|||||||
y=30*(y-int(P.fieldBeneath/30))+P.fieldBeneath
|
y=30*(y-int(P.fieldBeneath/30))+P.fieldBeneath
|
||||||
gc.line(0,y,300,y)
|
gc.line(0,y,300,y)
|
||||||
end
|
end
|
||||||
end--Grid
|
end
|
||||||
|
|
||||||
|
--In-field things
|
||||||
gc.setLineWidth(2)
|
gc.setLineWidth(2)
|
||||||
gc.translate(0,P.fieldBeneath)
|
gc.translate(0,P.fieldBeneath)
|
||||||
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)
|
||||||
if P.falling==-1 then
|
if P.falling==-1 then--field block only
|
||||||
for j=int(P.fieldBeneath/30+1),#P.field do
|
for j=int(P.fieldBeneath/30+1),#P.field do
|
||||||
for i=1,10 do
|
for i=1,10 do
|
||||||
if P.field[j][i]>0 then
|
if P.field[j][i]>0 then
|
||||||
@@ -566,7 +573,7 @@ local function Pdraw_norm(P)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
else--field block only
|
else--Field with falling animation
|
||||||
local dy,stepY=0,P.gameEnv.smooth and(P.falling/(P.gameEnv.fall+1))^2.5*30 or 30
|
local dy,stepY=0,P.gameEnv.smooth and(P.falling/(P.gameEnv.fall+1))^2.5*30 or 30
|
||||||
local A=P.falling/P.gameEnv.fall
|
local A=P.falling/P.gameEnv.fall
|
||||||
local h,H=1,#P.field
|
local h,H=1,#P.field
|
||||||
@@ -586,12 +593,14 @@ local function Pdraw_norm(P)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
gc.translate(0,dy)
|
gc.translate(0,dy)
|
||||||
end--Field with falling animation
|
end
|
||||||
|
|
||||||
drawFXs(P)
|
drawFXs(P)
|
||||||
|
|
||||||
if P.cur and P.waiting==-1 then
|
if P.cur and P.waiting==-1 then
|
||||||
local curColor=P.cur.color
|
local curColor=P.cur.color
|
||||||
|
|
||||||
|
--Ghost
|
||||||
if P.gameEnv.ghost then
|
if P.gameEnv.ghost then
|
||||||
gc.setColor(1,1,1,.3)
|
gc.setColor(1,1,1,.3)
|
||||||
for i=1,P.r do for j=1,P.c do
|
for i=1,P.r do for j=1,P.c do
|
||||||
@@ -599,12 +608,13 @@ local function Pdraw_norm(P)
|
|||||||
drawPixel(i+P.y_img-1,j+P.curX-1,curColor)
|
drawPixel(i+P.y_img-1,j+P.curX-1,curColor)
|
||||||
end
|
end
|
||||||
end end
|
end end
|
||||||
end--Ghost
|
end
|
||||||
|
|
||||||
local dy=P.gameEnv.smooth and P.y_img~=P.curY and (min(P.dropDelay,1e99)/P.gameEnv.drop-1)*30 or 0
|
local dy=P.gameEnv.smooth and P.y_img~=P.curY and (min(P.dropDelay,1e99)/P.gameEnv.drop-1)*30 or 0
|
||||||
gc.translate(0,-dy)
|
gc.translate(0,-dy)
|
||||||
local trans=P.lockDelay/P.gameEnv.lock
|
local trans=P.lockDelay/P.gameEnv.lock
|
||||||
if P.gameEnv.block then
|
if P.gameEnv.block then
|
||||||
|
--White Boarder(indicate lockdelay)
|
||||||
SHADER.alpha:send("a",trans)
|
SHADER.alpha:send("a",trans)
|
||||||
gc.setShader(SHADER.alpha)
|
gc.setShader(SHADER.alpha)
|
||||||
_=blockSkin[curColor]
|
_=blockSkin[curColor]
|
||||||
@@ -616,14 +626,18 @@ local function Pdraw_norm(P)
|
|||||||
gc.draw(_,x+6,y)gc.draw(_,x,y+6)
|
gc.draw(_,x+6,y)gc.draw(_,x,y+6)
|
||||||
end
|
end
|
||||||
end end
|
end end
|
||||||
gc.setShader()--White Boarder(indicate lockdelay)
|
gc.setShader()
|
||||||
|
|
||||||
|
--Block
|
||||||
gc.setColor(1,1,1)
|
gc.setColor(1,1,1)
|
||||||
for i=1,P.r do for j=1,P.c do
|
for i=1,P.r do for j=1,P.c do
|
||||||
if P.cur.bk[i][j]then
|
if P.cur.bk[i][j]then
|
||||||
drawPixel(i+P.curY-1,j+P.curX-1,curColor)
|
drawPixel(i+P.curY-1,j+P.curX-1,curColor)
|
||||||
end
|
end
|
||||||
end end--Block
|
end end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--Rotate center
|
||||||
if P.gameEnv.center then
|
if P.gameEnv.center then
|
||||||
gc.setColor(1,1,1,trans)
|
gc.setColor(1,1,1,trans)
|
||||||
local x=30*(P.curX+P.sc[2]-1)-15
|
local x=30*(P.curX+P.sc[2]-1)-15
|
||||||
@@ -634,11 +648,11 @@ local function Pdraw_norm(P)
|
|||||||
gc.draw(IMG.spinCenter,x,600-30*(P.y_img+P.sc[1]-1)+15,nil,nil,nil,4,4)
|
gc.draw(IMG.spinCenter,x,600-30*(P.y_img+P.sc[1]-1)+15,nil,nil,nil,4,4)
|
||||||
goto E
|
goto E
|
||||||
end
|
end
|
||||||
end--Rotate center
|
end
|
||||||
gc.translate(0,dy)
|
gc.translate(0,dy)
|
||||||
end
|
end
|
||||||
::E::
|
::E::
|
||||||
gc.setScissor()--In-playField things
|
gc.setScissor()
|
||||||
gc.translate(0,-P.fieldBeneath)
|
gc.translate(0,-P.fieldBeneath)
|
||||||
gc.setColor(1,1,1)
|
gc.setColor(1,1,1)
|
||||||
gc.rectangle("line",-1,-11,302,612)--Boarder
|
gc.rectangle("line",-1,-11,302,612)--Boarder
|
||||||
@@ -682,7 +696,7 @@ local function Pdraw_norm(P)
|
|||||||
local a,b=P.b2b,P.b2b1 if a>b then a,b=b,a end
|
local a,b=P.b2b,P.b2b1 if a>b then a,b=b,a end
|
||||||
gc.setColor(.8,1,.2)
|
gc.setColor(.8,1,.2)
|
||||||
gc.rectangle("fill",-14,599,11,-b*.5)
|
gc.rectangle("fill",-14,599,11,-b*.5)
|
||||||
gc.setColor(P.b2b<40 and color.white or P.b2b<=1e3 and color.lightRed or color.lightBlue)
|
gc.setColor(P.b2b<40 and color.white or P.b2b<=1e3 and color.lRed or color.lBlue)
|
||||||
gc.rectangle("fill",-14,599,11,-a*.5)
|
gc.rectangle("fill",-14,599,11,-a*.5)
|
||||||
gc.setColor(1,1,1)
|
gc.setColor(1,1,1)
|
||||||
if Timer()%.5<.3 then
|
if Timer()%.5<.3 then
|
||||||
@@ -1171,6 +1185,7 @@ function player.pushLine(P,L,mir)
|
|||||||
P.fieldBeneath=P.fieldBeneath+120
|
P.fieldBeneath=P.fieldBeneath+120
|
||||||
P.curY=P.curY+#L
|
P.curY=P.curY+#L
|
||||||
P.y_img=P.y_img+#L
|
P.y_img=P.y_img+#L
|
||||||
|
P:freshgho()
|
||||||
end
|
end
|
||||||
function player.pushNext(P,L,mir)
|
function player.pushNext(P,L,mir)
|
||||||
for i=1,#L do
|
for i=1,#L do
|
||||||
|
|||||||
@@ -38,12 +38,12 @@ SKIN.libColor={
|
|||||||
color.purple,
|
color.purple,
|
||||||
color.magenta,
|
color.magenta,
|
||||||
color.pink,
|
color.pink,
|
||||||
color.darkGrey,
|
color.dGrey,
|
||||||
color.grey,
|
color.grey,
|
||||||
color.lightGrey,
|
color.lGrey,
|
||||||
color.darkPurple,
|
color.dPurple,
|
||||||
color.darkRed,
|
color.dRed,
|
||||||
color.darkGreen,
|
color.dGreen,
|
||||||
}
|
}
|
||||||
function SKIN.load()
|
function SKIN.load()
|
||||||
local _
|
local _
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ local S=[=[
|
|||||||
那没事了(T6300) 加油啊,钉钉动了的大哥哥(T3228)
|
那没事了(T6300) 加油啊,钉钉动了的大哥哥(T3228)
|
||||||
弥佑瑶 Alan 幽灵3383
|
弥佑瑶 Alan 幽灵3383
|
||||||
靏鸖龘龘 込余 saki
|
靏鸖龘龘 込余 saki
|
||||||
|
模电
|
||||||
[rmb10+]:
|
[rmb10+]:
|
||||||
八零哥 蕴空之灵 gggf127 dtg
|
八零哥 蕴空之灵 gggf127 dtg
|
||||||
ThTsOd Fireboos 金巧 10元
|
ThTsOd Fireboos 金巧 10元
|
||||||
@@ -17,7 +18,7 @@ local S=[=[
|
|||||||
HAGE KANOBU 闪电和拐棍 葡萄味的曼妥思
|
HAGE KANOBU 闪电和拐棍 葡萄味的曼妥思
|
||||||
世界沃德 蓝绿 天生的魔法师 琳雨空
|
世界沃德 蓝绿 天生的魔法师 琳雨空
|
||||||
T8779.易缄 吃水榴莲 诗情画意 星姐阿夸双推Man暗炎
|
T8779.易缄 吃水榴莲 诗情画意 星姐阿夸双推Man暗炎
|
||||||
[*Y] [*炎]
|
[*炎] [*Y] aaa222
|
||||||
Thanks!!!
|
Thanks!!!
|
||||||
|
|
||||||
Future outlook:
|
Future outlook:
|
||||||
@@ -48,7 +49,7 @@ Future outlook:
|
|||||||
field hidden
|
field hidden
|
||||||
up-hidden
|
up-hidden
|
||||||
low-hidden
|
low-hidden
|
||||||
next hidden
|
next[1] hidden
|
||||||
field flip(LR/UD)
|
field flip(LR/UD)
|
||||||
no fail(∞ lives)
|
no fail(∞ lives)
|
||||||
mini games:
|
mini games:
|
||||||
@@ -56,9 +57,10 @@ Future outlook:
|
|||||||
2048 (with next (with deadly mode))
|
2048 (with next (with deadly mode))
|
||||||
mine sweeper
|
mine sweeper
|
||||||
tank battle
|
tank battle
|
||||||
简易防沉迷系统
|
简易防沉迷系统(GMT+8限定)
|
||||||
|
new AI: task-Z
|
||||||
full-key control
|
full-key control
|
||||||
touch-drag control
|
drag control for mobile device
|
||||||
cool backgrounds
|
cool backgrounds
|
||||||
'Encrypt'(compile to byte code)
|
'Encrypt'(compile to byte code)
|
||||||
better drop FX
|
better drop FX
|
||||||
@@ -69,7 +71,19 @@ Future outlook:
|
|||||||
splashing block
|
splashing block
|
||||||
more graphic FXs & 3D features & animations
|
more graphic FXs & 3D features & animations
|
||||||
network game
|
network game
|
||||||
new AI: task-Z
|
|
||||||
|
0.9.3: Details Update
|
||||||
|
新内容:
|
||||||
|
中文更新说明
|
||||||
|
改动:
|
||||||
|
模电吉备历史性同框
|
||||||
|
暂停界面数据显示格式微调
|
||||||
|
代码:
|
||||||
|
性能优化,部分老设备运行更流畅
|
||||||
|
修复:
|
||||||
|
自定义序列相关的闪退
|
||||||
|
pc训练方块ghost浮空
|
||||||
|
|
||||||
0.9.2: Global Update
|
0.9.2: Global Update
|
||||||
new:
|
new:
|
||||||
independent spawning volume setting
|
independent spawning volume setting
|
||||||
|
|||||||
Reference in New Issue
Block a user