Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3bef016019 |
@@ -7,25 +7,25 @@ local color={
|
||||
cyan={0,1,1},
|
||||
grey={.6,.6,.6},
|
||||
|
||||
lightRed={1,.5,.5},
|
||||
lightGreen={.5,1,.5},
|
||||
lightBlue={.6,.6,1},
|
||||
lightCyan={.5,1,1},
|
||||
lightMagenta={1,.5,1},
|
||||
lightYellow={1,1,.5},
|
||||
lightPurple={.8,.4,1},
|
||||
lightOrange={1,.7,.3},
|
||||
lightGrey={.8,.8,.8},
|
||||
lRed={1,.5,.5},
|
||||
lGreen={.5,1,.5},
|
||||
lBlue={.6,.6,1},
|
||||
lCyan={.5,1,1},
|
||||
lMagenta={1,.5,1},
|
||||
lYellow={1,1,.5},
|
||||
lPurple={.8,.4,1},
|
||||
lOrange={1,.7,.3},
|
||||
lGrey={.8,.8,.8},
|
||||
|
||||
darkRed={.6,0,0},
|
||||
darkGreen={0,.6,0},
|
||||
darkBlue={0,0,.6},
|
||||
darkCyan={0,.6,.6},
|
||||
darkMagenta={.6,0,.6},
|
||||
darkYellow={.6,.6,0},
|
||||
darkPurple={.3,0,.6},
|
||||
darkOrange={.6,.4,0},
|
||||
darkGrey={.3,.3,.3},
|
||||
dRed={.6,0,0},
|
||||
dGreen={0,.6,0},
|
||||
dBlue={0,0,.6},
|
||||
dCyan={0,.6,.6},
|
||||
dMagenta={.6,0,.6},
|
||||
dYellow={.6,.6,0},
|
||||
dPurple={.3,0,.6},
|
||||
dOrange={.6,.4,0},
|
||||
dGrey={.3,.3,.3},
|
||||
|
||||
black={0,0,0},
|
||||
orange={1,.6,0},
|
||||
@@ -36,24 +36,4 @@ local color={
|
||||
white={1,1,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
|
||||
@@ -18,6 +18,7 @@ local IMG={
|
||||
miyaF4="miya/f4.png",
|
||||
|
||||
electric="mess/electric.png",
|
||||
hbm="mess/hbm.png",
|
||||
}
|
||||
local list={}
|
||||
local count=0
|
||||
|
||||
@@ -849,8 +849,19 @@ function love.touchreleased(id,x,y)
|
||||
end
|
||||
function love.keypressed(i)
|
||||
mouseShow=false
|
||||
if SCN.swapping then return end
|
||||
if devMode then
|
||||
if not 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
|
||||
print("DEBUG:")
|
||||
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
|
||||
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
|
||||
function love.keyreleased(i)
|
||||
@@ -987,6 +990,7 @@ end
|
||||
function love.focus(f)
|
||||
if f then
|
||||
TASK.new(TICK.autoResize,{0})
|
||||
love.timer.step()
|
||||
elseif SCN.cur=="play"and setting.autoPause then
|
||||
pauseGame()
|
||||
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 devColor={
|
||||
color.white,
|
||||
color.lightMagenta,
|
||||
color.lightGreen,
|
||||
color.lightBlue,
|
||||
color.lMagenta,
|
||||
color.lGreen,
|
||||
color.lBlue,
|
||||
}
|
||||
local FPS=love.timer.getFPS
|
||||
love.draw,love.update=nil
|
||||
function love.run()
|
||||
local T=love.timer
|
||||
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 lastFreshPow=lastFrame
|
||||
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())
|
||||
SCN.init("load")--Scene Launch
|
||||
marking=true
|
||||
|
||||
return function()
|
||||
local _
|
||||
|
||||
lastFrame=Timer()
|
||||
|
||||
--EVENT
|
||||
PUMP()
|
||||
for N,a,b,c,d,e in POLL()do
|
||||
@@ -1025,7 +1037,8 @@ function love.run()
|
||||
end
|
||||
|
||||
--UPDATE
|
||||
STEP()local dt=GETDelta()
|
||||
STEP()
|
||||
local dt=GETDelta()
|
||||
TASK.update()
|
||||
VOC.update()
|
||||
BG.update(dt)
|
||||
@@ -1045,8 +1058,14 @@ function love.run()
|
||||
BG.draw()
|
||||
gc.push("transform")
|
||||
gc.replaceTransform(xOy)
|
||||
|
||||
--Draw scene contents
|
||||
if Pnt[SCN.cur]then Pnt[SCN.cur]()end
|
||||
WIDGET.draw()--Draw widgets
|
||||
|
||||
--Draw widgets
|
||||
WIDGET.draw()
|
||||
|
||||
--Draw cursor
|
||||
if mouseShow then
|
||||
local r=Timer()*.5
|
||||
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.setColor(1,1,1,.5)gc.circle("fill",mx,my,5)
|
||||
gc.setColor(1,1,1)gc.circle("fill",mx,my,3)
|
||||
end--Awesome mouse!
|
||||
end
|
||||
sysFX.draw()
|
||||
TEXT.draw()
|
||||
gc.pop()
|
||||
|
||||
--Draw power info.
|
||||
gc.setColor(1,1,1)
|
||||
if setting.powerInfo then
|
||||
gc.draw(infoCanvas,0,0,0,scr.k)
|
||||
end
|
||||
--Power Info
|
||||
|
||||
--Draw scene swapping animation
|
||||
if SCN.swapping then
|
||||
_=SCN.swap
|
||||
_.draw(_.time)
|
||||
end--Scene swapping animation
|
||||
end
|
||||
|
||||
setFont(15)
|
||||
--Draw FPS
|
||||
gc.setColor(1,1,1)
|
||||
setFont(15)
|
||||
_=scr.h-20
|
||||
gc.print(FPS(),5,_)
|
||||
|
||||
--Debug info.
|
||||
if devMode then
|
||||
gc.setColor(devColor[devMode])
|
||||
gc.print("Cache used:"..gcinfo(),5,_-20)
|
||||
@@ -1082,21 +1105,26 @@ function love.run()
|
||||
gc.print("Mouse:"..mx.." "..my,5,_-60)
|
||||
gc.print("Voices:"..VOC.getCount(),5,_-80)
|
||||
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)
|
||||
elseif devMode==4 then love.timer.sleep(.626)
|
||||
end
|
||||
end--DEV info
|
||||
end
|
||||
|
||||
gc.present()
|
||||
end
|
||||
end
|
||||
|
||||
--FRAME TIME CTRL
|
||||
if Timer()-lastFrame<.058 then WAIT(.01)end
|
||||
while Timer()-lastFrame<.0159 do WAIT(.001)end
|
||||
--Keep 60fps
|
||||
if FPS()>60 then
|
||||
WAIT(1/60+lastFrame-Timer())
|
||||
end
|
||||
|
||||
--FRESH POWERINFO
|
||||
lastFrame=Timer()
|
||||
--Fresh power info.
|
||||
if Timer()-lastFreshPow>3 and setting.powerInfo and SCN.cur~="load"then
|
||||
updatePowerInfo()
|
||||
lastFreshPow=Timer()
|
||||
|
||||
@@ -164,9 +164,9 @@ local langList={
|
||||
"程序:MrZ, FinnTenzor",
|
||||
"美术:MrZ, (Gnyar)",
|
||||
"音乐:MrZ, (T0722)",
|
||||
"音效:MrZ",
|
||||
"语音:Miya, MrZ",
|
||||
"官网:渣渣120",
|
||||
"音效/语音: MrZ, Miya",
|
||||
"演出: 模电, 吉备宏纯",
|
||||
"官网: 渣渣120",
|
||||
"",
|
||||
"特别感谢:",
|
||||
"Flyz, Farter, 蕴空之灵,",
|
||||
@@ -616,9 +616,9 @@ local langList={
|
||||
"程序:MrZ, FinnTenzor",
|
||||
"美术:MrZ, (T0722, Gnyar)",
|
||||
"音乐:MrZ, (T0722)",
|
||||
"音效:MrZ",
|
||||
"语音:Miya, MrZ",
|
||||
"官网:渣渣120",
|
||||
"音效/语音: MrZ, Miya",
|
||||
"演出: 模电, 吉备宏纯",
|
||||
"官网: 渣渣120",
|
||||
"",
|
||||
"特别感谢:",
|
||||
"Flyz, Farter, 蕴空之灵,",
|
||||
@@ -1065,8 +1065,8 @@ local langList={
|
||||
"Program: MrZ, FinnTenzor",
|
||||
"Art: MrZ, (Gnyar)",
|
||||
"Music: MrZ, (T0722)",
|
||||
"Sound: MrZ",
|
||||
"Voice: Miya, MrZ",
|
||||
"Voice/ Sound: MrZ, Miya",
|
||||
"Performance: 模电 吉备宏纯",
|
||||
"Web: 渣渣120",
|
||||
"",
|
||||
"Special Thanks:",
|
||||
@@ -1502,8 +1502,8 @@ local langList={
|
||||
"Program: MrZ, FinnTenzor",
|
||||
"Art: MrZ, (Gnyar)",
|
||||
"Music: MrZ, (T0722)",
|
||||
"Sound: MrZ",
|
||||
"Voice: Miya, MrZ",
|
||||
"Voice/ Sound: MrZ, Miya",
|
||||
"Performance: 模电 吉备宏纯",
|
||||
"Web: 渣渣120",
|
||||
"",
|
||||
"Special Thanks:",
|
||||
|
||||
@@ -9,12 +9,12 @@ local mStr=mStr
|
||||
local scr=scr
|
||||
local scs=require("parts/spinCenters")
|
||||
local modeRankColor={
|
||||
color.bronze, --Rank1
|
||||
color.lightGrey, --Rank2
|
||||
color.lightYellow, --Rank3
|
||||
color.lightPurple, --Rank4
|
||||
color.lightCyan, --Rank5
|
||||
color.purple, --Special
|
||||
color.bronze, --Rank1
|
||||
color.lGrey, --Rank2
|
||||
color.lYellow, --Rank3
|
||||
color.lPurple, --Rank4
|
||||
color.lCyan, --Rank5
|
||||
color.lGreen, --Special
|
||||
}
|
||||
local rankString={
|
||||
"D","C","B","A","S",
|
||||
|
||||
@@ -123,11 +123,11 @@ function sceneInit.pause(org)
|
||||
S.key.."/"..S.rotate.."/"..S.hold,
|
||||
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)",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/%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.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)),
|
||||
},
|
||||
|
||||
@@ -207,7 +207,7 @@ function sceneInit.setting_key()
|
||||
}
|
||||
end
|
||||
function sceneInit.setting_touch()
|
||||
BG.set("game2")
|
||||
BG.set("game3")
|
||||
sceneTemp={
|
||||
default=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 y=scr_pos.y/h;
|
||||
return vec4(
|
||||
.8-y*.6-.2*sin(t/6.26),
|
||||
.3+.1*sin(t),
|
||||
.2+x*.6,
|
||||
.8-y*.7+.2*sin(t/6.26),
|
||||
.2+y*.5+.15*sin(t/4.),
|
||||
.2+x*.6-.1*sin(t/2.83),
|
||||
1.
|
||||
);
|
||||
}
|
||||
@@ -62,25 +62,6 @@ end
|
||||
function Tmr.main(dt)
|
||||
players[1]:update(dt)
|
||||
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)
|
||||
local cam=mapCam
|
||||
local x,y,k=cam.x,cam.y,cam.k
|
||||
|
||||
@@ -150,7 +150,7 @@ function slider:draw()
|
||||
local x=x1+(x2-x1)*p/self.unit
|
||||
gc.line(x,y+7,x,y-7)
|
||||
end
|
||||
|
||||
|
||||
--Axis
|
||||
gc.setLineWidth(4)
|
||||
gc.line(x1,y,x2,y)
|
||||
@@ -244,7 +244,7 @@ function WIDGET.newSwitch(D)
|
||||
|
||||
x= D.x,
|
||||
y= D.y,
|
||||
|
||||
|
||||
cx= D.x+25,
|
||||
cy= D.y,
|
||||
resCtr={
|
||||
@@ -331,7 +331,7 @@ function WIDGET.keyPressed(i)
|
||||
WIDGET.press()
|
||||
end
|
||||
elseif kb.isDown("lshift","lalt","lctrl")then
|
||||
--when hold [↑], control slider with left/right
|
||||
--when hold [↑], control slider with left/right
|
||||
if i=="left"or i=="right"then
|
||||
local W=WIDGET.sel
|
||||
if W then
|
||||
@@ -396,21 +396,25 @@ function WIDGET.keyPressed(i)
|
||||
end
|
||||
end
|
||||
end
|
||||
local keyMirror={
|
||||
dpup="up",
|
||||
dpdown="down",
|
||||
dpleft="left",
|
||||
dpright="right",
|
||||
start="return",
|
||||
back="escape",
|
||||
}
|
||||
function WIDGET.gamepadPressed(i)
|
||||
if i=="dpup"or i=="dpdown"then
|
||||
if i=="start"then
|
||||
if WIDGET.sel then
|
||||
WIDGET.sel=i=="dpup"and WIDGET.sel.prev or WIDGET.sel.next or WIDGET.sel
|
||||
else
|
||||
WIDGET.sel=select(2,next(WIDGET.active))
|
||||
WIDGET.press()
|
||||
end
|
||||
elseif i=="start"then
|
||||
if WIDGET.sel then
|
||||
WIDGET.press(WIDGET.sel)
|
||||
end
|
||||
elseif i=="dpleft"or i=="dpright"then
|
||||
if WIDGET.sel then
|
||||
local W=WIDGET.sel
|
||||
if W.type=="slider"then
|
||||
elseif i=="a"or i=="b"then
|
||||
local W=WIDGET.sel
|
||||
if W then
|
||||
if W.type=="button"then
|
||||
WIDGET.press()
|
||||
elseif W.type=="slider"then
|
||||
local p=W.disp()
|
||||
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
|
||||
@@ -418,6 +422,8 @@ function WIDGET.gamepadPressed(i)
|
||||
if W.change then W.change()end
|
||||
end
|
||||
end
|
||||
elseif i=="dpup"or i=="dpdown"or i=="dpleft"or i=="dpright"then
|
||||
WIDGET.keyPressed(keyMirror[i])
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -208,14 +208,16 @@ local Widgets={
|
||||
},
|
||||
pause={
|
||||
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()
|
||||
TASK.removeTask_code(TICK.autoPause)
|
||||
mergeStat(stat,players[1].stat)
|
||||
resetGameData()
|
||||
SCN.swapTo("play","none")
|
||||
newButton({name="restart", x=640,y=445,w=240,h=100,color="white",font=33,
|
||||
code=function()
|
||||
TASK.removeTask_code(TICK.autoPause)
|
||||
mergeStat(stat,players[1].stat)
|
||||
resetGameData()
|
||||
SCN.swapTo("play","none")
|
||||
end}),
|
||||
newButton({name="setting", x=1120, y=70, w=240,h=90, color="lBlue",font=35,code=function()
|
||||
SCN.goto("setting_sound")
|
||||
newButton({name="setting", x=1120, y=70, w=240,h=90, color="lBlue",font=35,
|
||||
code=function()
|
||||
SCN.goto("setting_sound")
|
||||
end}),
|
||||
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="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="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
|
||||
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="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()
|
||||
setting.fullscreen=not setting.fullscreen
|
||||
love.window.setFullscreen(setting.fullscreen)
|
||||
love.resize(love.graphics.getWidth(),love.graphics.getHeight())
|
||||
newSwitch({name="fullscreen",x=1050,y=340, font=35,disp=SETval("fullscreen"),
|
||||
code=function()
|
||||
setting.fullscreen=not setting.fullscreen
|
||||
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}),
|
||||
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}),
|
||||
},
|
||||
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="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")}),
|
||||
newButton({name="reset", x=160, y=580,w=200,h=100,color="lRed",font=40,code=function()
|
||||
local _=setting
|
||||
_.das,_.arr=10,2
|
||||
_.sddas,_.sdarr=0,2
|
||||
_.ihs,_.irs,_.ims=false,false,false
|
||||
newButton({name="reset", x=160, y=580,w=200,h=100,color="lRed",font=40,
|
||||
code=function()
|
||||
local _=setting
|
||||
_.das,_.arr=10,2
|
||||
_.sddas,_.sdarr=0,2
|
||||
_.ihs,_.irs,_.ims=false,false,false
|
||||
end}),
|
||||
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="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()
|
||||
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")
|
||||
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}
|
||||
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
|
||||
end
|
||||
SFX.play("hold")
|
||||
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
|
||||
end
|
||||
SFX.play("hold")
|
||||
end}),
|
||||
newButton({name="back", x=1140,y=650,w=200,h=80,color="white",font=40,code=BACK}),
|
||||
},
|
||||
setting_touch={
|
||||
newButton({name="default", x=520,y=80,w=170,h=80,color="white",font=35,code=function()
|
||||
local D=virtualkeySet[sceneTemp.default]
|
||||
for i=1,#VK_org do
|
||||
VK_org[i].ava=false
|
||||
end
|
||||
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]
|
||||
newButton({name="default", x=520,y=80,w=170,h=80,color="white",font=35,
|
||||
code=function()
|
||||
local D=virtualkeySet[sceneTemp.default]
|
||||
for i=1,#VK_org do
|
||||
VK_org[i].ava=false
|
||||
end
|
||||
end--Replace keys
|
||||
sceneTemp.default=sceneTemp.default%5+1
|
||||
sceneTemp.sel=nil
|
||||
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--Replace keys
|
||||
sceneTemp.default=sceneTemp.default%5+1
|
||||
sceneTemp.sel=nil
|
||||
end}),
|
||||
newButton({name="snap", x=760,y=80,w=170,h=80,color="white",font=35,code=function()
|
||||
sceneTemp.snap=sceneTemp.snap%6+1
|
||||
newButton({name="snap", x=760,y=80,w=170,h=80,color="white",font=35,
|
||||
code=function()
|
||||
sceneTemp.snap=sceneTemp.snap%6+1
|
||||
end}),
|
||||
newButton({name="option", x=520,y=180,w=170,h=80,color="white",font=40,code=function()
|
||||
SCN.goto("setting_touchSwitch")
|
||||
newButton({name="option", x=520,y=180,w=170,h=80,color="white",font=40,
|
||||
code=function()
|
||||
SCN.goto("setting_touchSwitch")
|
||||
end}),
|
||||
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
|
||||
end,
|
||||
code=function(v)
|
||||
@@ -373,7 +388,7 @@ local Widgets={
|
||||
end,
|
||||
hide=function()
|
||||
return not sceneTemp.sel
|
||||
end}),
|
||||
end}),
|
||||
},
|
||||
setting_touchSwitch={
|
||||
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="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")}),
|
||||
newButton({name="tkset", x=1120, y=420, w=240,h=80,color="white",font=32,code=function()
|
||||
SCN.goto("setting_trackSetting")
|
||||
end,hide=function()return not setting.VKTrack end}),
|
||||
newButton({name="tkset", x=1120, y=420, w=240,h=80,color="white",font=32,
|
||||
code=function()
|
||||
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")}),
|
||||
newButton({name="back", x=1120, y=620, w=200,h=80,color="white",font=45,code=BACK}),
|
||||
},
|
||||
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="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}),
|
||||
@@ -441,40 +460,46 @@ local Widgets={
|
||||
newButton({name="back", x=640, y=620,w=200,h=80,color="white",font=40,code=BACK}),
|
||||
},
|
||||
debug={
|
||||
newButton({name="killWTM", x=340, y=200,w=260,h=100,color="white",font=35,code=function()
|
||||
marking=nil
|
||||
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")
|
||||
newButton({name="killWTM", x=340, y=200,w=260,h=100,color="white",font=35,
|
||||
code=function()
|
||||
marking=nil
|
||||
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}),
|
||||
newButton({name="unlock", x=640,y=200,w=260,h=100,color="white",font=40,code=function()
|
||||
for name,M in next,Modes do
|
||||
if not modeRanks[name]then
|
||||
modeRanks[name]=M.score and 0 or 6
|
||||
end
|
||||
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)
|
||||
newButton({name="unlock", x=640,y=200,w=260,h=100,color="white",font=40,
|
||||
code=function()
|
||||
for name,M in next,Modes do
|
||||
if not modeRanks[name]then
|
||||
modeRanks[name]=M.score and 0 or 6
|
||||
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
|
||||
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
|
||||
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}),
|
||||
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)
|
||||
t.identity="Techmino"--saving folder
|
||||
t.version="11.1"
|
||||
t.console=false
|
||||
t.gammacorrect=false
|
||||
t.appendidentity=true--search files in source then in save directory
|
||||
t.accelerometerjoystick=false--accelerometer=joystick on ios/android
|
||||
@@ -17,12 +16,12 @@ function love.conf(t)
|
||||
W.resizable=true
|
||||
W.fullscreentype="desktop"--"exclusive"
|
||||
W.fullscreen=false
|
||||
W.vsync=0--unlimit
|
||||
W.vsync=nil--60FPS
|
||||
W.msaa=false--num of samples to use with multi-sampled antialiasing
|
||||
W.depth=0--bits/samp of depth buffer
|
||||
W.stencil=1--bits/samp of stencil buffer
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
return{
|
||||
color=color.lightBlue,
|
||||
color=color.lBlue,
|
||||
env={
|
||||
noFly=true,
|
||||
minarr=1,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
local int,rnd,min=math.floor,math.random,math.min
|
||||
return{
|
||||
color=color.lightYellow,
|
||||
color=color.lYellow,
|
||||
env={
|
||||
drop=5,lock=60,
|
||||
fall=8,
|
||||
|
||||
@@ -7,7 +7,7 @@ local function newField(P)
|
||||
|
||||
end
|
||||
return{
|
||||
color=color.lightGrey,
|
||||
color=color.lGrey,
|
||||
env={
|
||||
drop=1e99,lock=1e99,
|
||||
hold=false,
|
||||
|
||||
@@ -24,11 +24,12 @@ return{
|
||||
gc.clear(.26,.26,.26)
|
||||
end
|
||||
|
||||
--MD Figure
|
||||
--Figures
|
||||
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.draw(IMG.electric,-162,-8,0,3.2)
|
||||
|
||||
gc.setColor(1,1,1,.5+.2*sin(t))
|
||||
gc.draw(IMG.hbm,-426,-86,0,1.5)
|
||||
gc.draw(IMG.electric,326,142,0,2.6)
|
||||
|
||||
--Texts
|
||||
gc.setColor(.8,.8,.8)
|
||||
mText(drawableText.line,-81,300)
|
||||
|
||||
@@ -14,7 +14,7 @@ local function check_LVup(P)
|
||||
end
|
||||
|
||||
return{
|
||||
color=color.lightBlue,
|
||||
color=color.lBlue,
|
||||
env={
|
||||
noFly=true,
|
||||
das=16,arr=6,sddas=2,sdarr=2,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
local max,rnd=math.max,math.random
|
||||
return{
|
||||
color=color.lightYellow,
|
||||
color=color.lYellow,
|
||||
env={
|
||||
drop=10,lock=30,
|
||||
freshLimit=15,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
local format=string.format
|
||||
return{
|
||||
color=color.lightGrey,
|
||||
color=color.lGrey,
|
||||
env={
|
||||
drop=1e99,lock=1e99,
|
||||
oncehold=false,
|
||||
|
||||
@@ -35,7 +35,7 @@ local function score(P)
|
||||
end
|
||||
|
||||
return{
|
||||
color=color.lightGrey,
|
||||
color=color.lGrey,
|
||||
env={
|
||||
noFly=true,
|
||||
das=5,arr=1,
|
||||
|
||||
@@ -11,7 +11,7 @@ local function update_round(P)
|
||||
end
|
||||
|
||||
return{
|
||||
color=color.lightYellow,
|
||||
color=color.lYellow,
|
||||
env={
|
||||
drop=1e99,lock=1e99,
|
||||
oncehold=false,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
return{
|
||||
color=color.lightYellow,
|
||||
color=color.lYellow,
|
||||
env={
|
||||
drop=60,lock=60,
|
||||
freshLimit=15,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
local gc=love.graphics
|
||||
local rnd=math.random
|
||||
return{
|
||||
color=color.lightGrey,
|
||||
color=color.lGrey,
|
||||
env={
|
||||
drop=60,lock=60,
|
||||
target=1000,dropPiece=PLY.reach_winCheck,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
local gc=love.graphics
|
||||
local rnd=math.random
|
||||
return{
|
||||
color=color.lightBlue,
|
||||
color=color.lBlue,
|
||||
env={
|
||||
drop=60,lock=60,
|
||||
target=20,dropPiece=PLY.reach_winCheck,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
local max,rnd=math.max,math.random
|
||||
return{
|
||||
color=color.lightYellow,
|
||||
color=color.lYellow,
|
||||
env={
|
||||
drop=5,lock=60,
|
||||
fall=10,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
local format=string.format
|
||||
|
||||
return{
|
||||
color=color.lightYellow,
|
||||
color=color.lYellow,
|
||||
env={
|
||||
arr=0,
|
||||
drop=1e99,lock=60,
|
||||
|
||||
@@ -9,7 +9,7 @@ local function tech_check_hard(P)
|
||||
end
|
||||
|
||||
return{
|
||||
color=color.darkMagenta,
|
||||
color=color.dMagenta,
|
||||
env={
|
||||
drop=30,lock=60,
|
||||
freshLimit=15,
|
||||
|
||||
@@ -9,7 +9,7 @@ local function tech_check_hard(P)
|
||||
end
|
||||
|
||||
return{
|
||||
color=color.darkRed,
|
||||
color=color.dRed,
|
||||
env={
|
||||
_20G=true,lock=60,
|
||||
freshLimit=15,
|
||||
|
||||
@@ -9,7 +9,7 @@ local function tech_check_hard(P)
|
||||
end
|
||||
|
||||
return{
|
||||
color=color.darkGreen,
|
||||
color=color.dGreen,
|
||||
env={
|
||||
oncehold=false,
|
||||
drop=1e99,lock=1e99,
|
||||
|
||||
@@ -16,7 +16,7 @@ local function selectTarget(P)
|
||||
end
|
||||
|
||||
return{
|
||||
color=color.lightYellow,
|
||||
color=color.lYellow,
|
||||
env={
|
||||
drop=15,lock=60,
|
||||
fall=20,
|
||||
|
||||
@@ -16,7 +16,7 @@ local function selectTarget(P)
|
||||
end
|
||||
|
||||
return{
|
||||
color=color.lightYellow,
|
||||
color=color.lYellow,
|
||||
env={
|
||||
drop=15,lock=60,
|
||||
fall=20,
|
||||
|
||||
@@ -9,7 +9,7 @@ local function check_tsd(P)
|
||||
end
|
||||
|
||||
return{
|
||||
color=color.lightYellow,
|
||||
color=color.lYellow,
|
||||
env={
|
||||
drop=60,lock=60,
|
||||
freshLimit=15,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
local gc=love.graphics
|
||||
local warnTime={60,90,105,115,116,117,118,119,120}
|
||||
return{
|
||||
color=color.lightGrey,
|
||||
color=color.lGrey,
|
||||
env={
|
||||
noFly=true,
|
||||
minarr=1,minsdarr=1,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
return{
|
||||
color=color.lightGrey,
|
||||
color=color.lGrey,
|
||||
env={
|
||||
drop=120,lock=120,
|
||||
oncehold=false,target=200,
|
||||
|
||||
@@ -476,17 +476,17 @@ end
|
||||
--------------------------<Paint>--------------------------
|
||||
local frameColor={
|
||||
[0]=color.white,
|
||||
color.lightGreen,
|
||||
color.lightBlue,
|
||||
color.lightPurple,
|
||||
color.lightOrange,
|
||||
color.lGreen,
|
||||
color.lBlue,
|
||||
color.lPurple,
|
||||
color.lOrange,
|
||||
}
|
||||
local attackColor={
|
||||
{color.darkGrey,color.white},
|
||||
{color.dGrey,color.white},
|
||||
{color.grey,color.white},
|
||||
{color.lightPurple,color.white},
|
||||
{color.lightRed,color.white},
|
||||
{color.darkGreen,color.cyan},
|
||||
{color.lPurple,color.white},
|
||||
{color.lRed,color.white},
|
||||
{color.dGreen,color.cyan},
|
||||
}
|
||||
local RCPB={10,33,200,33,105,5,105,60}
|
||||
local function drawPixel(y,x,id)
|
||||
@@ -541,10 +541,15 @@ end
|
||||
local function Pdraw_norm(P)
|
||||
local _
|
||||
gc.push("transform")
|
||||
gc.translate(P.x,P.y)gc.scale(P.size)
|
||||
|
||||
--Camera
|
||||
gc.translate(P.x,P.y)gc.scale(P.size)
|
||||
|
||||
--Fill field
|
||||
gc.translate(150+P.fieldOff.x,70+P.fieldOff.y)
|
||||
gc.setColor(0,0,0,.6)gc.rectangle("fill",0,-10,300,610)
|
||||
|
||||
--Grid
|
||||
if P.gameEnv.grid then
|
||||
gc.setLineWidth(1)
|
||||
gc.setColor(1,1,1,.2)
|
||||
@@ -553,11 +558,13 @@ local function Pdraw_norm(P)
|
||||
y=30*(y-int(P.fieldBeneath/30))+P.fieldBeneath
|
||||
gc.line(0,y,300,y)
|
||||
end
|
||||
end--Grid
|
||||
end
|
||||
|
||||
--In-field things
|
||||
gc.setLineWidth(2)
|
||||
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)
|
||||
if P.falling==-1 then
|
||||
if P.falling==-1 then--field block only
|
||||
for j=int(P.fieldBeneath/30+1),#P.field do
|
||||
for i=1,10 do
|
||||
if P.field[j][i]>0 then
|
||||
@@ -566,7 +573,7 @@ local function Pdraw_norm(P)
|
||||
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 A=P.falling/P.gameEnv.fall
|
||||
local h,H=1,#P.field
|
||||
@@ -586,12 +593,14 @@ local function Pdraw_norm(P)
|
||||
end
|
||||
end
|
||||
gc.translate(0,dy)
|
||||
end--Field with falling animation
|
||||
end
|
||||
|
||||
drawFXs(P)
|
||||
|
||||
if P.cur and P.waiting==-1 then
|
||||
local curColor=P.cur.color
|
||||
|
||||
--Ghost
|
||||
if P.gameEnv.ghost then
|
||||
gc.setColor(1,1,1,.3)
|
||||
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)
|
||||
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
|
||||
gc.translate(0,-dy)
|
||||
local trans=P.lockDelay/P.gameEnv.lock
|
||||
if P.gameEnv.block then
|
||||
--White Boarder(indicate lockdelay)
|
||||
SHADER.alpha:send("a",trans)
|
||||
gc.setShader(SHADER.alpha)
|
||||
_=blockSkin[curColor]
|
||||
@@ -616,14 +626,18 @@ local function Pdraw_norm(P)
|
||||
gc.draw(_,x+6,y)gc.draw(_,x,y+6)
|
||||
end
|
||||
end end
|
||||
gc.setShader()--White Boarder(indicate lockdelay)
|
||||
gc.setShader()
|
||||
|
||||
--Block
|
||||
gc.setColor(1,1,1)
|
||||
for i=1,P.r do for j=1,P.c do
|
||||
if P.cur.bk[i][j]then
|
||||
drawPixel(i+P.curY-1,j+P.curX-1,curColor)
|
||||
end
|
||||
end end--Block
|
||||
end end
|
||||
end
|
||||
|
||||
--Rotate center
|
||||
if P.gameEnv.center then
|
||||
gc.setColor(1,1,1,trans)
|
||||
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)
|
||||
goto E
|
||||
end
|
||||
end--Rotate center
|
||||
end
|
||||
gc.translate(0,dy)
|
||||
end
|
||||
::E::
|
||||
gc.setScissor()--In-playField things
|
||||
gc.setScissor()
|
||||
gc.translate(0,-P.fieldBeneath)
|
||||
gc.setColor(1,1,1)
|
||||
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
|
||||
gc.setColor(.8,1,.2)
|
||||
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.setColor(1,1,1)
|
||||
if Timer()%.5<.3 then
|
||||
@@ -1171,6 +1185,7 @@ function player.pushLine(P,L,mir)
|
||||
P.fieldBeneath=P.fieldBeneath+120
|
||||
P.curY=P.curY+#L
|
||||
P.y_img=P.y_img+#L
|
||||
P:freshgho()
|
||||
end
|
||||
function player.pushNext(P,L,mir)
|
||||
for i=1,#L do
|
||||
|
||||
@@ -38,12 +38,12 @@ SKIN.libColor={
|
||||
color.purple,
|
||||
color.magenta,
|
||||
color.pink,
|
||||
color.darkGrey,
|
||||
color.dGrey,
|
||||
color.grey,
|
||||
color.lightGrey,
|
||||
color.darkPurple,
|
||||
color.darkRed,
|
||||
color.darkGreen,
|
||||
color.lGrey,
|
||||
color.dPurple,
|
||||
color.dRed,
|
||||
color.dGreen,
|
||||
}
|
||||
function SKIN.load()
|
||||
local _
|
||||
|
||||
@@ -4,6 +4,7 @@ local S=[=[
|
||||
那没事了(T6300) 加油啊,钉钉动了的大哥哥(T3228)
|
||||
弥佑瑶 Alan 幽灵3383
|
||||
靏鸖龘龘 込余 saki
|
||||
模电
|
||||
[rmb10+]:
|
||||
八零哥 蕴空之灵 gggf127 dtg
|
||||
ThTsOd Fireboos 金巧 10元
|
||||
@@ -17,7 +18,7 @@ local S=[=[
|
||||
HAGE KANOBU 闪电和拐棍 葡萄味的曼妥思
|
||||
世界沃德 蓝绿 天生的魔法师 琳雨空
|
||||
T8779.易缄 吃水榴莲 诗情画意 星姐阿夸双推Man暗炎
|
||||
[*Y] [*炎]
|
||||
[*炎] [*Y] aaa222
|
||||
Thanks!!!
|
||||
|
||||
Future outlook:
|
||||
@@ -48,7 +49,7 @@ Future outlook:
|
||||
field hidden
|
||||
up-hidden
|
||||
low-hidden
|
||||
next hidden
|
||||
next[1] hidden
|
||||
field flip(LR/UD)
|
||||
no fail(∞ lives)
|
||||
mini games:
|
||||
@@ -56,9 +57,10 @@ Future outlook:
|
||||
2048 (with next (with deadly mode))
|
||||
mine sweeper
|
||||
tank battle
|
||||
简易防沉迷系统
|
||||
简易防沉迷系统(GMT+8限定)
|
||||
new AI: task-Z
|
||||
full-key control
|
||||
touch-drag control
|
||||
drag control for mobile device
|
||||
cool backgrounds
|
||||
'Encrypt'(compile to byte code)
|
||||
better drop FX
|
||||
@@ -69,7 +71,19 @@ Future outlook:
|
||||
splashing block
|
||||
more graphic FXs & 3D features & animations
|
||||
network game
|
||||
new AI: task-Z
|
||||
|
||||
0.9.3: Details Update
|
||||
新内容:
|
||||
中文更新说明
|
||||
改动:
|
||||
模电吉备历史性同框
|
||||
暂停界面数据显示格式微调
|
||||
代码:
|
||||
性能优化,部分老设备运行更流畅
|
||||
修复:
|
||||
自定义序列相关的闪退
|
||||
pc训练方块ghost浮空
|
||||
|
||||
0.9.2: Global Update
|
||||
new:
|
||||
independent spawning volume setting
|
||||
|
||||
Reference in New Issue
Block a user