0.9.2:调试界面,新背景,布局微调

This commit is contained in:
MrZ_26
2020-07-21 00:16:15 +08:00
parent ee99943ed9
commit ae650bd1ff
33 changed files with 305 additions and 330 deletions

View File

@@ -44,21 +44,6 @@ back.rgb={
) )
end, end,
}--Changing pure color }--Changing pure color
back.strap={
init=function()
t=0
end,
update=function(dt)
t=t+dt
end,
draw=function()
SHADER.strap:send("t",t*.626)
gc.setColor(.4,.626,.626)
gc.setShader(SHADER.strap)
gc.rectangle("fill",0,0,scr.w,scr.h)
gc.setShader()
end,
}--Horizonal ranbow
back.flink={ back.flink={
init=function() init=function()
t=0 t=0
@@ -95,63 +80,58 @@ back.aura={
back.game1={ back.game1={
init=function() init=function()
t=0 t=0
BG.resize(scr.w,scr.h) BG.resize(scr.w)
end, end,
resize=function(w,h) resize=function(w)
SHADER.rainbow:send("w",w*scr.dpi) SHADER.gradient1:send("w",w*scr.dpi)
SHADER.rainbow:send("h",h*scr.dpi)
end, end,
update=function(dt) update=function(dt)
t=t+dt t=t+dt
end, end,
draw=function() draw=function()
SHADER.rainbow:send("t",t) SHADER.gradient1:send("t",t)
gc.setColor(.6,.6,.6) gc.setShader(SHADER.gradient1)
gc.setShader(SHADER.rainbow)
gc.rectangle("fill",0,0,scr.w,scr.h) gc.rectangle("fill",0,0,scr.w,scr.h)
gc.setShader() gc.setShader()
end, end,
}--Rolling rainbow }--Horizonal red-blue gradient
back.game2={ back.game2={
init=function() init=function()
t=0 t=0
BG.resize(scr.w,scr.h) BG.resize(nil,scr.h)
end, end,
resize=function(w,h) resize=function(w,h)
SHADER.rainbow:send("w",w*scr.dpi) SHADER.gradient2:send("h",h*scr.dpi)
SHADER.rainbow:send("h",h*scr.dpi)
end, end,
update=function(dt) update=function(dt)
t=t+dt t=t+dt
end, end,
draw=function() draw=function()
SHADER.rainbow:send("t",t) SHADER.gradient2:send("t",t)
gc.setColor(.7,.4,.4) gc.setShader(SHADER.gradient2)
gc.setShader(SHADER.rainbow)
gc.rectangle("fill",0,0,scr.w,scr.h) gc.rectangle("fill",0,0,scr.w,scr.h)
gc.setShader() gc.setShader()
end, end,
}--Red rolling rainbow }--Vertical red-green gradient
back.game3={ back.game3={
init=function() init=function()
t=0 t=0
BG.resize(scr.w,scr.h) BG.resize(scr.w,scr.h)
end, end,
resize=function(w,h) resize=function(w,h)
SHADER.rainbow:send("w",w*scr.dpi) SHADER.gradient3:send("w",w*scr.dpi)
SHADER.rainbow:send("h",h*scr.dpi) SHADER.gradient3:send("h",h*scr.dpi)
end, end,
update=function(dt) update=function(dt)
t=t+dt t=t+dt
end, end,
draw=function() draw=function()
SHADER.rainbow:send("t",t) SHADER.gradient3:send("t",t)
gc.setColor(.5,.5,.8) gc.setShader(SHADER.gradient3)
gc.setShader(SHADER.rainbow)
gc.rectangle("fill",0,0,scr.w,scr.h) gc.rectangle("fill",0,0,scr.w,scr.h)
gc.setShader() gc.setShader()
end, end,
}--Blue rolling rainbow }--beautiful RGB
back.game4={ back.game4={
init=function() init=function()
t=0 t=0
@@ -160,11 +140,7 @@ back.game4={
t=t+dt t=t+dt
end, end,
draw=function() draw=function()
SHADER.strap:send("t",t*1.26)
gc.setColor(.5,.626,.74)
gc.setShader(SHADER.strap)
gc.rectangle("fill",0,0,scr.w,scr.h)
gc.setShader()
end, end,
}--Blue strap }--Blue strap
back.game5={ back.game5={
@@ -189,7 +165,7 @@ back.game6={
t=0 t=0
colorLib=_G.SKIN.libColor colorLib=_G.SKIN.libColor
colorSet=_G.setting.skin colorSet=_G.setting.skin
miniBlock=_G.miniBlock blockImg=_G.TEXTURE.miniBlock
end, end,
update=function(dt) update=function(dt)
t=t+dt t=t+dt
@@ -202,7 +178,7 @@ back.game6={
local R=7-int(t*.5)%7 local R=7-int(t*.5)%7
local _=colorLib[colorSet[R]] local _=colorLib[colorSet[R]]
gc.setColor(_[1],_[2],_[3],.1) gc.setColor(_[1],_[2],_[3],.1)
gc.draw(miniBlock[R],640,360,t%3.1416*6,400,400,scs[R][0][2]-.5,#blocks[R][0]-scs[R][0][1]+.5) gc.draw(blockImg[R],640,360,t%3.1416*6,400,400,scs[R][0][2]-.5,#blocks[R][0]-scs[R][0][1]+.5)
end, end,
}--Fast lightning + spining tetromino }--Fast lightning + spining tetromino
@@ -284,7 +260,7 @@ BG={
update=NULL, update=NULL,
draw=back.none.draw, draw=back.none.draw,
} }
function BG.set(bg) 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 if BG.discard then
BG.discard() BG.discard()

View File

@@ -290,8 +290,8 @@ end
local customSet={ local customSet={
{3,20,1,1,7,1,1,1,3,4,1,2,3}, {3,20,1,1,7,1,1,1,3,4,1,2,3},
{5,20,1,1,7,1,1,1,8,3,8,3,3}, {5,20,1,1,7,1,1,1,8,3,8,3,3},
{1,22,1,1,7,3,1,1,8,4,1,7,7}, {1,22,1,1,7,3,1,1,8,4,1,6,7},
{3,20,1,1,7,1,1,3,8,3,1,7,8}, {3,20,1,1,7,1,1,3,8,3,1,6,8},
{25,11,8,11,4,1,2,1,8,3,1,4,9}, {25,11,8,11,4,1,2,1,8,3,1,4,9},
} }
function keyDown.custom(key) function keyDown.custom(key)
@@ -696,7 +696,16 @@ function gamepadUp.play(key)
end end
end end
function touchDown.help(id,x,y) function keyDown.staff(key,RESET)
if key=="escape"then
SCN.back()
elseif key=="\122"then
if RESET or kb.isDown("\109")and kb.isDown("\114")then
SCN.goto("debug")
end
end
end
function touchDown.staff(id,x,y)
local pw=sceneTemp.pw local pw=sceneTemp.pw
local t=pw%4 local t=pw%4
if if
@@ -707,8 +716,7 @@ function touchDown.help(id,x,y)
then then
pw=pw+1 pw=pw+1
if pw==8 then if pw==8 then
marking=nil SCN.goto("debug")
SFX.play("reach")
end end
else else
pw=x<640 and y<360==1 and 1 or 0 pw=x<640 and y<360==1 and 1 or 0
@@ -716,66 +724,6 @@ function touchDown.help(id,x,y)
sceneTemp.pw=pw sceneTemp.pw=pw
end end
function keyDown.staff(key,RESET)
if key=="escape"then
SCN.back()
elseif key=="\122"then
if RESET or kb.isDown("\109")and kb.isDown("\114")then
sceneTemp.ct=sceneTemp.ct+1
if sceneTemp.ct==5 then
TEXT.show("What are you up to?",640,200,40,"appear",.5)
elseif sceneTemp.ct==10 then
TEXT.show("Stop what you are doing.",640,200,40,"flicker",.5)
elseif sceneTemp.ct==16 then
TEXT.show("RESET ALL DATA?",640,200,40,"appear",.3,.2)
elseif sceneTemp.ct==20 then
TEXT.show("SURE?????",640,200,40,"beat",.3,.2)
elseif sceneTemp.ct==26 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("lock")
SFX.play("clear_4")
SFX.play("finesseError_long")
SCN.back()
TEXT.clear()
end
sceneTemp.v=-6.26
marking=nil
SFX.play("reach")
end
end
end
function touchDown.staff(id,x,y)
if #tc.getTouches()==5 then
keyDown.staff('\122',true)
end
end
function keyDown.stat(key)
if key=="u"and kb.isDown("lshift","rshift")then
touchDown.stat()
end
end
function touchDown.stat(id,x,y)
local s=sceneTemp
s.count=s.count+1
if rnd()<.0626 and s.count>26 then
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("DEV:\85\78\76\79\67\75\65\76\76",640,360,60,"stretch",.6)
SFX.play("clear_4")
end
end
function wheelMoved.history(x,y) function wheelMoved.history(x,y)
wheelScroll(y) wheelScroll(y)
end end
@@ -1088,7 +1036,7 @@ function love.run()
local R=int(r)%7+1 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.setColor(_[1],_[2],_[3],min(1-abs(1-r%1*2),.3))
gc.draw(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--Awesome mouse!

View File

@@ -1,7 +1,7 @@
local langList={ local langList={
{ {
anykey="按任意键继续", anykey="按任意键继续",
newVersion="检测到更新!存档格式已修改", newVersion="检测到更新!",
marking="游戏作者:MrZ_26\n任何视频/直播不得出现此水印\n任何转述声明无效", marking="游戏作者:MrZ_26\n任何视频/直播不得出现此水印\n任何转述声明无效",
lang="中文", lang="中文",
atkModeName={"随机","徽章","击杀","反击"}, atkModeName={"随机","徽章","击杀","反击"},
@@ -146,7 +146,7 @@ local langList={
"", "",
"使用LOVE2D引擎", "使用LOVE2D引擎",
"错误或者建议请附带截图发送到内测群或者作者邮箱~", "错误或者建议请附带截图发送到内测群或者作者邮箱~",
"仅通过内测群822023725进行免费下载/更新", "仅通过内测群1080457319进行免费下载/更新",
"其他渠道获得游戏皆有被修改/加广告/植入病毒的风险,程序只申请了震动&联网权限!", "其他渠道获得游戏皆有被修改/加广告/植入病毒的风险,程序只申请了震动&联网权限!",
"若由于被修改的本游戏产生的各种损失作者不负责(我怎么负责啊跟我有啥关系)", "若由于被修改的本游戏产生的各种损失作者不负责(我怎么负责啊跟我有啥关系)",
"请从正规途径获得最新版,游戏现为免费,不过有打赏当然感谢啦~", "请从正规途径获得最新版,游戏现为免费,不过有打赏当然感谢啦~",
@@ -176,7 +176,7 @@ local langList={
simple-love-lights[dylhunn] simple-love-lights[dylhunn]
]], ]],
support="支持作者", support="支持作者",
group="官方QQ群(如果没有被暗改的话就是这个):822023725", group="官方QQ群(如果没有被暗改的话就是这个):1080457319",
WidgetText={ WidgetText={
main={ main={
play="开始", play="开始",
@@ -364,6 +364,12 @@ local langList={
path="打开存储目录", path="打开存储目录",
back="返回", back="返回",
}, },
debug={
killWTM="关闭水印",
unlock="解锁全模式",
reset="清空所有数据",
back="返回",
},
}, },
modes={ modes={
["sprint_10"]= {"竞速", "10L", "消除10行"}, ["sprint_10"]= {"竞速", "10L", "消除10行"},
@@ -443,7 +449,7 @@ local langList={
}, },
{ {
anykey="按任意键继续", anykey="按任意键继续",
newVersion="检测到更新!存档格式已修改", newVersion="检测到更新!",
marking="游戏作者:MrZ_26\n任何视频/直播不得出现此水印\n任何转述声明无效", marking="游戏作者:MrZ_26\n任何视频/直播不得出现此水印\n任何转述声明无效",
lang="全中文", lang="全中文",
atkModeName={"随机","徽章","击杀","反击"}, atkModeName={"随机","徽章","击杀","反击"},
@@ -585,7 +591,7 @@ local langList={
"从TO/C2/KOS/TGM3/JS等方块获得过灵感", "从TO/C2/KOS/TGM3/JS等方块获得过灵感",
"", "",
"错误或者建议请附带截图发送到内测群或者作者邮箱~", "错误或者建议请附带截图发送到内测群或者作者邮箱~",
"仅通过内测群822023725进行免费下载/更新", "仅通过内测群1080457319进行免费下载/更新",
"其他渠道获得游戏皆有被修改/加广告/植入病毒的风险,程序只申请了震动&联网权限!", "其他渠道获得游戏皆有被修改/加广告/植入病毒的风险,程序只申请了震动&联网权限!",
"若由于被修改的本游戏产生的各种损失作者不负责(我怎么负责啊跟我有啥关系)", "若由于被修改的本游戏产生的各种损失作者不负责(我怎么负责啊跟我有啥关系)",
"请从正规途径获得最新版,游戏现为免费,不过有打赏当然感谢啦~", "请从正规途径获得最新版,游戏现为免费,不过有打赏当然感谢啦~",
@@ -615,7 +621,7 @@ local langList={
simple-love-lights[dylhunn] simple-love-lights[dylhunn]
]], ]],
support="支持作者", support="支持作者",
group="官方QQ群(如果没有被暗改的话就是这个):822023725", group="官方QQ群(如果没有被暗改的话就是这个):1080457319",
WidgetText={ WidgetText={
main={ main={
play="开始", play="开始",
@@ -803,6 +809,12 @@ local langList={
path="打开存储目录", path="打开存储目录",
back="返回", back="返回",
}, },
debug={
killWTM="关闭水印",
unlock="解锁全模式",
reset="清空所有数据",
back="返回",
},
}, },
modes={ modes={
["sprint_10"]= {"竞速", "10行", "消除10行"}, ["sprint_10"]= {"竞速", "10行", "消除10行"},
@@ -882,7 +894,7 @@ local langList={
}, },
{ {
anykey="Press any button", anykey="Press any button",
newVersion="Updating detected! Saving format updated", newVersion="Updating detected!",
marking="Game Author:MrZ_26\nIllegal recording if see this\nAny explanation invalid", marking="Game Author:MrZ_26\nIllegal recording if see this\nAny explanation invalid",
lang="English", lang="English",
atkModeName={"Random","Badges","K.O.s","Attackers"}, atkModeName={"Random","Badges","K.O.s","Attackers"},
@@ -1043,7 +1055,7 @@ local langList={
}, },
used="Tool used:\n\tBeepbox\n\tGFIE\n\tGoldwave\nLib used:\n\tCold_Clear[MinusKelvin]\n\tsimple-love-lights[dylhunn]", used="Tool used:\n\tBeepbox\n\tGFIE\n\tGoldwave\nLib used:\n\tCold_Clear[MinusKelvin]\n\tsimple-love-lights[dylhunn]",
support="Support author", support="Support author",
group="Official QQ Group(if not hacked):822023725", group="Official QQ Group(if not hacked):1080457319",
WidgetText={ WidgetText={
main={ main={
play="Play", play="Play",
@@ -1231,6 +1243,12 @@ local langList={
path="Open Data Folder", path="Open Data Folder",
back="Back", back="Back",
}, },
debug={
killWTM="kill watermark",
unlock="unlock all",
reset="reset all",
back="Back",
},
}, },
modes={ modes={
["sprint_10"]= {"Sprint", "10L", "Clear 10 lines!"}, ["sprint_10"]= {"Sprint", "10L", "Clear 10 lines!"},
@@ -1310,7 +1328,7 @@ local langList={
}, },
{ {
anykey="↓□↓", anykey="↓□↓",
newVersion="&!!! ___!", newVersion="&!!!",
marking="Game Author:MrZ_26\nIllegal recording if see this\nAny explanation invalid", marking="Game Author:MrZ_26\nIllegal recording if see this\nAny explanation invalid",
lang="?????", lang="?????",
atkModeName={"?","( )","!","←→"}, atkModeName={"?","( )","!","←→"},
@@ -1471,7 +1489,7 @@ local langList={
}, },
used="Tool used:\n\tBeepbox\n\tGFIE\n\tGoldwave\nLib used:\n\tCold_Clear[MinusKelvin]\n\tsimple-love-lights[dylhunn]", used="Tool used:\n\tBeepbox\n\tGFIE\n\tGoldwave\nLib used:\n\tCold_Clear[MinusKelvin]\n\tsimple-love-lights[dylhunn]",
support="Support author", support="Support author",
group="Official QQ Group(if not hacked):822023725", group="Official QQ Group(if not hacked):1080457319",
WidgetText={ WidgetText={
main={ main={
play="!!!", play="!!!",
@@ -1658,6 +1676,12 @@ local langList={
path="_$_", path="_$_",
back="X", back="X",
}, },
debug={
killWTM="kill watermark",
unlock="unlock all",
reset="reset all",
back="X",
},
}, },
modes={ modes={
["sprint_10"]= {"Sprint", "10L", "Clear 10 lines!"}, ["sprint_10"]= {"Sprint", "10L", "Clear 10 lines!"},

View File

@@ -65,6 +65,7 @@ local function drawVirtualkey()
local a=setting.VKAlpha*.1 local a=setting.VKAlpha*.1
local _ local _
if setting.VKIcon then if setting.VKIcon then
local icons=TEXTURE.VKIcon
for i=1,#V do for i=1,#V do
if V[i].ava then if V[i].ava then
local B=V[i] local B=V[i]
@@ -72,7 +73,7 @@ local function drawVirtualkey()
gc.setLineWidth(B.r*.07) gc.setLineWidth(B.r*.07)
gc.circle("line",B.x,B.y,B.r,10)--Button outline gc.circle("line",B.x,B.y,B.r,10)--Button outline
_=V[i].pressTime _=V[i].pressTime
gc.draw(VKIcon[i],B.x,B.y,nil,B.r*.026+_*.08,nil,18,18)--icon gc.draw(icons[i],B.x,B.y,nil,B.r*.026+_*.08,nil,18,18)--icon
if _>0 then if _>0 then
gc.setColor(1,1,1,a*_*.08) gc.setColor(1,1,1,a*_*.08)
gc.circle("fill",B.x,B.y,B.r*.94,10)--Glow gc.circle("fill",B.x,B.y,B.r*.94,10)--Glow
@@ -265,7 +266,7 @@ function Pnt.mode()
end end
if cam.keyCtrl then if cam.keyCtrl then
gc.setColor(1,1,1) gc.setColor(1,1,1)
gc.draw(mapCross,460-20,360-20) gc.draw(TEXTURE.mapCross,460-20,360-20)
end end
end end
function Pnt.music() function Pnt.music()
@@ -322,11 +323,11 @@ function Pnt.sequence()
setFont(40) setFont(40)
gc.print(len,120,300) gc.print(len,120,300)
local L=miniBlock local L=TEXTURE.miniBlock
local x,y=120,126 local x,y=120,126
local cx,cy=120,126 local cx,cy=120,126
for i=1,len do for i=1,len do
local B=miniBlock[bag[i]] local B=L[bag[i]]
gc.draw(B,x,y,nil,15,15,0,B:getHeight()*.5) gc.draw(B,x,y,nil,15,15,0,B:getHeight()*.5)
x=x+B:getWidth()*15+10 x=x+B:getWidth()*15+10
if x>1126 then if x>1126 then
@@ -528,7 +529,7 @@ function Pnt.pause()
setFont(26) setFont(26)
for i=1,10 do for i=1,10 do
gc.print(text.pauseStat[i],40,210+40*i) gc.print(text.pauseStat[i],40,210+40*i)
gc.printf(_[i],245,210+40*i,250,"right") gc.printf(_[i],195,210+40*i,300,"right")
end end
end end
@@ -750,17 +751,12 @@ end
function Pnt.staff() function Pnt.staff()
local L=text.staff local L=text.staff
local t=sceneTemp.time local t=sceneTemp.time
if t>0 then setFont(40)
setFont(40) for i=1,#L do
for i=1,#L do mStr(L[i],640,800+80*i-t*40)
mStr(L[i],640,800+80*i-t*40)
end
mDraw(IMG.coloredTitleImage,640,800-t*40,nil,2)
mDraw(IMG.coloredTitleImage,640,2160-t*40,nil,2)
else
setFont(60)
mStr("Don't tell this to anyone.",640,-100-t*40)
end end
mDraw(IMG.coloredTitleImage,640,800-t*40,nil,2)
mDraw(IMG.coloredTitleImage,640,2160-t*40,nil,2)
end end
function Pnt.stat() function Pnt.stat()
local chart=sceneTemp.chart local chart=sceneTemp.chart

View File

@@ -187,7 +187,7 @@ function sceneInit.setting_control()
dir=1, dir=1,
wait=30, wait=30,
} }
BG.set("strap") BG.set("game1")
end end
function sceneInit.setting_key() function sceneInit.setting_key()
sceneTemp={ sceneTemp={
@@ -208,16 +208,13 @@ function sceneInit.setting_touchSwitch()
BG.set("matrix") BG.set("matrix")
end end
function sceneInit.help() function sceneInit.help()
sceneTemp={
pw=0,
}
BG.set("space") BG.set("space")
end end
function sceneInit.staff() function sceneInit.staff()
sceneTemp={ sceneTemp={
pw=0,
time=0, time=0,
v=1, v=1,
ct=0,
} }
BG.set("space") BG.set("space")
end end
@@ -234,7 +231,6 @@ function sceneInit.stat()
end end
end end
sceneTemp={ sceneTemp={
count=0,
chart={ chart={
A1=S.spin,A2=S.clear, A1=S.spin,A2=S.clear,
X1=X1,X2=X2, X1=X1,X2=X2,
@@ -259,9 +255,14 @@ function sceneInit.stat()
end end
end end
function sceneInit.history() function sceneInit.history()
BG.set("strap") BG.set("game1")
sceneTemp={require("parts/updateLog"),1}--scroll pos sceneTemp={require("parts/updateLog"),1}--scroll pos
end end
function sceneInit.debug()
sceneTemp={
ct=0,
}
end
function sceneInit.quit() function sceneInit.quit()
love.timer.sleep(.3) love.timer.sleep(.3)
love.event.quit() love.event.quit()

View File

@@ -6,7 +6,8 @@ return{
alpha=N("alpha"), alpha=N("alpha"),
warning=N("warning"), warning=N("warning"),
rainbow=N("rainbow"),
strap=N("strap"),
aura=N("aura"), aura=N("aura"),
gradient1=N("grad1"),--Horizonal
gradient2=N("grad2"),--Vertical
gradient3=N("grad3"),--Oblique
} }

View File

@@ -0,0 +1,10 @@
extern float t,w;
vec4 effect(vec4 color,Image text,vec2 pos,vec2 scr_pos){
float x=scr_pos.x/w;
return vec4(
.8-x*.6,
.3+.2*sin(t),
.15+x*.7,
1
);
}

View File

@@ -0,0 +1,10 @@
extern float t,h;
vec4 effect(vec4 color,Image text,vec2 pos,vec2 scr_pos){
float y=scr_pos.y/h;
return vec4(
.8-y*.6,
.2+y*.4,
.3+.1*sin(t),
1
);
}

View File

@@ -0,0 +1,11 @@
extern float t,w,h;
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,
1
);
}

View File

@@ -1,15 +0,0 @@
#define PI 3.14159265
extern float w,h;
extern float t;
vec4 effect(vec4 color,Image text,vec2 pos,vec2 scr_pos){
float x=scr_pos.x-w/2.;
float y=scr_pos.y-h/2.;
float a=(step(0.,x)*2.-1.)*PI+atan(y,x)+PI*0.5+t*0.626;
return vec4(
color.r*(sin(a+PI*0./3.)*0.3+0.5),
color.g*(sin(a+PI*2./3.)*0.3+0.5),
color.b*(sin(a+PI*4./3.)*0.3+0.5),
1.
);
}

View File

@@ -1,11 +0,0 @@
#define PI 3.14159265
extern float t;
vec4 effect(vec4 color,Image text,vec2 pos,vec2 scr_pos){
float x=scr_pos.x/262.+t;
return vec4(
color.r*(sin(x+PI*0./3.)*0.3+0.5),
color.g*(sin(x+PI*2./3.)*0.3+0.5),
color.b*(sin(x+PI*4./3.)*0.3+0.5),
1.
);
}

View File

@@ -139,24 +139,24 @@ local Widgets={
O= newButton(650, 440,90, 90,C.white, 50,pressKey(6)), O= newButton(650, 440,90, 90,C.white, 50,pressKey(6)),
I= newButton(750, 440,90, 90,C.white, 50,pressKey(7)), I= newButton(750, 440,90, 90,C.white, 50,pressKey(7)),
Z5= newButton(150, 540,90, 90,C.white, 50,pressKey(8)), Z5= newButton(150, 540,90, 90,C.darkGrey, 50,pressKey(8)),
S5= newButton(250, 540,90, 90,C.white, 50,pressKey(9)), S5= newButton(250, 540,90, 90,C.darkGrey, 50,pressKey(9)),
P= newButton(350, 540,90, 90,C.white, 50,pressKey(10)), P= newButton(350, 540,90, 90,C.darkGrey, 50,pressKey(10)),
Q= newButton(450, 540,90, 90,C.white, 50,pressKey(11)), Q= newButton(450, 540,90, 90,C.darkGrey, 50,pressKey(11)),
F= newButton(550, 540,90, 90,C.white, 50,pressKey(12)), F= newButton(550, 540,90, 90,C.darkGrey, 50,pressKey(12)),
E= newButton(650, 540,90, 90,C.white, 50,pressKey(13)), E= newButton(650, 540,90, 90,C.darkGrey, 50,pressKey(13)),
T5= newButton(750, 540,90, 90,C.white, 50,pressKey(14)), T5= newButton(750, 540,90, 90,C.darkGrey, 50,pressKey(14)),
U= newButton(850, 540,90, 90,C.white, 50,pressKey(15)), U= newButton(850, 540,90, 90,C.darkGrey, 50,pressKey(15)),
V= newButton(950, 540,90, 90,C.white, 50,pressKey(16)), V= newButton(950, 540,90, 90,C.darkGrey, 50,pressKey(16)),
W= newButton(150, 640,90, 90,C.white, 50,pressKey(17)), W= newButton(150, 640,90, 90,C.darkGrey, 50,pressKey(17)),
X= newButton(250, 640,90, 90,C.white, 50,pressKey(18)), X= newButton(250, 640,90, 90,C.darkGrey, 50,pressKey(18)),
J5= newButton(350, 640,90, 90,C.white, 50,pressKey(19)), J5= newButton(350, 640,90, 90,C.darkGrey, 50,pressKey(19)),
L5= newButton(450, 640,90, 90,C.white, 50,pressKey(20)), L5= newButton(450, 640,90, 90,C.darkGrey, 50,pressKey(20)),
R= newButton(550, 640,90, 90,C.white, 50,pressKey(21)), R= newButton(550, 640,90, 90,C.darkGrey, 50,pressKey(21)),
Y= newButton(650, 640,90, 90,C.white, 50,pressKey(22)), Y= newButton(650, 640,90, 90,C.darkGrey, 50,pressKey(22)),
N= newButton(750, 640,90, 90,C.white, 50,pressKey(23)), N= newButton(750, 640,90, 90,C.darkGrey, 50,pressKey(23)),
H= newButton(850, 640,90, 90,C.white, 50,pressKey(24)), H= newButton(850, 640,90, 90,C.darkGrey, 50,pressKey(24)),
I5= newButton(950, 640,90, 90,C.white, 50,pressKey(25)), I5= newButton(950, 640,90, 90,C.darkGrey, 50,pressKey(25)),
left= newButton(850, 440,90, 90,C.lightGreen, 55,pressKey("left")), left= newButton(850, 440,90, 90,C.lightGreen, 55,pressKey("left")),
right= newButton(950, 440,90, 90,C.lightGreen, 55,pressKey("right")), right= newButton(950, 440,90, 90,C.lightGreen, 55,pressKey("right")),
@@ -425,6 +425,44 @@ local Widgets={
path= newButton(980,620,250,80,C.white,25,function()love.system.openURL(love.filesystem.getSaveDirectory())end,mobileHide,"back"), path= newButton(980,620,250,80,C.white,25,function()love.system.openURL(love.filesystem.getSaveDirectory())end,mobileHide,"back"),
back= newButton(640,620,200,80,C.white,40,BACK,nil,"path"), back= newButton(640,620,200,80,C.white,40,BACK,nil,"path"),
}, },
debug={
killWTM=newButton(340,200,260,100,C.white,35,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),
unlock= newButton(640,200,260,100,C.white,40,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),
reset= newButton(940,200,260,100,C.white,40,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),
back= newButton(640,620,200,80,C.white,40,BACK),
},
} }
mobileHide,SETval,SETsto,SETrev=nil mobileHide,SETval,SETsto,SETrev=nil
pressKey,setPen,prevSkin,nextSkin=nil pressKey,setPen,prevSkin,nextSkin=nil

View File

@@ -1,4 +1,4 @@
gameVersion="Alpha V0.9.1" gameVersion="Alpha V0.9.2"
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"

View File

@@ -43,9 +43,9 @@ freeRow= require("parts/freeRow")
require("parts/list") require("parts/list")
require("parts/gametoolfunc") require("parts/gametoolfunc")
require("parts/texture")
require("parts/default_data") require("parts/default_data")
TEXTURE=require("parts/texture")
SKIN= require("parts/skin") SKIN= require("parts/skin")
PLY= require("parts/player") PLY= require("parts/player")
AIfunc= require("parts/ai") AIfunc= require("parts/ai")
@@ -81,43 +81,7 @@ if fs.getInfo("virtualkey.dat")then FILE.loadVK()end
--update data file --update data file
S=stat S=stat
S.clear_B,S.clear_S=nil
if not S.clear[1][5]then
for i=1,7 do
S.clear[i][5]=0
S.spin[i][5]=0
end
for i=8,25 do
S.clear[i]={0,0,0,0,0}
S.spin[i]={0,0,0,0,0}
end
end
if not S.off then
S.off=S.recv-S.pend
end
if S.clear[1][4]>0 then
for i=1,6 do
S.clear[7][4]=S.clear[7][4]+S.clear[i][4]
S.clear[i][4]=0
end
end
while #modeRanks>73 do
table.remove(modeRanks)
end
if modeRanks[73]==6 then modeRanks[73]=0 end
if modeRanks[1]then--rename key of modeRanks
local L=modeRanks
for i=1,#L do
L[Modes[i].name],L[i]=L[i]
end
end
if setting.skin[10]==5 then
setting.skin[10],setting.skin[11]=1,5
end
if S.version~=gameVersion then if S.version~=gameVersion then
if S.version then
setting.spawn=true
end
S.version=gameVersion S.version=gameVersion
TEXT.show(text.newVersion,640,200,30,"fly",.3) TEXT.show(text.newVersion,640,200,30,"fly",.3)
end end

View File

@@ -21,7 +21,7 @@ return{
mindas=7,minarr=1,minsdarr=1, mindas=7,minarr=1,minsdarr=1,
drop=.5,wait=8,fall=20, drop=.5,wait=8,fall=20,
target=50,dropPiece=check, target=50,dropPiece=check,
bg="strap",bgm="push", bg="game2",bgm="push",
}, },
pauseLimit=true, pauseLimit=true,
slowMark=true, slowMark=true,

View File

@@ -21,7 +21,7 @@ return{
wait=8,fall=20, wait=8,fall=20,
target=10,dropPiece=check_LVup, target=10,dropPiece=check_LVup,
mindas=7,minarr=1,minsdarr=1, mindas=7,minarr=1,minsdarr=1,
bg="strap",bgm="push", bg="game2",bgm="push",
}, },
pauseLimit=true, pauseLimit=true,
slowMark=true, slowMark=true,

View File

@@ -47,7 +47,7 @@ return{
fall=rush_fall[1], fall=rush_fall[1],
dropPiece=score, dropPiece=score,
freshLimit=15, freshLimit=15,
bg="strap",bgm="secret8th", bg="game1",bgm="secret8th",
}, },
slowMark=true, slowMark=true,
load=function() load=function()

View File

@@ -16,7 +16,7 @@ return{
drop=1e99,lock=1e99, drop=1e99,lock=1e99,
oncehold=false, oncehold=false,
dropPiece=update_round, dropPiece=update_round,
bg="game2",bgm="push", bg="game3",bgm="push",
}, },
load=function() load=function()
PLY.newPlayer(1,340,15) PLY.newPlayer(1,340,15)

View File

@@ -16,7 +16,7 @@ return{
drop=1e99,lock=1e99, drop=1e99,lock=1e99,
oncehold=false, oncehold=false,
dropPiece=update_round, dropPiece=update_round,
bg="game2",bgm="push", bg="game3",bgm="push",
}, },
load=function() load=function()
PLY.newPlayer(1,340,15) PLY.newPlayer(1,340,15)

View File

@@ -16,7 +16,7 @@ return{
drop=1e99,lock=1e99, drop=1e99,lock=1e99,
oncehold=false, oncehold=false,
dropPiece=update_round, dropPiece=update_round,
bg="game2",bgm="push", bg="game3",bgm="push",
}, },
load=function() load=function()
PLY.newPlayer(1,340,15) PLY.newPlayer(1,340,15)

View File

@@ -16,7 +16,7 @@ return{
drop=1e99,lock=1e99, drop=1e99,lock=1e99,
oncehold=false, oncehold=false,
dropPiece=update_round, dropPiece=update_round,
bg="game2",bgm="push", bg="game3",bgm="push",
}, },
load=function() load=function()
PLY.newPlayer(1,340,15) PLY.newPlayer(1,340,15)

View File

@@ -16,7 +16,7 @@ return{
drop=1e99,lock=1e99, drop=1e99,lock=1e99,
oncehold=false, oncehold=false,
dropPiece=update_round, dropPiece=update_round,
bg="game2",bgm="push", bg="game3",bgm="push",
}, },
load=function() load=function()
PLY.newPlayer(1,340,15) PLY.newPlayer(1,340,15)

View File

@@ -5,7 +5,7 @@ return{
env={ env={
drop=60,lock=60, drop=60,lock=60,
target=10,dropPiece=PLY.reach_winCheck, target=10,dropPiece=PLY.reach_winCheck,
bg="strap",bgm="race", bg="game2",bgm="race",
}, },
load=function() load=function()
PLY.newPlayer(1,340,15) PLY.newPlayer(1,340,15)

View File

@@ -5,7 +5,7 @@ return{
env={ env={
drop=60,lock=60, drop=60,lock=60,
target=100,dropPiece=PLY.reach_winCheck, target=100,dropPiece=PLY.reach_winCheck,
bg="strap",bgm="race", bg="game2",bgm="race",
}, },
load=function() load=function()
PLY.newPlayer(1,340,15) PLY.newPlayer(1,340,15)

View File

@@ -5,7 +5,7 @@ return{
env={ env={
drop=60,lock=60, drop=60,lock=60,
target=1000,dropPiece=PLY.reach_winCheck, target=1000,dropPiece=PLY.reach_winCheck,
bg="strap",bgm="push", bg="game3",bgm="push",
}, },
load=function() load=function()
PLY.newPlayer(1,340,15) PLY.newPlayer(1,340,15)

View File

@@ -5,7 +5,7 @@ return{
env={ env={
drop=60,lock=60, drop=60,lock=60,
target=20,dropPiece=PLY.reach_winCheck, target=20,dropPiece=PLY.reach_winCheck,
bg="strap",bgm="race", bg="game2",bgm="race",
}, },
load=function() load=function()
PLY.newPlayer(1,340,15) PLY.newPlayer(1,340,15)

View File

@@ -5,7 +5,7 @@ return{
env={ env={
drop=60,lock=60, drop=60,lock=60,
target=40,dropPiece=PLY.reach_winCheck, target=40,dropPiece=PLY.reach_winCheck,
bg="strap",bgm="race", bg="game2",bgm="race",
}, },
load=function() load=function()
PLY.newPlayer(1,340,15) PLY.newPlayer(1,340,15)

View File

@@ -5,7 +5,7 @@ return{
env={ env={
drop=60,lock=60, drop=60,lock=60,
target=400,dropPiece=PLY.reach_winCheck, target=400,dropPiece=PLY.reach_winCheck,
bg="strap",bgm="push", bg="game3",bgm="push",
}, },
load=function() load=function()
PLY.newPlayer(1,340,15) PLY.newPlayer(1,340,15)

View File

@@ -4,7 +4,7 @@ return{
drop=120,lock=120, drop=120,lock=120,
oncehold=false,target=200, oncehold=false,target=200,
dropPiece=PLY.reach_winCheck, dropPiece=PLY.reach_winCheck,
bg="strap",bgm="infinite", bg="game2",bgm="infinite",
}, },
load=function() load=function()
PLY.newPlayer(1,340,15) PLY.newPlayer(1,340,15)

View File

@@ -1,3 +1,4 @@
snapLevelValue={1,10,20,40,60,80}
customID={ customID={
"drop","lock", "drop","lock",
"wait","fall", "wait","fall",
@@ -20,7 +21,51 @@ customRange={
target={10,20,40,100,200,500,1000,1e99}, target={10,20,40,100,200,500,1000,1e99},
freshLimit={0,8,15,1e99}, freshLimit={0,8,15,1e99},
opponent={0,1,2,3,4,5,11,12,13,14,15,16}, opponent={0,1,2,3,4,5,11,12,13,14,15,16},
bg={"none","game1","game2","game3","strap","aura","rgb","glow","matrix"}, bg={"none","game1","game2","game3","aura","rgb","glow","matrix"},
bgm={"blank","way","race","newera","push","reason","infinite","secret7th","secret8th","rockblock"}, bgm={"blank","way","race","newera","push","reason","infinite","secret7th","secret8th","rockblock"},
} }
snapLevelValue={1,10,20,40,60,80} local function T(s,t)return love.graphics.newText(setFont(s),t)end
drawableText={
question=T(100,"?"),
bpm=T(15,"BPM"),kpm=T(15,"KPM"),
speedLV=T(20,"speed level"),
atk=T(20,"Attack"),
eff=T(20,"Efficiency"),
tsd=T(35,"TSD"),
line=T(25,"Lines"),
techrash=T(25,"Techrash"),
grade=T(25,"Grade"),
wave=T(30,"Wave"),
rpm=T(35,"RPM"),
nextWave=T(30,"Next"),
combo=T(20,"Combo"),
mxcmb=T(20,"Max Combo"),
pc=T(20,"Perfect Clear"),
ko=T(25,"KO"),
D=T(100,"D"),
C=T(100,"C"),
B=T(100,"B"),
A=T(100,"A"),
S=T(100,"S"),
modeName=T(30),levelName=T(30),
anykey=T(40),
next=T(40),hold=T(40),
win=T(120),finish=T(120),
lose=T(120),pause=T(120),
custom=T(80),sequence=T(80),
setting_game=T(80),setting_video=T(80),setting_sound=T(80),
setting_control=T(70),setting_skin=T(70),
preview=T(40),
keyboard=T(25),joystick=T(25),
ctrlSetHelp=T(30),
musicRoom=T(80),
nowPlaying=T(50),
VKTchW=T(30),VKOrgW=T(30),VKCurW=T(30),
noScore=T(45),
highScore=T(30),
}

View File

@@ -692,15 +692,15 @@ local function Pdraw_norm(P)
--Draw Hold --Draw Hold
if P.gameEnv.hold then if P.gameEnv.hold then
gc.setColor(0,0,0,.4)gc.rectangle("fill",-143,36,124,80) gc.setColor(0,0,0,.4)gc.rectangle("fill",-140,36,124,80)
gc.setColor(1,1,1)gc.rectangle("line",-143,36,124,80) gc.setColor(1,1,1)gc.rectangle("line",-140,36,124,80)
mText(drawableText.hold,-81,-15) mText(drawableText.hold,-78,-15)
if P.hd then if P.hd then
if P.holded then gc.setColor(.6,.5,.5)end if P.holded then gc.setColor(.6,.5,.5)end
local B=P.hd.bk local B=P.hd.bk
for i=1,#B do for j=1,#B[1]do for i=1,#B do for j=1,#B[1]do
if B[i][j]then if B[i][j]then
drawPixel(i+17.5-#B*.5,j-2.7-#B[1]*.5,P.hd.color) drawPixel(i+17.5-#B*.5,j-2.6-#B[1]*.5,P.hd.color)
end end
end end end end
end end
@@ -709,15 +709,15 @@ local function Pdraw_norm(P)
--Draw Next(s) --Draw Next(s)
local N=P.gameEnv.next*72 local N=P.gameEnv.next*72
if P.gameEnv.next>0 then if P.gameEnv.next>0 then
gc.setColor(0,0,0,.4)gc.rectangle("fill",319,36,124,N) gc.setColor(0,0,0,.4)gc.rectangle("fill",316,36,124,N)
gc.setColor(1,1,1)gc.rectangle("line",319,36,124,N) gc.setColor(1,1,1)gc.rectangle("line",316,36,124,N)
mText(drawableText.next,381,-15) mText(drawableText.next,378,-15)
N=1 N=1
while N<=P.gameEnv.next and P.next[N]do while N<=P.gameEnv.next and P.next[N]do
local b,c=P.next[N].bk,P.next[N].color local b,c=P.next[N].bk,P.next[N].color
for i=1,#b do for j=1,#b[1] do for i=1,#b do for j=1,#b[1] do
if b[i][j]then if b[i][j]then
drawPixel(i+20-2.4*N-#b*.5,j+12.7-#b[1]*.5,c) drawPixel(i+20-2.4*N-#b*.5,j+12.6-#b[1]*.5,c)
end end
end end end end
N=N+1 N=N+1
@@ -731,7 +731,7 @@ local function Pdraw_norm(P)
gc.setColor(.8,.5,.5) gc.setColor(.8,.5,.5)
for i=C,N-1,L do for i=C,N-1,L do
local y=72*i+36 local y=72*i+36
gc.line(321+P.fieldOff.x,y,441,y) gc.line(318+P.fieldOff.x,y,438,y)
end end
end end
@@ -745,18 +745,23 @@ local function Pdraw_norm(P)
mStr(int(count/60+1),0,0) mStr(int(count/60+1),0,0)
gc.pop() gc.pop()
end--Draw starting counter end--Draw starting counter
TEXT.draw(P.bonus)--Bonus texts
--Bonus texts
TEXT.draw(P.bonus)
--Speed dials
setFont(25) setFont(25)
drawDial(360,520,P.dropSpeed) drawDial(360,510,P.dropSpeed)
drawDial(405,575,P.keySpeed) drawDial(405,565,P.keySpeed)
gc.setColor(1,1,1) gc.setColor(1,1,1)
gc.draw(drawableText.bpm,390,480)
gc.draw(drawableText.kpm,344,573)
mStr(format("%.2f",P.stat.time),-81,518)--Time mStr(format("%.2f",P.stat.time),-81,518)--Time
mStr(P.score1,-81,560)--Score mStr(P.score1,-81,560)--Score
gc.draw(drawableText.bpm,390,490)
gc.draw(drawableText.kpm,344,583) --Other messages
--Speed dials
gc.setColor(1,1,1) gc.setColor(1,1,1)
curMode.mesDisp(P)--Other messages curMode.mesDisp(P)
if modeEnv.royaleMode then if modeEnv.royaleMode then
if P.atkMode then if P.atkMode then
@@ -773,6 +778,7 @@ local function Pdraw_norm(P)
gc.pop() gc.pop()
end end
local function Pdraw_small(P) local function Pdraw_small(P)
--draw content
P.frameWait=P.frameWait-1 P.frameWait=P.frameWait-1
if P.frameWait==0 then if P.frameWait==0 then
P.frameWait=10 P.frameWait=10
@@ -781,16 +787,20 @@ local function Pdraw_small(P)
gc.push("transform") gc.push("transform")
gc.origin() gc.origin()
gc.setColor(1,1,1,P.result and max(20-P.endCounter,0)*.05 or 1) gc.setColor(1,1,1,P.result and max(20-P.endCounter,0)*.05 or 1)
--Field
local F=P.field local F=P.field
for j=1,#F do for j=1,#F do
for i=1,10 do if F[j][i]>0 then for i=1,10 do if F[j][i]>0 then
gc.draw(blockSkinMini[F[j][i]],6*i-6,120-6*j) gc.draw(blockSkinMini[F[j][i]],6*i-6,120-6*j)
end end end end
end--Field end
--Draw boarder
if P.alive then if P.alive then
gc.setLineWidth(2) gc.setLineWidth(2)
gc.setColor(frameColor[P.strength])gc.rectangle("line",1,1,58,118) gc.setColor(frameColor[P.strength])gc.rectangle("line",1,1,58,118)
end--Draw boarder end
if modeEnv.royaleMode then if modeEnv.royaleMode then
gc.setColor(1,1,1) gc.setColor(1,1,1)
for i=1,P.strength do for i=1,P.strength do
@@ -804,11 +814,11 @@ local function Pdraw_small(P)
end end
gc.pop() gc.pop()
gc.setCanvas() gc.setCanvas()
--draw content
end end
--draw Canvas
gc.setColor(1,1,1) gc.setColor(1,1,1)
gc.draw(P.canvas,P.x,P.y,nil,P.size*10) gc.draw(P.canvas,P.x,P.y,nil,P.size*10)
--draw Canvas
if P.killMark then if P.killMark then
gc.setLineWidth(3) gc.setLineWidth(3)
gc.setColor(1,0,0,min(P.endCounter,25)*.04) gc.setColor(1,0,0,min(P.endCounter,25)*.04)
@@ -861,38 +871,43 @@ local function Pdraw_demo(P)
drawFXs(P) drawFXs(P)
if P.cur and P.waiting==-1 then if P.cur and P.waiting==-1 then
--Draw ghost
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
if P.cur.bk[i][j]then if P.cur.bk[i][j]then
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
--Ghost draw
--Draw 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
--Draw hold
local blockImg=TEXTURE.miniBlock
if P.hd then if P.hd then
local id=P.hd.id local id=P.hd.id
_=P.color[id] _=P.color[id]
gc.setColor(_[1],_[2],_[3],.3) gc.setColor(_[1],_[2],_[3],.3)
_=miniBlock[id] _=blockImg[id]
gc.draw(_,15,30,nil,16,nil,0,_:getHeight()*.5) gc.draw(_,15,30,nil,16,nil,0,_:getHeight()*.5)
end--Hold end
--Draw next
local N=1 local N=1
while N<=P.gameEnv.next and P.next[N]do while N<=P.gameEnv.next and P.next[N]do
local id=P.next[N].id local id=P.next[N].id
_=P.color[id] _=P.color[id]
gc.setColor(_[1],_[2],_[3],.3) gc.setColor(_[1],_[2],_[3],.3)
_=miniBlock[id] _=blockImg[id]
gc.draw(_,285,40*N-10,nil,16,nil,_:getWidth(),_:getHeight()*.5) gc.draw(_,285,40*N-10,nil,16,nil,_:getWidth(),_:getHeight()*.5)
N=N+1 N=N+1
end--Next end
gc.setColor(1,1,1) gc.setColor(1,1,1)
gc.translate(-P.fieldOff.x,-P.fieldOff.y) gc.translate(-P.fieldOff.x,-P.fieldOff.y)
@@ -1121,7 +1136,7 @@ function player.garbageRise(P,color,amount,pos)
P.fieldBeneath=P.fieldBeneath+amount*30 P.fieldBeneath=P.fieldBeneath+amount*30
P.curY=P.curY+amount P.curY=P.curY+amount
P.garbageBeneath=P.garbageBeneath+amount P.garbageBeneath=P.garbageBeneath+amount
P:freshgho() P.y_img=P.y_img+amount
for i=1,#P.clearingRow do for i=1,#P.clearingRow do
P.clearingRow[i]=P.clearingRow[i]+amount P.clearingRow[i]=P.clearingRow[i]+amount
end end
@@ -1155,7 +1170,7 @@ function player.pushLine(P,L,mir)
end end
P.fieldBeneath=P.fieldBeneath+120 P.fieldBeneath=P.fieldBeneath+120
P.curY=P.curY+#L P.curY=P.curY+#L
P:freshgho() P.y_img=P.y_img+#L
end end
function player.pushNext(P,L,mir) function player.pushNext(P,L,mir)
for i=1,#L do for i=1,#L do
@@ -1211,6 +1226,7 @@ function player.changeAtk(P,R)
end end
end end
function player.freshgho(P) function player.freshgho(P)
if not P.cur then return end
P.y_img=min(#P.field+1,P.curY) P.y_img=min(#P.field+1,P.curY)
if P.gameEnv._20G or P.keyPressing[7]and P.gameEnv.sdarr==0 then if P.gameEnv._20G or P.keyPressing[7]and P.gameEnv.sdarr==0 then
while not P:ifoverlap(P.cur.bk,P.curX,P.y_img-1)do while not P:ifoverlap(P.cur.bk,P.curX,P.y_img-1)do

View File

@@ -1,27 +1,26 @@
local gc=love.graphics local gc=love.graphics
local N=gc.newImage
local int=math.floor local int=math.floor
local function T(s,t)return gc.newText(setFont(s),t)end
local function C(x,y) local function C(x,y)
local _=gc.newCanvas(x,y) local _=gc.newCanvas(x,y)
gc.setCanvas(_) gc.setCanvas(_)
return _ return _
end end
local c local c
local TEXTURE={}
gc.setDefaultFilter("nearest","nearest") gc.setDefaultFilter("nearest","nearest")
gc.setColor(1,1,1) gc.setColor(1,1,1)
local VKI=N("/image/virtualkey.png") local VKI=gc.newImage("/image/virtualkey.png")
VKIcon={} TEXTURE.VKIcon={}
for i=1,20 do for i=1,20 do
VKIcon[i]=C(36,36) TEXTURE.VKIcon[i]=C(36,36)
gc.draw(VKI,(i-1)%5*-36,int((i-1)*.2)*-36) gc.draw(VKI,(i-1)%5*-36,int((i-1)*.2)*-36)
end end
miniBlock={} TEXTURE.miniBlock={}
for i=1,25 do for i=1,25 do
local b=blocks[i][0] local b=blocks[i][0]
miniBlock[i]=C(#b[1],#b) TEXTURE.miniBlock[i]=C(#b[1],#b)
for y=1,#b do for x=1,#b[1]do for y=1,#b do for x=1,#b[1]do
if b[y][x]then if b[y][x]then
gc.rectangle("fill",x-1,#b-y,1,1) gc.rectangle("fill",x-1,#b-y,1,1)
@@ -29,56 +28,12 @@ for i=1,25 do
end end end end
end end
mapCross=C(40,40) TEXTURE.mapCross=C(40,40)
gc.setColor(1,1,1) gc.setColor(1,1,1)
gc.setLineWidth(4) gc.setLineWidth(4)
gc.line(0,20,40,20) gc.line(0,20,40,20)
gc.line(20,0,20,40) gc.line(20,0,20,40)
gc.setDefaultFilter("linear","linear") gc.setDefaultFilter("linear","linear")
gc.setCanvas()
drawableText={ return TEXTURE
question=T(100,"?"),
bpm=T(15,"BPM"),kpm=T(15,"KPM"),
speedLV=T(20,"speed level"),
atk=T(20,"Attack"),
eff=T(20,"Efficiency"),
tsd=T(35,"TSD"),
line=T(25,"Lines"),
techrash=T(25,"Techrash"),
grade=T(25,"Grade"),
wave=T(30,"Wave"),
rpm=T(35,"RPM"),
nextWave=T(30,"Next"),
combo=T(20,"Combo"),
mxcmb=T(20,"Max Combo"),
pc=T(20,"Perfect Clear"),
ko=T(25,"KO"),
D=T(100,"D"),
C=T(100,"C"),
B=T(100,"B"),
A=T(100,"A"),
S=T(100,"S"),
modeName=T(30),levelName=T(30),
anykey=T(40),
next=T(40),hold=T(40),
win=T(120),finish=T(120),
lose=T(120),pause=T(120),
custom=T(80),sequence=T(80),
setting_game=T(80),setting_video=T(80),setting_sound=T(80),
setting_control=T(70),setting_skin=T(70),
preview=T(40),
keyboard=T(25),joystick=T(25),
ctrlSetHelp=T(30),
musicRoom=T(80),
nowPlaying=T(50),
VKTchW=T(30),VKOrgW=T(30),VKCurW=T(30),
noScore=T(45),
highScore=T(30),
}
gc.setCanvas()

View File

@@ -69,12 +69,18 @@ Future outlook:
more graphic FXs & 3D features & animations more graphic FXs & 3D features & animations
network game network game
new AI: task-Z new AI: task-Z
0.9.2: Bug Fixed
0.9.1: next piece SFX
new: new:
next piece spawn SFX debug page
code: change:
render background to canvas first, not redering each frame three little better backgrounds instead of stupid rainbow
little change of in-game layout
fixed:
error in infinite-dig
0.9.1: Piece Spawn SFX
new:
piece spawn SFX
fixed: fixed:
error when moving [nothing] when arr>0 error when moving [nothing] when arr>0
error when complete master-advanced error when complete master-advanced