0.9.2:调试界面,新背景,布局微调
This commit is contained in:
BIN
SFX/spawn_1.ogg
BIN
SFX/spawn_1.ogg
Binary file not shown.
BIN
SFX/spawn_2.ogg
BIN
SFX/spawn_2.ogg
Binary file not shown.
BIN
SFX/spawn_3.ogg
BIN
SFX/spawn_3.ogg
Binary file not shown.
BIN
SFX/spawn_4.ogg
BIN
SFX/spawn_4.ogg
Binary file not shown.
BIN
SFX/spawn_5.ogg
BIN
SFX/spawn_5.ogg
Binary file not shown.
BIN
SFX/spawn_6.ogg
BIN
SFX/spawn_6.ogg
Binary file not shown.
BIN
SFX/spawn_7.ogg
BIN
SFX/spawn_7.ogg
Binary file not shown.
@@ -119,30 +119,38 @@ back.game3={
|
|||||||
BG.resize(scr.w,scr.h)
|
BG.resize(scr.w,scr.h)
|
||||||
end,
|
end,
|
||||||
resize=function(w,h)
|
resize=function(w,h)
|
||||||
SHADER.gradient3:send("w",w*scr.dpi)
|
SHADER.rgb1:send("w",w*scr.dpi)
|
||||||
SHADER.gradient3:send("h",h*scr.dpi)
|
SHADER.rgb1: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.gradient3:send("t",t)
|
SHADER.rgb1:send("t",t)
|
||||||
gc.setShader(SHADER.gradient3)
|
gc.setShader(SHADER.rgb1)
|
||||||
gc.rectangle("fill",0,0,scr.w,scr.h)
|
gc.rectangle("fill",0,0,scr.w,scr.h)
|
||||||
gc.setShader()
|
gc.setShader()
|
||||||
end,
|
end,
|
||||||
}--beautiful RGB
|
}--Colorful RGB
|
||||||
back.game4={
|
back.game4={
|
||||||
init=function()
|
init=function()
|
||||||
t=0
|
t=0
|
||||||
|
BG.resize(scr.w,scr.h)
|
||||||
|
end,
|
||||||
|
resize=function(w,h)
|
||||||
|
SHADER.rgb2:send("w",w*scr.dpi)
|
||||||
|
SHADER.rgb2: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.rgb2:send("t",t)
|
||||||
|
gc.setShader(SHADER.rgb2)
|
||||||
|
gc.rectangle("fill",0,0,scr.w,scr.h)
|
||||||
|
gc.setShader()
|
||||||
end,
|
end,
|
||||||
}--Blue strap
|
}--Blue RGB
|
||||||
back.game5={
|
back.game5={
|
||||||
init=function()
|
init=function()
|
||||||
t=0
|
t=0
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
local IMG={
|
local IMG={
|
||||||
batteryImage="/mess/power.png",
|
batteryImage="/mess/power.png",
|
||||||
titleImage="mess/title.png",
|
title="mess/title.png",
|
||||||
coloredTitleImage="mess/title_colored.png",
|
title_color="mess/title_colored.png",
|
||||||
dialCircle="mess/dialCircle.png",
|
dialCircle="mess/dialCircle.png",
|
||||||
dialNeedle="mess/dialNeedle.png",
|
dialNeedle="mess/dialNeedle.png",
|
||||||
badgeIcon="mess/badge.png",
|
badgeIcon="mess/badge.png",
|
||||||
|
|||||||
@@ -218,7 +218,7 @@ function mouseClick.mode(x,y,k)
|
|||||||
cam.x=cam.x-180
|
cam.x=cam.x-180
|
||||||
end
|
end
|
||||||
elseif _ then
|
elseif _ then
|
||||||
loadGame(_)
|
keyDown.mode("return")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
cam.keyCtrl=false
|
cam.keyCtrl=false
|
||||||
@@ -247,8 +247,20 @@ end
|
|||||||
function keyDown.mode(key)
|
function keyDown.mode(key)
|
||||||
if key=="return"then
|
if key=="return"then
|
||||||
if mapCam.sel then
|
if mapCam.sel then
|
||||||
|
if mapCam.sel=="custom_clear"or mapCam.sel=="custom_puzzle"then
|
||||||
|
if customSel[11]>1 then
|
||||||
|
if customSel[7]==5 then
|
||||||
|
TEXT.show(text.ai_fixed,640,360,50,"appear")
|
||||||
|
return
|
||||||
|
elseif #preBag>0 then
|
||||||
|
TEXT.show(text.ai_prebag,640,360,50,"appear")
|
||||||
|
return
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
mapCam.keyCtrl=false
|
mapCam.keyCtrl=false
|
||||||
SCN.push()loadGame(mapCam.sel)
|
SCN.push()
|
||||||
|
loadGame(mapCam.sel)
|
||||||
end
|
end
|
||||||
elseif key=="escape"then
|
elseif key=="escape"then
|
||||||
if mapCam.sel then
|
if mapCam.sel then
|
||||||
@@ -316,6 +328,8 @@ function keyDown.custom(key)
|
|||||||
end
|
end
|
||||||
elseif key=="q"then
|
elseif key=="q"then
|
||||||
SCN.goto("sequence")
|
SCN.goto("sequence")
|
||||||
|
elseif key=="e"then
|
||||||
|
SCN.swapTo("draw")
|
||||||
elseif #key==1 then
|
elseif #key==1 then
|
||||||
local T=tonumber(key)
|
local T=tonumber(key)
|
||||||
if T and T>=1 and T<=5 then
|
if T and T>=1 and T<=5 then
|
||||||
@@ -442,6 +456,8 @@ function keyDown.draw(key)
|
|||||||
if sx and sy then
|
if sx and sy then
|
||||||
preField[sy][sx]=pen
|
preField[sy][sx]=pen
|
||||||
end
|
end
|
||||||
|
elseif key=="e"then
|
||||||
|
SCN.swapTo("custom")
|
||||||
elseif key=="escape"then
|
elseif key=="escape"then
|
||||||
SCN.back()
|
SCN.back()
|
||||||
elseif key=="c"and kb.isDown("lctrl","rctrl")then
|
elseif key=="c"and kb.isDown("lctrl","rctrl")then
|
||||||
|
|||||||
@@ -71,6 +71,8 @@ local langList={
|
|||||||
nowPlaying="正在播放:",
|
nowPlaying="正在播放:",
|
||||||
page="页面:",
|
page="页面:",
|
||||||
|
|
||||||
|
ai_fixed="不能同时开启AI和固定序列",
|
||||||
|
ai_prebag="不能同时开启AI和自定义序列",
|
||||||
settingSaved="设置已保存",
|
settingSaved="设置已保存",
|
||||||
settingSavingError="设置保存失败:",
|
settingSavingError="设置保存失败:",
|
||||||
keyMapSaved="键位设置已保存",
|
keyMapSaved="键位设置已保存",
|
||||||
@@ -153,7 +155,6 @@ local langList={
|
|||||||
},
|
},
|
||||||
staff={
|
staff={
|
||||||
"作者:MrZ 邮箱:1046101471@qq.com",
|
"作者:MrZ 邮箱:1046101471@qq.com",
|
||||||
"",
|
|
||||||
"使用LOVE2D引擎",
|
"使用LOVE2D引擎",
|
||||||
"",
|
"",
|
||||||
"程序:MrZ, FinnTenzor",
|
"程序:MrZ, FinnTenzor",
|
||||||
@@ -161,6 +162,7 @@ local langList={
|
|||||||
"音乐:MrZ, (T0722)",
|
"音乐:MrZ, (T0722)",
|
||||||
"音效:MrZ",
|
"音效:MrZ",
|
||||||
"语音:Miya, MrZ",
|
"语音:Miya, MrZ",
|
||||||
|
"官网:渣渣120",
|
||||||
"",
|
"",
|
||||||
"特别感谢:",
|
"特别感谢:",
|
||||||
"Flyz, Farter, 蕴空之灵,",
|
"Flyz, Farter, 蕴空之灵,",
|
||||||
@@ -210,8 +212,8 @@ local langList={
|
|||||||
set3="无尽(3)",
|
set3="无尽(3)",
|
||||||
set4="隐形(4)",
|
set4="隐形(4)",
|
||||||
set5="极限(5)",
|
set5="极限(5)",
|
||||||
seq="高级设置(q)",
|
seq="高级设置(Q)",
|
||||||
draw="初始场地编辑",
|
draw="初始场地编辑(E)",
|
||||||
back="返回",
|
back="返回",
|
||||||
},
|
},
|
||||||
sequence={
|
sequence={
|
||||||
@@ -231,7 +233,7 @@ local langList={
|
|||||||
demo="不显示×",
|
demo="不显示×",
|
||||||
copy="复制",
|
copy="复制",
|
||||||
paste="粘贴",
|
paste="粘贴",
|
||||||
custom="参数",
|
custom="参数(E)",
|
||||||
back="返回",
|
back="返回",
|
||||||
},
|
},
|
||||||
play={
|
play={
|
||||||
@@ -256,7 +258,6 @@ local langList={
|
|||||||
quickR="快速重新开始",
|
quickR="快速重新开始",
|
||||||
swap="组合键切换攻击模式",
|
swap="组合键切换攻击模式",
|
||||||
fine="极简操作提示音",
|
fine="极简操作提示音",
|
||||||
spawn="方块生成音",
|
|
||||||
back="返回",
|
back="返回",
|
||||||
},
|
},
|
||||||
setting_video={
|
setting_video={
|
||||||
@@ -284,10 +285,11 @@ local langList={
|
|||||||
game="←游戏设置",
|
game="←游戏设置",
|
||||||
graphic="画面设置→",
|
graphic="画面设置→",
|
||||||
sfx="音效",
|
sfx="音效",
|
||||||
|
stereo="立体声",
|
||||||
|
spawn="方块生成",
|
||||||
bgm="音乐",
|
bgm="音乐",
|
||||||
vib="震动",
|
vib="震动",
|
||||||
voc="语音",
|
voc="语音",
|
||||||
stereo="立体声",
|
|
||||||
back="返回",
|
back="返回",
|
||||||
},
|
},
|
||||||
setting_control={
|
setting_control={
|
||||||
@@ -517,6 +519,8 @@ local langList={
|
|||||||
nowPlaying="正在播放:",
|
nowPlaying="正在播放:",
|
||||||
page="页面:",
|
page="页面:",
|
||||||
|
|
||||||
|
ai_fixed="不能同时开启电脑玩家和固定序列",
|
||||||
|
ai_prebag="不能同时开启电脑玩家和自定义序列",
|
||||||
settingSaved="设置已保存",
|
settingSaved="设置已保存",
|
||||||
settingSavingError="设置保存失败:",
|
settingSavingError="设置保存失败:",
|
||||||
keyMapSaved="键位设置已保存",
|
keyMapSaved="键位设置已保存",
|
||||||
@@ -598,14 +602,14 @@ local langList={
|
|||||||
},
|
},
|
||||||
staff={
|
staff={
|
||||||
"作者:MrZ 邮箱:1046101471@qq.com",
|
"作者:MrZ 邮箱:1046101471@qq.com",
|
||||||
"",
|
|
||||||
"使用LOVE2D引擎",
|
"使用LOVE2D引擎",
|
||||||
"",
|
"",
|
||||||
"程序:MrZ, FinnTenzor",
|
"程序:MrZ, FinnTenzor",
|
||||||
"美术:MrZ, (Gnyar)",
|
"美术:MrZ, (T0722, Gnyar)",
|
||||||
"音乐:MrZ, (T0722)",
|
"音乐:MrZ, (T0722)",
|
||||||
"音效:MrZ",
|
"音效:MrZ",
|
||||||
"语音:Miya, MrZ",
|
"语音:Miya, MrZ",
|
||||||
|
"官网:渣渣120",
|
||||||
"",
|
"",
|
||||||
"特别感谢:",
|
"特别感谢:",
|
||||||
"Flyz, Farter, 蕴空之灵,",
|
"Flyz, Farter, 蕴空之灵,",
|
||||||
@@ -655,8 +659,8 @@ local langList={
|
|||||||
set3="无尽(3)",
|
set3="无尽(3)",
|
||||||
set4="隐形(4)",
|
set4="隐形(4)",
|
||||||
set5="极限(5)",
|
set5="极限(5)",
|
||||||
seq="高级设置(q)",
|
seq="高级设置(Q)",
|
||||||
draw="初始场地编辑",
|
draw="初始场地编辑(E)",
|
||||||
back="返回",
|
back="返回",
|
||||||
},
|
},
|
||||||
sequence={
|
sequence={
|
||||||
@@ -701,7 +705,6 @@ local langList={
|
|||||||
quickR="快速重新开始",
|
quickR="快速重新开始",
|
||||||
swap="组合键切换攻击模式",
|
swap="组合键切换攻击模式",
|
||||||
fine="极简操作提示音",
|
fine="极简操作提示音",
|
||||||
spawn="方块生成音",
|
|
||||||
back="返回",
|
back="返回",
|
||||||
},
|
},
|
||||||
setting_video={
|
setting_video={
|
||||||
@@ -729,10 +732,11 @@ local langList={
|
|||||||
game="←游戏设置",
|
game="←游戏设置",
|
||||||
graphic="画面设置→",
|
graphic="画面设置→",
|
||||||
sfx="音效",
|
sfx="音效",
|
||||||
|
stereo="立体声",
|
||||||
|
spawn="方块生成",
|
||||||
bgm="音乐",
|
bgm="音乐",
|
||||||
vib="震动",
|
vib="震动",
|
||||||
voc="语音",
|
voc="语音",
|
||||||
stereo="立体声",
|
|
||||||
back="返回",
|
back="返回",
|
||||||
},
|
},
|
||||||
setting_control={
|
setting_control={
|
||||||
@@ -962,6 +966,8 @@ local langList={
|
|||||||
nowPlaying="Now Playing:",
|
nowPlaying="Now Playing:",
|
||||||
page="Page:",
|
page="Page:",
|
||||||
|
|
||||||
|
ai_fixed="AI is incompatible with fixed sequence",
|
||||||
|
ai_prebag="AI is incompatible with custom sequence",
|
||||||
settingSaved="Settings Saved",
|
settingSaved="Settings Saved",
|
||||||
settingSavingError="Failed to save settings:",
|
settingSavingError="Failed to save settings:",
|
||||||
keyMapSaved="Key settings saved",
|
keyMapSaved="Key settings saved",
|
||||||
@@ -1040,7 +1046,6 @@ local langList={
|
|||||||
},
|
},
|
||||||
staff={
|
staff={
|
||||||
"Author: MrZ E-mail: 1046101471@qq.com",
|
"Author: MrZ E-mail: 1046101471@qq.com",
|
||||||
"",
|
|
||||||
"Powered by LOVE2D",
|
"Powered by LOVE2D",
|
||||||
"",
|
"",
|
||||||
"Program: MrZ, FinnTenzor",
|
"Program: MrZ, FinnTenzor",
|
||||||
@@ -1048,6 +1053,7 @@ local langList={
|
|||||||
"Music: MrZ, (T0722)",
|
"Music: MrZ, (T0722)",
|
||||||
"Sound: MrZ",
|
"Sound: MrZ",
|
||||||
"Voice: Miya, MrZ",
|
"Voice: Miya, MrZ",
|
||||||
|
"Web: 渣渣120",
|
||||||
"",
|
"",
|
||||||
"Special Thanks:",
|
"Special Thanks:",
|
||||||
"Flyz, Farter, 蕴空之灵,",
|
"Flyz, Farter, 蕴空之灵,",
|
||||||
@@ -1089,8 +1095,8 @@ local langList={
|
|||||||
set3="Inf. (3)",
|
set3="Inf. (3)",
|
||||||
set4="Blind (4)",
|
set4="Blind (4)",
|
||||||
set5="Master (5)",
|
set5="Master (5)",
|
||||||
seq="Advanced(q)",
|
seq="Advanced(Q)",
|
||||||
draw="Field Edit",
|
draw="Field Edit(E)",
|
||||||
back="Back",
|
back="Back",
|
||||||
},
|
},
|
||||||
sequence={
|
sequence={
|
||||||
@@ -1110,7 +1116,7 @@ local langList={
|
|||||||
demo="Don't show ×",
|
demo="Don't show ×",
|
||||||
copy="Copy",
|
copy="Copy",
|
||||||
paste="Paste",
|
paste="Paste",
|
||||||
custom="Args",
|
custom="Args(E)",
|
||||||
back="Back",
|
back="Back",
|
||||||
},
|
},
|
||||||
play={
|
play={
|
||||||
@@ -1135,7 +1141,6 @@ local langList={
|
|||||||
quickR="Quick Retry",
|
quickR="Quick Retry",
|
||||||
swap="Key Combination (Change Atk. Mode)",
|
swap="Key Combination (Change Atk. Mode)",
|
||||||
fine="Finesse Error Sound",
|
fine="Finesse Error Sound",
|
||||||
spawn="Piece Spawning Sound",
|
|
||||||
back="Back",
|
back="Back",
|
||||||
},
|
},
|
||||||
setting_video={
|
setting_video={
|
||||||
@@ -1163,10 +1168,11 @@ local langList={
|
|||||||
game="←Game",
|
game="←Game",
|
||||||
graphic="Video→",
|
graphic="Video→",
|
||||||
sfx="SFX",
|
sfx="SFX",
|
||||||
|
stereo="Stereo",
|
||||||
|
spawn="Spawning",
|
||||||
bgm="BGM",
|
bgm="BGM",
|
||||||
vib="Vibration",
|
vib="Vibration",
|
||||||
voc="Voice",
|
voc="Voice",
|
||||||
stereo="Stereo",
|
|
||||||
back="Back",
|
back="Back",
|
||||||
},
|
},
|
||||||
setting_control={
|
setting_control={
|
||||||
@@ -1396,6 +1402,8 @@ local langList={
|
|||||||
nowPlaying="~:",
|
nowPlaying="~:",
|
||||||
page=":",
|
page=":",
|
||||||
|
|
||||||
|
ai_fixed="X!!!",
|
||||||
|
ai_prebag="X!!!",
|
||||||
settingSaved="~~~",
|
settingSaved="~~~",
|
||||||
settingSavingError="x!:",
|
settingSavingError="x!:",
|
||||||
keyMapSaved="~~~",
|
keyMapSaved="~~~",
|
||||||
@@ -1474,7 +1482,6 @@ local langList={
|
|||||||
},
|
},
|
||||||
staff={
|
staff={
|
||||||
"Author: MrZ E-mail: 1046101471@qq.com",
|
"Author: MrZ E-mail: 1046101471@qq.com",
|
||||||
"",
|
|
||||||
"Powered by LOVE2D",
|
"Powered by LOVE2D",
|
||||||
"",
|
"",
|
||||||
"Program: MrZ, FinnTenzor",
|
"Program: MrZ, FinnTenzor",
|
||||||
@@ -1482,6 +1489,7 @@ local langList={
|
|||||||
"Music: MrZ, (T0722)",
|
"Music: MrZ, (T0722)",
|
||||||
"Sound: MrZ",
|
"Sound: MrZ",
|
||||||
"Voice: Miya, MrZ",
|
"Voice: Miya, MrZ",
|
||||||
|
"Web: 渣渣120",
|
||||||
"",
|
"",
|
||||||
"Special Thanks:",
|
"Special Thanks:",
|
||||||
"Flyz, Farter, 蕴空之灵,",
|
"Flyz, Farter, 蕴空之灵,",
|
||||||
@@ -1523,8 +1531,8 @@ local langList={
|
|||||||
set3="Inf. (3)",
|
set3="Inf. (3)",
|
||||||
set4="Blind (4)",
|
set4="Blind (4)",
|
||||||
set5="Master (5)",
|
set5="Master (5)",
|
||||||
seq="Advanced(q)",
|
seq="Advanced(Q)",
|
||||||
draw="Field Edit",
|
draw="Field Edit(E)",
|
||||||
back="X",
|
back="X",
|
||||||
},
|
},
|
||||||
sequence={
|
sequence={
|
||||||
@@ -1544,7 +1552,7 @@ local langList={
|
|||||||
demo="X ×",
|
demo="X ×",
|
||||||
copy="→__",
|
copy="→__",
|
||||||
paste="__→",
|
paste="__→",
|
||||||
custom="_?_",
|
custom="_?_(E)",
|
||||||
back="X",
|
back="X",
|
||||||
},
|
},
|
||||||
play={
|
play={
|
||||||
@@ -1596,10 +1604,11 @@ local langList={
|
|||||||
game="←Game",
|
game="←Game",
|
||||||
graphic="Video→",
|
graphic="Video→",
|
||||||
sfx="#!#",
|
sfx="#!#",
|
||||||
|
stereo="←~→",
|
||||||
|
spawn="#[]#",
|
||||||
bgm="#~#",
|
bgm="#~#",
|
||||||
vib="=~=",
|
vib="=~=",
|
||||||
voc="~~~",
|
voc="~~~",
|
||||||
stereo="←~→",
|
|
||||||
back="X",
|
back="X",
|
||||||
},
|
},
|
||||||
setting_control={
|
setting_control={
|
||||||
|
|||||||
@@ -29,13 +29,6 @@ local miniTitle_rect={
|
|||||||
{14,8,1,6},{19,8,1,6},{15,9,1,1},{16,10,1,1},{17,11,1,1},{18,12,1,1},
|
{14,8,1,6},{19,8,1,6},{15,9,1,1},{16,10,1,1},{17,11,1,1},{18,12,1,1},
|
||||||
{21,8,5,1},{21,13,5,1},{21,9,1,4},{25,9,1,4},
|
{21,8,5,1},{21,13,5,1},{21,9,1,4},{25,9,1,4},
|
||||||
}
|
}
|
||||||
local function stencil_miniTitle()
|
|
||||||
for i=1,#miniTitle_rect do
|
|
||||||
local a,b,c,d=unpack(miniTitle_rect[i])
|
|
||||||
gc.rectangle("fill",250+a*30,150+b*30,c*30,d*30)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
FX_attack={}--Attack beam
|
FX_attack={}--Attack beam
|
||||||
FX_badge={}--Badge thrown
|
FX_badge={}--Badge thrown
|
||||||
local function drawAtkPointer(x,y)
|
local function drawAtkPointer(x,y)
|
||||||
@@ -116,30 +109,62 @@ function Pnt.load()
|
|||||||
setFont(25)
|
setFont(25)
|
||||||
mStr(S.tip,640,400)
|
mStr(S.tip,640,400)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local titleTransform={
|
||||||
|
function(t)
|
||||||
|
gc.translate(0,max(50-t,0)^2/25)
|
||||||
|
end,
|
||||||
|
function(t)
|
||||||
|
gc.translate(0,-max(50-t,0)^2/25)
|
||||||
|
end,
|
||||||
|
function(t,i)
|
||||||
|
local d=max(50-t,0)
|
||||||
|
gc.translate(sin(Timer()*3+626*i)*d,cos(Timer()*3+626*i)*d)
|
||||||
|
end,
|
||||||
|
function(t,i)
|
||||||
|
local d=max(50-t,0)
|
||||||
|
gc.translate(sin(Timer()*3+626*i)*d,-cos(Timer()*3+626*i)*d)
|
||||||
|
end,
|
||||||
|
function(t)
|
||||||
|
gc.setColor(1,1,1,min(t*.02,1)+rnd()*.2)
|
||||||
|
end,
|
||||||
|
}
|
||||||
function Pnt.intro()
|
function Pnt.intro()
|
||||||
local T=sceneTemp
|
local s=sceneTemp
|
||||||
gc.stencil(stencil_miniTitle,"replace",1)
|
local t=s.t1
|
||||||
gc.setStencilTest("equal",1)
|
local T=(t+110)%300
|
||||||
gc.setColor(1,1,1,min(T,80)*.005)
|
if T<30 then
|
||||||
gc.push("transform")
|
gc.setLineWidth(4+(30-T)^1.626/62)
|
||||||
gc.translate(250,150)
|
else
|
||||||
gc.scale(30)
|
gc.setLineWidth(4)
|
||||||
gc.rectangle("fill",0,0,26,14)
|
end
|
||||||
gc.pop()
|
local L=title
|
||||||
gc.setColor(1,1,1,.06)
|
gc.push("transform")
|
||||||
for i=41,5,-2 do
|
gc.translate(126,226)
|
||||||
gc.setLineWidth(i)
|
for i=1,8 do
|
||||||
gc.line(200+(T-80)*25,130,(T-80)*25,590)
|
local T=t-i*15
|
||||||
|
if T>0 then
|
||||||
|
gc.push("transform")
|
||||||
|
gc.setColor(1,1,1,min(T*.025,1))
|
||||||
|
titleTransform[s.r[i]](T,i)
|
||||||
|
local dt=(t+62-5*i)%300
|
||||||
|
if dt<20 then
|
||||||
|
gc.translate(0,abs(10-dt)-10)
|
||||||
|
end
|
||||||
|
gc.polygon("line",L[i])
|
||||||
|
gc.pop()
|
||||||
end
|
end
|
||||||
gc.setStencilTest()
|
end
|
||||||
if T>=80 then
|
gc.pop()
|
||||||
gc.setColor(1,1,1,.5+sin((T-95)/30*3.142)*.5)
|
t=s.t2
|
||||||
|
if t>=80 then
|
||||||
|
gc.setColor(1,1,1,.6+sin((t-80)*.0626)*.3)
|
||||||
mText(drawableText.anykey,640,615+sin(Timer()*3)*5)
|
mText(drawableText.anykey,640,615+sin(Timer()*3)*5)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
function Pnt.main()
|
function Pnt.main()
|
||||||
gc.setColor(1,1,1)
|
gc.setColor(1,1,1)
|
||||||
gc.draw(IMG.coloredTitleImage,60,30,nil,1.3)
|
gc.draw(IMG.title_color,60,30,nil,1.3)
|
||||||
setFont(30)
|
setFont(30)
|
||||||
gc.print(gameVersion,70,125)
|
gc.print(gameVersion,70,125)
|
||||||
gc.print(system,610,100)
|
gc.print(system,610,100)
|
||||||
@@ -281,7 +306,7 @@ function Pnt.music()
|
|||||||
for i=1,BGM.len do
|
for i=1,BGM.len do
|
||||||
gc.print(BGM.list[i],50,90+30*i)
|
gc.print(BGM.list[i],50,90+30*i)
|
||||||
end
|
end
|
||||||
gc.draw(IMG.titleImage,640,310,nil,1.5,nil,206,35)
|
gc.draw(IMG.title,640,310,nil,1.5,nil,206,35)
|
||||||
if BGM.nowPlay then
|
if BGM.nowPlay then
|
||||||
setFont(45)
|
setFont(45)
|
||||||
gc.setColor(sin(Timer()*.5)*.2+.8,sin(Timer()*.7)*.2+.8,sin(Timer())*.2+.8)
|
gc.setColor(sin(Timer()*.5)*.2+.8,sin(Timer()*.7)*.2+.8,sin(Timer())*.2+.8)
|
||||||
@@ -289,7 +314,7 @@ function Pnt.music()
|
|||||||
local t=-Timer()%2.3/2
|
local t=-Timer()%2.3/2
|
||||||
if t<1 then
|
if t<1 then
|
||||||
gc.setColor(1,1,1,t)
|
gc.setColor(1,1,1,t)
|
||||||
gc.draw(IMG.coloredTitleImage,640,310,nil,1.5+.1-.1*t,1.5+.3-.3*t,206,35)
|
gc.draw(IMG.title_color,640,310,nil,1.5+.1-.1*t,1.5+.3-.3*t,206,35)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -319,10 +344,10 @@ function Pnt.sequence()
|
|||||||
setFont(30)
|
setFont(30)
|
||||||
local bag=preBag
|
local bag=preBag
|
||||||
local len=#bag
|
local len=#bag
|
||||||
|
|
||||||
setFont(40)
|
setFont(40)
|
||||||
gc.print(len,120,300)
|
gc.print(len,120,300)
|
||||||
|
|
||||||
local L=TEXTURE.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
|
||||||
@@ -540,13 +565,28 @@ function Pnt.pause()
|
|||||||
gc.push("transform")
|
gc.push("transform")
|
||||||
gc.translate(1026,400)
|
gc.translate(1026,400)
|
||||||
|
|
||||||
--axes
|
--Polygon
|
||||||
|
gc.push("transform")
|
||||||
|
gc.scale((3-2*T)*T)
|
||||||
|
gc.setColor(1,1,1,T*(.5+.3*sin(Timer()*6.26)))gc.polygon("line",S.standard)
|
||||||
|
_=S.color
|
||||||
|
gc.setColor(_[1],_[2],_[3],T*.626)
|
||||||
|
_=S.val
|
||||||
|
for i=1,9,2 do
|
||||||
|
gc.polygon("fill",0,0,_[i],_[i+1],_[i+2],_[i+3])
|
||||||
|
end
|
||||||
|
gc.polygon("fill",0,0,_[11],_[12],_[1],_[2])
|
||||||
|
gc.setColor(1,1,1,T)gc.polygon("line",S.val)
|
||||||
|
gc.pop()
|
||||||
|
|
||||||
|
--Axes
|
||||||
gc.setColor(1,1,1,T)
|
gc.setColor(1,1,1,T)
|
||||||
for i=1,3 do
|
for i=1,3 do
|
||||||
local x,y=hexList[2*i-1],hexList[2*i]
|
local x,y=hexList[2*i-1],hexList[2*i]
|
||||||
gc.line(-x,-y,x,y)
|
gc.line(-x,-y,x,y)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--Texts
|
||||||
local C
|
local C
|
||||||
_=Timer()%6.2832
|
_=Timer()%6.2832
|
||||||
if _>3.1416 then
|
if _>3.1416 then
|
||||||
@@ -561,16 +601,6 @@ function Pnt.pause()
|
|||||||
for i=1,6 do
|
for i=1,6 do
|
||||||
mStr(C[i],_[2*i-1],_[2*i])
|
mStr(C[i],_[2*i-1],_[2*i])
|
||||||
end
|
end
|
||||||
gc.scale((3-2*T)*T)
|
|
||||||
gc.setColor(1,1,1,T*(.5+.3*sin(Timer()*6.26)))gc.polygon("line",S.standard)
|
|
||||||
_=S.color
|
|
||||||
gc.setColor(_[1],_[2],_[3],T)
|
|
||||||
_=S.val
|
|
||||||
for i=1,9,2 do
|
|
||||||
gc.polygon("fill",0,0,_[i],_[i+1],_[i+2],_[i+3])
|
|
||||||
end
|
|
||||||
gc.polygon("fill",0,0,_[11],_[12],_[1],_[2])
|
|
||||||
gc.setColor(1,1,1,T)gc.polygon("line",S.val)
|
|
||||||
gc.pop()
|
gc.pop()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -700,7 +730,7 @@ function Pnt.setting_skin()
|
|||||||
gc.circle("fill",-10+140*N,340,sin(Timer()*10)+5)
|
gc.circle("fill",-10+140*N,340,sin(Timer()*10)+5)
|
||||||
end
|
end
|
||||||
for i=1,6 do
|
for i=1,6 do
|
||||||
gc.draw(blockSkin[11+i],1110,100+60*i,nil,2)
|
gc.draw(blockSkin[11+i],570+60*i,610,nil,2)
|
||||||
end
|
end
|
||||||
gc.draw(drawableText.setting_skin,80,50)
|
gc.draw(drawableText.setting_skin,80,50)
|
||||||
end
|
end
|
||||||
@@ -735,7 +765,7 @@ function Pnt.help()
|
|||||||
end
|
end
|
||||||
setFont(19)
|
setFont(19)
|
||||||
gc.print(text.used,30,330)
|
gc.print(text.used,30,330)
|
||||||
gc.draw(IMG.titleImage,280,610,.1,1+.05*sin(Timer()*2.6),nil,206,35)
|
gc.draw(IMG.title,280,610,.1,1+.05*sin(Timer()*2.6),nil,206,35)
|
||||||
gc.setLineWidth(3)
|
gc.setLineWidth(3)
|
||||||
gc.rectangle("line",18,18,263,263)
|
gc.rectangle("line",18,18,263,263)
|
||||||
gc.rectangle("line",1012,18,250,250)
|
gc.rectangle("line",1012,18,250,250)
|
||||||
@@ -755,8 +785,8 @@ function Pnt.staff()
|
|||||||
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
|
end
|
||||||
mDraw(IMG.coloredTitleImage,640,800-t*40,nil,2)
|
mDraw(IMG.title_color,640,800-t*40,nil,2)
|
||||||
mDraw(IMG.coloredTitleImage,640,2160-t*40,nil,2)
|
mDraw(IMG.title_color,640,2160-t*40,nil,2)
|
||||||
end
|
end
|
||||||
function Pnt.stat()
|
function Pnt.stat()
|
||||||
local chart=sceneTemp.chart
|
local chart=sceneTemp.chart
|
||||||
@@ -799,7 +829,7 @@ function Pnt.stat()
|
|||||||
gc.line(40,240+40*y,600,240+40*y)
|
gc.line(40,240+40*y,600,240+40*y)
|
||||||
end
|
end
|
||||||
|
|
||||||
gc.draw(IMG.titleImage,260,615,.2+.04*sin(Timer()*3),nil,nil,206,35)
|
gc.draw(IMG.title,260,615,.2+.04*sin(Timer()*3),nil,nil,206,35)
|
||||||
end
|
end
|
||||||
function Pnt.history()
|
function Pnt.history()
|
||||||
gc.setColor(.2,.2,.2,.7)
|
gc.setColor(.2,.2,.2,.7)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
local gc=love.graphics
|
local gc=love.graphics
|
||||||
local int,log=math.floor,math.log
|
local int,max,log=math.floor,math.max,math.log
|
||||||
local sin,cos=math.sin,math.cos
|
local rnd,sin,cos=math.random,math.sin,math.cos
|
||||||
local max,format=math.max,string.format
|
local format=string.format
|
||||||
local scr=scr
|
local scr=scr
|
||||||
local SCN={
|
local SCN={
|
||||||
cur="load",--Current scene
|
cur="load",--Current scene
|
||||||
@@ -32,12 +32,19 @@ function sceneInit.load()
|
|||||||
#Modes,
|
#Modes,
|
||||||
1,
|
1,
|
||||||
},
|
},
|
||||||
skip=false,--if skipping
|
skip=false,--If skipped
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
function sceneInit.intro()
|
function sceneInit.intro()
|
||||||
BG.set("space")
|
BG.set("space")
|
||||||
sceneTemp=0--animation timer
|
sceneTemp={
|
||||||
|
t1=0,--Timer 1
|
||||||
|
t2=0,--Timer 2
|
||||||
|
r={},--Random animation type
|
||||||
|
}
|
||||||
|
for i=1,8 do
|
||||||
|
sceneTemp.r[i]=rnd(5)
|
||||||
|
end
|
||||||
BGM.play("blank")
|
BGM.play("blank")
|
||||||
end
|
end
|
||||||
function sceneInit.main()
|
function sceneInit.main()
|
||||||
@@ -47,13 +54,13 @@ function sceneInit.main()
|
|||||||
modeEnv={}
|
modeEnv={}
|
||||||
if not players[1]then
|
if not players[1]then
|
||||||
PLY.newDemoPlayer(1,900,35,1.1)
|
PLY.newDemoPlayer(1,900,35,1.1)
|
||||||
end--create demo player
|
end--Create demo player
|
||||||
end
|
end
|
||||||
function sceneInit.music()
|
function sceneInit.music()
|
||||||
if BGM.nowPlay then
|
if BGM.nowPlay then
|
||||||
for i=1,BGM.len do
|
for i=1,BGM.len do
|
||||||
if BGM.list[i]==BGM.nowPlay then
|
if BGM.list[i]==BGM.nowPlay then
|
||||||
sceneTemp=i--music select
|
sceneTemp=i--Music selected
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -74,7 +81,7 @@ function sceneInit.mode(org)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
function sceneInit.custom()
|
function sceneInit.custom()
|
||||||
sceneTemp=1--option select
|
sceneTemp=1--Option selected
|
||||||
destroyPlayers()
|
destroyPlayers()
|
||||||
BG.set(customRange.bg[customSel[12]])
|
BG.set(customRange.bg[customSel[12]])
|
||||||
BGM.play(customRange.bgm[customSel[13]])
|
BGM.play(customRange.bgm[customSel[13]])
|
||||||
@@ -128,19 +135,22 @@ function sceneInit.pause(org)
|
|||||||
radar={
|
radar={
|
||||||
(S.off+S.dig)/S.time*60,--DefPM
|
(S.off+S.dig)/S.time*60,--DefPM
|
||||||
(S.off)/S.time*60, --OffPM
|
(S.off)/S.time*60, --OffPM
|
||||||
S.atk/S.time*60, --AtkPM
|
S.atk/S.time*60, --AtkPM
|
||||||
S.send/S.time*60, --SendPM
|
S.send/S.time*60, --SendPM
|
||||||
S.piece/S.time*24, --LinePM
|
S.piece/S.time*24, --LinePM
|
||||||
S.dig/S.time*60, --DigPM
|
S.dig/S.time*60, --DigPM
|
||||||
},
|
},
|
||||||
val={1/80,1/40,1/60,1/60,1/100,1/40},
|
val={1/80,1/40,1/60,1/60,1/100,1/40},
|
||||||
timing=org=="play",
|
timing=org=="play",
|
||||||
}
|
}
|
||||||
local _=sceneTemp
|
local _=sceneTemp
|
||||||
local A,B=_.radar,_.val
|
local A,B=_.radar,_.val
|
||||||
|
|
||||||
|
--Normalize Values
|
||||||
for i=1,6 do
|
for i=1,6 do
|
||||||
B[i]=B[i]*A[i]if B[i]>1.26 then B[i]=1.26+(B[i]-1.26)*.26 end
|
B[i]=B[i]*A[i]if B[i]>1.26 then B[i]=1.26+log(B[i]-.26,10)end
|
||||||
end--normalize vals
|
end
|
||||||
|
|
||||||
for i=1,6 do
|
for i=1,6 do
|
||||||
A[i]=format("%.2f",A[i])..text.radarData[i]
|
A[i]=format("%.2f",A[i])..text.radarData[i]
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -36,8 +36,8 @@ end
|
|||||||
function SFX.fieldPlay(s,v,P)
|
function SFX.fieldPlay(s,v,P)
|
||||||
SFX.play(s,v,(P.curX+P.sc[2]-6.5)*.15)
|
SFX.play(s,v,(P.curX+P.sc[2]-6.5)*.15)
|
||||||
end
|
end
|
||||||
function SFX.play(s,v,pos)
|
function SFX.play(s,vol,pos,force)
|
||||||
if setting.sfx==0 then return end
|
if setting.sfx==0 and not force then return end
|
||||||
local S=SFX.list[s]--source list
|
local S=SFX.list[s]--source list
|
||||||
if not S then return end
|
if not S then return end
|
||||||
local n=1
|
local n=1
|
||||||
@@ -58,7 +58,11 @@ function SFX.play(s,v,pos)
|
|||||||
S:setPosition(0,0,0)
|
S:setPosition(0,0,0)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
S:setVolume((v or 1)*setting.sfx*.1)
|
if not force then
|
||||||
|
S:setVolume((vol or 1)*setting.sfx*.1)
|
||||||
|
else
|
||||||
|
S:setVolume(vol*.1)
|
||||||
|
end
|
||||||
S:play()
|
S:play()
|
||||||
end
|
end
|
||||||
function SFX.reset()
|
function SFX.reset()
|
||||||
|
|||||||
@@ -7,7 +7,8 @@ return{
|
|||||||
warning=N("warning"),
|
warning=N("warning"),
|
||||||
|
|
||||||
aura=N("aura"),
|
aura=N("aura"),
|
||||||
gradient1=N("grad1"),--Horizonal
|
gradient1=N("grad1"),--Horizonal red-blue gradient
|
||||||
gradient2=N("grad2"),--Vertical
|
gradient2=N("grad2"),--Vertical red-green gradient
|
||||||
gradient3=N("grad3"),--Oblique
|
rgb1=N("rgb1"),--colorful RGB
|
||||||
|
rgb2=N("rgb2"),--blue RGB
|
||||||
}
|
}
|
||||||
@@ -5,6 +5,6 @@ vec4 effect(vec4 color,Image text,vec2 pos,vec2 scr_pos){
|
|||||||
.8-x*.6,
|
.8-x*.6,
|
||||||
.3+.2*sin(t),
|
.3+.2*sin(t),
|
||||||
.15+x*.7,
|
.15+x*.7,
|
||||||
1
|
1.
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -5,6 +5,6 @@ vec4 effect(vec4 color,Image text,vec2 pos,vec2 scr_pos){
|
|||||||
.8-y*.6,
|
.8-y*.6,
|
||||||
.2+y*.4,
|
.2+y*.4,
|
||||||
.3+.1*sin(t),
|
.3+.1*sin(t),
|
||||||
1
|
1.
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -6,6 +6,6 @@ vec4 effect(vec4 color,Image text,vec2 pos,vec2 scr_pos){
|
|||||||
.8-y*.6-.2*sin(t/6.26),
|
.8-y*.6-.2*sin(t/6.26),
|
||||||
.3+.1*sin(t),
|
.3+.1*sin(t),
|
||||||
.2+x*.6,
|
.2+x*.6,
|
||||||
1
|
1.
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
11
Zframework/shader/rgb2.glsl
Normal file
11
Zframework/shader/rgb2.glsl
Normal 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(
|
||||||
|
.4-y*.3-.1*sin(t/6.26),
|
||||||
|
.2+.1*sin(t),
|
||||||
|
abs(.7-x*1.2+y*.5*sin(t/16.)),
|
||||||
|
1.
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -55,8 +55,9 @@ function Tmr.load()
|
|||||||
until not S.skip and Timer()-t>.01
|
until not S.skip and Timer()-t>.01
|
||||||
end
|
end
|
||||||
function Tmr.intro()
|
function Tmr.intro()
|
||||||
sceneTemp=sceneTemp+1
|
local s=sceneTemp
|
||||||
if sceneTemp==200 then sceneTemp=80 end
|
s.t1=s.t1+1
|
||||||
|
s.t2=s.t2+1
|
||||||
end
|
end
|
||||||
function Tmr.main(dt)
|
function Tmr.main(dt)
|
||||||
players[1]:update(dt)
|
players[1]:update(dt)
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ function toTime(s)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
function mStr(s,x,y)
|
function mStr(s,x,y)
|
||||||
gc.printf(s,x-400,y,800,"center")
|
gc.printf(s,x-450,y,900,"center")
|
||||||
end
|
end
|
||||||
function mText(s,x,y)
|
function mText(s,x,y)
|
||||||
gc.draw(s,x-s:getWidth()*.5,y)
|
gc.draw(s,x-s:getWidth()*.5,y)
|
||||||
|
|||||||
@@ -103,8 +103,13 @@ local Widgets={
|
|||||||
quit= newButton(590,610,160,100,C.lightGrey, 45,function()VOC.play("bye")SCN.swapTo("quit","slowFade")end,nil,"play"),
|
quit= newButton(590,610,160,100,C.lightGrey, 45,function()VOC.play("bye")SCN.swapTo("quit","slowFade")end,nil,"play"),
|
||||||
},
|
},
|
||||||
mode={
|
mode={
|
||||||
setting=newButton(1100, 540,240,90,C.lightGreen, 40,function()SCN.goto("custom")end,function()return mapCam.sel~="custom_clear" and mapCam.sel~="custom_puzzle" end),
|
setting=newButton(1100, 540,240,90,C.lightGreen, 40,function()
|
||||||
start= newButton(1040, 655,180,80,C.lightGrey, 40,function()if mapCam.sel then SCN.push()loadGame(mapCam.sel)end end,function()return not mapCam.sel end),
|
SCN.goto("custom")
|
||||||
|
end,
|
||||||
|
function()
|
||||||
|
return mapCam.sel~="custom_clear" and mapCam.sel~="custom_puzzle"
|
||||||
|
end),
|
||||||
|
start= newButton(1040, 655,180,80,C.lightGrey, 40,pressKey("return"),function()return not mapCam.sel end),
|
||||||
back= newButton(1200, 655,120,80,C.white, 40,BACK),
|
back= newButton(1200, 655,120,80,C.white, 40,BACK),
|
||||||
},
|
},
|
||||||
music={
|
music={
|
||||||
@@ -126,8 +131,8 @@ local Widgets={
|
|||||||
set4= newButton(940, 560,260,70, C.lightYellow, 32,pressKey("4")),
|
set4= newButton(940, 560,260,70, C.lightYellow, 32,pressKey("4")),
|
||||||
set5= newButton(940, 640,260,70, C.lightYellow, 32,pressKey("5")),
|
set5= newButton(940, 640,260,70, C.lightYellow, 32,pressKey("5")),
|
||||||
|
|
||||||
seq= newButton(665, 415,200,40, C.lightGreen, 30,function()SCN.goto("sequence")end),
|
seq= newButton(665, 415,200,40, C.lightGreen, 30,pressKey("q")),
|
||||||
draw= newButton(150, 80, 220,80, C.white, 35,function()SCN.swapTo("draw")end),
|
draw= newButton(150, 80, 220,80, C.white, 35,pressKey("e")),
|
||||||
back= newButton(1200, 640,120,120,C.white, 35,BACK),
|
back= newButton(1200, 640,120,120,C.white, 35,BACK),
|
||||||
},
|
},
|
||||||
sequence={
|
sequence={
|
||||||
@@ -223,8 +228,7 @@ local Widgets={
|
|||||||
end,nil,"quickR"),
|
end,nil,"quickR"),
|
||||||
quickR= newSwitch(1050,320,35, SETval("quickR"), SETrev("quickR"), nil,"swap"),
|
quickR= newSwitch(1050,320,35, SETval("quickR"), SETrev("quickR"), nil,"swap"),
|
||||||
swap= newSwitch(1050,400,20, SETval("swap"), SETrev("swap"), nil,"fine"),
|
swap= newSwitch(1050,400,20, SETval("swap"), SETrev("swap"), nil,"fine"),
|
||||||
fine= newSwitch(1050,480,20, SETval("fine"), SETrev("fine"), nil,"spawn"),
|
fine= newSwitch(1050,480,20, SETval("fine"), SETrev("fine"), nil,"back"),
|
||||||
spawn= newSwitch(1050,560,20, SETval("spawn"), SETrev("spawn"), nil,"back"),
|
|
||||||
back= newButton(1140,650,200,80,C.white,40,BACK, nil,"graphic"),
|
back= newButton(1140,650,200,80,C.white,40,BACK, nil,"graphic"),
|
||||||
},
|
},
|
||||||
setting_video={
|
setting_video={
|
||||||
@@ -259,13 +263,14 @@ local Widgets={
|
|||||||
back= newButton(1140,650,200,80,C.white,40,BACK,nil,"sound"),
|
back= newButton(1140,650,200,80,C.white,40,BACK,nil,"sound"),
|
||||||
},
|
},
|
||||||
setting_sound={
|
setting_sound={
|
||||||
game= newButton(200,80,240,80,C.lightCyan,35,function()SCN.swapTo("setting_game")end, nil,"graphic"),
|
game= newButton(200,80,240,80,C.lightCyan,35,function()SCN.swapTo("setting_game")end, nil,"graphic"),
|
||||||
graphic=newButton(1080,80,240,80,C.lightCyan,35,function()SCN.swapTo("setting_video")end, nil,"sfx"),
|
graphic=newButton(1080,80,240,80,C.lightCyan,35,function()SCN.swapTo("setting_video")end, nil,"sfx"),
|
||||||
sfx= newSlider(180,250,400,10,35,function()SFX.play("blip_1")end, SETval("sfx"), SETsto("sfx"), nil,"bgm"),
|
sfx= newSlider(180,200,400,10,35,function()SFX.play("blip_1")end, SETval("sfx"), SETsto("sfx"), nil,"stereo"),
|
||||||
bgm= newSlider(750,250,400,10,35,function()BGM.freshVolume()end, SETval("bgm"), SETsto("bgm"), nil,"vib"),
|
stereo= newSlider(180,500,400,10,35,function()SFX.play("move",1,-1)SFX.play("lock",1,1)end, SETval("stereo"), SETsto("stereo"),function()return setting.sfx==0 end,"spawn"),
|
||||||
vib= newSlider(180,440,400,5 ,28,function()VIB(2)end, SETval("vib"), SETsto("vib"), nil,"voc"),
|
spawn= newSlider(180,300,400,10,30,function()SFX.play("spawn_1",setting.spawn,nil,true)end,SETval("spawn"), SETsto("spawn"),nil,"bgm"),
|
||||||
voc= newSlider(750,440,400,10,32,function()VOC.play("nya")end, SETval("voc"), SETsto("voc"), nil,"stereo"),
|
bgm= newSlider(180,400,400,10,35,function()BGM.freshVolume()end, SETval("bgm"), SETsto("bgm"), nil,"vib"),
|
||||||
stereo= newSlider(180,630,400,10,35,function()SFX.play("move",1,-1)SFX.play("lock",1,1)end, SETval("stereo"), SETsto("stereo"),function()return setting.sfx==0 end,"back"),
|
vib= newSlider(750,200,400,5 ,28,function()VIB(2)end, SETval("vib"), SETsto("vib"), nil,"voc"),
|
||||||
|
voc= newSlider(750,300,400,10,32,function()VOC.play("nya")end, SETval("voc"), SETsto("voc"), nil,"back"),
|
||||||
back= newButton(1140,650,200,80,C.white,40,BACK,nil,"game"),
|
back= newButton(1140,650,200,80,C.white,40,BACK,nil,"game"),
|
||||||
},
|
},
|
||||||
setting_control={
|
setting_control={
|
||||||
@@ -410,7 +415,7 @@ local Widgets={
|
|||||||
help={
|
help={
|
||||||
staff= newButton(980,500,150,80,C.white,32,function()SCN.goto("staff")end,nil,"his"),
|
staff= newButton(980,500,150,80,C.white,32,function()SCN.goto("staff")end,nil,"his"),
|
||||||
his= newButton(1160,500,150,80,C.white,32,function()SCN.goto("history")end,nil,"qq"),
|
his= newButton(1160,500,150,80,C.white,32,function()SCN.goto("history")end,nil,"qq"),
|
||||||
qq= newButton(980,600,150,80,C.white,32,function()love.system.openURL("tencent://message/?uin=1046101471&Site=&Menu=yes")end,mobileHide,"back"),
|
qq= newButton(1070,600,200,80,C.white,32,function()love.system.openURL("tencent://message/?uin=1046101471&Site=&Menu=yes")end,mobileHide,"back"),
|
||||||
back= newButton(640,600,200,80,C.white,40,BACK,nil,"staff"),
|
back= newButton(640,600,200,80,C.white,40,BACK,nil,"staff"),
|
||||||
},
|
},
|
||||||
staff={
|
staff={
|
||||||
|
|||||||
BIN
image/mess/title_new.png
Normal file
BIN
image/mess/title_new.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 27 KiB |
12
main.lua
12
main.lua
@@ -1,6 +1,11 @@
|
|||||||
--[[
|
--[[
|
||||||
Techmino is my first "huge project"
|
______ __ _
|
||||||
optimization is welcomed if you also love tetromino game
|
/_ __/___ _____ / /_ ____ ___ (_)____ ____
|
||||||
|
/ / / _ \ / ___// __ \ / __ `__ \ / // __ \ / __ \
|
||||||
|
/ / / __// /__ / / / // / / / / // // / / // /_/ /
|
||||||
|
/_/ \___/ \___//_/ /_//_/ /_/ /_//_//_/ /_/ \____/
|
||||||
|
Techmino is my first "huge project"
|
||||||
|
optimization is welcomed if you also love tetromino game
|
||||||
]]
|
]]
|
||||||
|
|
||||||
--Global Setting & Vars
|
--Global Setting & Vars
|
||||||
@@ -81,6 +86,9 @@ if fs.getInfo("virtualkey.dat")then FILE.loadVK()end
|
|||||||
|
|
||||||
--update data file
|
--update data file
|
||||||
S=stat
|
S=stat
|
||||||
|
if S.version=="Alpha V0.9.1"then
|
||||||
|
setting.spawn=0
|
||||||
|
end
|
||||||
if S.version~=gameVersion then
|
if S.version~=gameVersion then
|
||||||
S.version=gameVersion
|
S.version=gameVersion
|
||||||
TEXT.show(text.newVersion,640,200,30,"fly",.3)
|
TEXT.show(text.newVersion,640,200,30,"fly",.3)
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ return{
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
bg="game3",bgm="push",
|
bg="game4",bgm="push",
|
||||||
},
|
},
|
||||||
pauseLimit=true,
|
pauseLimit=true,
|
||||||
load=function()
|
load=function()
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ return{
|
|||||||
mStr(P.stat.row,-81,220)
|
mStr(P.stat.row,-81,220)
|
||||||
mStr(P.stat.clears[4],-81,340)
|
mStr(P.stat.clears[4],-81,340)
|
||||||
gc.setColor(1,1,1,.2)
|
gc.setColor(1,1,1,.2)
|
||||||
gc.draw(IMG.electric,-26,120,0,2.6)
|
gc.draw(IMG.electric,-26,106,0,2.6)
|
||||||
end,
|
end,
|
||||||
score=function(P)return{min(P.stat.row or 200),P.stat.time}end,
|
score=function(P)return{min(P.stat.row or 200),P.stat.time}end,
|
||||||
scoreDisp=function(D)return D[1].." Lines "..toTime(D[2])end,
|
scoreDisp=function(D)return D[1].." Lines "..toTime(D[2])end,
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ return{
|
|||||||
mStr(P.stat.row,-81,220)
|
mStr(P.stat.row,-81,220)
|
||||||
mStr(P.stat.clears[4],-81,340)
|
mStr(P.stat.clears[4],-81,340)
|
||||||
gc.setColor(1,1,1,.2)
|
gc.setColor(1,1,1,.2)
|
||||||
gc.draw(IMG.electric,-26,120,0,2.6)
|
gc.draw(IMG.electric,-26,106,0,2.6)
|
||||||
end,
|
end,
|
||||||
score=function(P)return{min(P.stat.row or 200),P.stat.time}end,
|
score=function(P)return{min(P.stat.row or 200),P.stat.time}end,
|
||||||
scoreDisp=function(D)return D[1].." Lines "..toTime(D[2])end,
|
scoreDisp=function(D)return D[1].." Lines "..toTime(D[2])end,
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ return{
|
|||||||
mStr(P.stat.row,-81,220)
|
mStr(P.stat.row,-81,220)
|
||||||
mStr(P.stat.clears[4],-81,340)
|
mStr(P.stat.clears[4],-81,340)
|
||||||
gc.setColor(1,1,1,.2)
|
gc.setColor(1,1,1,.2)
|
||||||
gc.draw(IMG.electric,-26,120,0,2.6)
|
gc.draw(IMG.electric,-26,106,0,2.6)
|
||||||
end,
|
end,
|
||||||
score=function(P)return{min(P.stat.row or 200),P.stat.time}end,
|
score=function(P)return{min(P.stat.row or 200),P.stat.time}end,
|
||||||
scoreDisp=function(D)return D[1].." Lines "..toTime(D[2])end,
|
scoreDisp=function(D)return D[1].." Lines "..toTime(D[2])end,
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ return{
|
|||||||
mStr(P.stat.row,-81,220)
|
mStr(P.stat.row,-81,220)
|
||||||
mStr(P.stat.clears[4],-81,340)
|
mStr(P.stat.clears[4],-81,340)
|
||||||
gc.setColor(1,1,1,.2)
|
gc.setColor(1,1,1,.2)
|
||||||
gc.draw(IMG.electric,-26,120,0,2.6)
|
gc.draw(IMG.electric,-26,106,0,2.6)
|
||||||
end,
|
end,
|
||||||
score=function(P)return{min(P.stat.row or 200),P.stat.time}end,
|
score=function(P)return{min(P.stat.row or 200),P.stat.time}end,
|
||||||
scoreDisp=function(D)return D[1].." Lines "..toTime(D[2])end,
|
scoreDisp=function(D)return D[1].." Lines "..toTime(D[2])end,
|
||||||
|
|||||||
@@ -12,7 +12,11 @@ return{
|
|||||||
end
|
end
|
||||||
modeEnv._20G=modeEnv.drop==0
|
modeEnv._20G=modeEnv.drop==0
|
||||||
modeEnv.oncehold=customSel[6]==1
|
modeEnv.oncehold=customSel[6]==1
|
||||||
if preBag[1]then modeEnv.bag=preBag end
|
if preBag[1]then
|
||||||
|
modeEnv.bag=preBag
|
||||||
|
else
|
||||||
|
modeEnv.bag=nil
|
||||||
|
end
|
||||||
PLY.newPlayer(1,340,15)
|
PLY.newPlayer(1,340,15)
|
||||||
local L=modeEnv.opponent
|
local L=modeEnv.opponent
|
||||||
if L~=0 then
|
if L~=0 then
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ return{
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
bg="game3",bgm="way",
|
bg="game4",bgm="way",
|
||||||
},
|
},
|
||||||
pauseLimit=true,
|
pauseLimit=true,
|
||||||
load=function()
|
load=function()
|
||||||
|
|||||||
@@ -113,8 +113,8 @@ return{
|
|||||||
if L>=100 then
|
if L>=100 then
|
||||||
local T=P.stat.time
|
local T=P.stat.time
|
||||||
return
|
return
|
||||||
T<=70 and 5 or
|
T<=90 and 5 or
|
||||||
T<=110 and 4 or
|
T<=105 and 4 or
|
||||||
T<=160 and 3 or
|
T<=160 and 3 or
|
||||||
T<=240 and 2 or
|
T<=240 and 2 or
|
||||||
1
|
1
|
||||||
|
|||||||
20
parts/ai.lua
20
parts/ai.lua
@@ -18,7 +18,7 @@ local Timer=love.timer.getTime
|
|||||||
local blockPos={4,4,4,4,4,5,4}
|
local blockPos={4,4,4,4,4,5,4}
|
||||||
local scs={{1,2},{1,2},{1,2},{1,2},{1,2},{1.5,1.5},{0.5,2.5}}
|
local scs={{1,2},{1,2},{1,2},{1,2},{1,2},{1.5,1.5},{0.5,2.5}}
|
||||||
-------------------------------------------------Cold clear
|
-------------------------------------------------Cold clear
|
||||||
local CCblockID={4,3,5,6,1,2,0}
|
local CCblockID={4,3,6,5,1,2,0}
|
||||||
if system=="Windows"then
|
if system=="Windows"then
|
||||||
require("CCloader")
|
require("CCloader")
|
||||||
BOT={
|
BOT={
|
||||||
@@ -73,7 +73,10 @@ if system=="Windows"then
|
|||||||
P.curX,P.curY=blockPos[P.cur.id],21+ceil(P.fieldBeneath/30)-P.r+min(int(#P.field*.2),2)
|
P.curX,P.curY=blockPos[P.cur.id],21+ceil(P.fieldBeneath/30)-P.r+min(int(#P.field*.2),2)
|
||||||
|
|
||||||
P:newNext()
|
P:newNext()
|
||||||
BOT.addNext(P.AI_bot,CCblockID[P.next[P.AIdata.next].id])
|
local id=CCblockID[P.next[P.AIdata.next].id]
|
||||||
|
if id then
|
||||||
|
BOT.addNext(P.AI_bot,id)
|
||||||
|
end
|
||||||
collectgarbage()
|
collectgarbage()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -205,7 +208,15 @@ return{
|
|||||||
end
|
end
|
||||||
local best={x=1,dir=0,hold=false,score=-1e99}
|
local best={x=1,dir=0,hold=false,score=-1e99}
|
||||||
for ifhold=0,P.gameEnv.hold and 1 or 0 do
|
for ifhold=0,P.gameEnv.hold and 1 or 0 do
|
||||||
local bn=ifhold==0 and P.cur.id or P.hd and P.hd.id or P.next[1]and P.next[1].id
|
--Get block id
|
||||||
|
local bn
|
||||||
|
if ifhold==0 then
|
||||||
|
bn=P.cur and P.cur.id
|
||||||
|
else
|
||||||
|
bn=P.hd and P.hd.id or P.next[1]and P.next[1].id
|
||||||
|
end
|
||||||
|
if not bn then goto CTN end
|
||||||
|
|
||||||
for dir=0,dirCount[bn] do--each dir
|
for dir=0,dirCount[bn] do--each dir
|
||||||
local cb=blocks[bn][dir]
|
local cb=blocks[bn][dir]
|
||||||
for cx=1,11-#cb[1]do--each pos
|
for cx=1,11-#cb[1]do--each pos
|
||||||
@@ -229,8 +240,9 @@ return{
|
|||||||
resetField(field_org,Tfield,cy)
|
resetField(field_org,Tfield,cy)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
::CTN::
|
||||||
end
|
end
|
||||||
|
if not best.bn then return 1 end
|
||||||
while #Tfield>0 do
|
while #Tfield>0 do
|
||||||
freeRow.discard(rem(Tfield,1))
|
freeRow.discard(rem(Tfield,1))
|
||||||
end--Release cache
|
end--Release cache
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ local s={
|
|||||||
quickR=true,
|
quickR=true,
|
||||||
swap=true,
|
swap=true,
|
||||||
fine=false,
|
fine=false,
|
||||||
spawn=false,
|
|
||||||
lang=1,
|
lang=1,
|
||||||
skinSet=1,
|
skinSet=1,
|
||||||
skin={1,5,8,2,10,3,7,1,5,1,5,8,2,10,3,7,10,7,8,2,8,2,1,5,3},
|
skin={1,5,8,2,10,3,7,1,5,1,5,8,2,10,3,7,10,7,8,2,8,2,1,5,3},
|
||||||
@@ -34,6 +33,7 @@ local s={
|
|||||||
|
|
||||||
--sound
|
--sound
|
||||||
sfx=10,
|
sfx=10,
|
||||||
|
spawn=0,
|
||||||
bgm=7,
|
bgm=7,
|
||||||
stereo=6,
|
stereo=6,
|
||||||
vib=0,
|
vib=0,
|
||||||
|
|||||||
@@ -67,23 +67,31 @@ function copyBoard()
|
|||||||
TEXT.show(text.copySuccess,350,360,40,"appear",.5)
|
TEXT.show(text.copySuccess,350,360,40,"appear",.5)
|
||||||
end
|
end
|
||||||
function pasteBoard()
|
function pasteBoard()
|
||||||
local str=love.system.getClipboardText()
|
local _
|
||||||
local fX,fY=1,1--*ptr for Field(r*10+(c-1))
|
local fX,fY=1,1--*ptr for Field(r*10+(c-1))
|
||||||
local _,Bid
|
|
||||||
|
--Read data
|
||||||
|
local str=love.system.getClipboardText()
|
||||||
local p=find(str,":")--ptr*
|
local p=find(str,":")--ptr*
|
||||||
if p then str=sub(str,p+1)end
|
if p then str=sub(str,p+1)end
|
||||||
_,str=pcall(data.decode,"string","base64",str)
|
_,str=pcall(data.decode,"string","base64",str)
|
||||||
if not _ then goto ERROR end
|
if not _ then goto ERROR end
|
||||||
_,str=pcall(data.decompress,"string","deflate",str)
|
_,str=pcall(data.decompress,"string","deflate",str)
|
||||||
if not _ then goto ERROR end
|
if not _ then goto ERROR end
|
||||||
|
|
||||||
p=1
|
p=1
|
||||||
|
|
||||||
while true do
|
while true do
|
||||||
_=byte(str,p)--1byte
|
_=byte(str,p)--1byte
|
||||||
if not _ then
|
if not _ then
|
||||||
if fX~=1 then goto ERROR
|
if fX~=1 then
|
||||||
else break
|
goto ERROR
|
||||||
|
else
|
||||||
|
fY=fY+1
|
||||||
|
break
|
||||||
end
|
end
|
||||||
end--str end
|
end--str end
|
||||||
|
|
||||||
__=_%32-1--block id
|
__=_%32-1--block id
|
||||||
if __>17 then goto ERROR end--illegal blockid
|
if __>17 then goto ERROR end--illegal blockid
|
||||||
_=int(_/32)--mode id
|
_=int(_/32)--mode id
|
||||||
@@ -91,8 +99,9 @@ function pasteBoard()
|
|||||||
if fX<10 then
|
if fX<10 then
|
||||||
fX=fX+1
|
fX=fX+1
|
||||||
else
|
else
|
||||||
if fY==20 then break end
|
fY=fY+1
|
||||||
fX=1;fY=fY+1
|
if fY>20 then break end
|
||||||
|
fX=1
|
||||||
end
|
end
|
||||||
p=p+1
|
p=p+1
|
||||||
end
|
end
|
||||||
@@ -215,7 +224,6 @@ function resumeGame()
|
|||||||
SCN.swapTo("play","none")
|
SCN.swapTo("play","none")
|
||||||
end
|
end
|
||||||
function loadGame(M)
|
function loadGame(M)
|
||||||
print(M)
|
|
||||||
--rec={}
|
--rec={}
|
||||||
stat.lastPlay=M
|
stat.lastPlay=M
|
||||||
curMode=Modes[M]
|
curMode=Modes[M]
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ local TRS={
|
|||||||
[13]={{ 0,-1},{ 0, 1},{ 1, 0}},
|
[13]={{ 0,-1},{ 0, 1},{ 1, 0}},
|
||||||
[31]={{ 0, 1},{ 0,-1},{-1, 0}},
|
[31]={{ 0, 1},{ 0,-1},{-1, 0}},
|
||||||
},--J
|
},--J
|
||||||
{},--L
|
{},--L
|
||||||
{
|
{
|
||||||
[01]={{-1, 0},{-1, 1},{ 0,-2},{-1,-2},{-1,-1}},
|
[01]={{-1, 0},{-1, 1},{ 0,-2},{-1,-2},{-1,-1}},
|
||||||
[10]={{ 1, 0},{ 1,-1},{ 0, 2},{ 1, 2},{ 0,-1},{ 1, 1}},
|
[10]={{ 1, 0},{ 1,-1},{ 0, 2},{ 1, 2},{ 0,-1},{ 1, 1}},
|
||||||
@@ -152,10 +152,10 @@ local TRS={
|
|||||||
[10]={{ 2, 0},{-1, 0},{-1,-2},{ 2, 1},{ 0, 2}},
|
[10]={{ 2, 0},{-1, 0},{-1,-2},{ 2, 1},{ 0, 2}},
|
||||||
[03]={{ 0, 1},{-1, 0},{ 2, 0},{ 2,-1},{-1, 2}},
|
[03]={{ 0, 1},{-1, 0},{ 2, 0},{ 2,-1},{-1, 2}},
|
||||||
[30]={{-2, 0},{ 1, 0},{ 1,-2},{-2, 1},{ 0, 2}},
|
[30]={{-2, 0},{ 1, 0},{ 1,-2},{-2, 1},{ 0, 2}},
|
||||||
[12]={{-1, 0},{ 2, 0},{-1, 2},{ 2,-1}},
|
[12]={{-1, 0},{ 2, 0},{ 0,-1},{-1, 2},{ 2,-1}},
|
||||||
[21]={{-2, 0},{ 1, 0},{ 1,-2},{-2, 1}},
|
[21]={{-2, 0},{ 1, 0},{ 0, 1},{ 1,-2},{-2, 1}},
|
||||||
[32]={{ 1, 0},{-2, 0},{ 1,-2},{-2,-1}},
|
[32]={{ 1, 0},{-2, 0},{ 0,-1},{ 1, 2},{-2,-1}},
|
||||||
[23]={{ 2, 0},{-1, 0},{-1,-2},{ 2, 1}},
|
[23]={{ 2, 0},{-1, 0},{ 0, 1},{-1,-2},{ 2, 1}},
|
||||||
[02]={{-1, 0},{ 1, 0},{ 0,-1},{ 0, 1}},
|
[02]={{-1, 0},{ 1, 0},{ 0,-1},{ 0, 1}},
|
||||||
[20]={{ 1, 0},{-1, 0},{ 0, 1},{ 0,-1}},
|
[20]={{ 1, 0},{-1, 0},{ 0, 1},{ 0,-1}},
|
||||||
[13]={{ 0,-1},{-1, 0},{ 1, 0},{ 0, 1}},
|
[13]={{ 0,-1},{-1, 0},{ 1, 0},{ 0, 1}},
|
||||||
|
|||||||
147
parts/list.lua
147
parts/list.lua
@@ -1,4 +1,151 @@
|
|||||||
snapLevelValue={1,10,20,40,60,80}
|
snapLevelValue={1,10,20,40,60,80}
|
||||||
|
title={
|
||||||
|
{
|
||||||
|
53, 60,
|
||||||
|
1035, 0,
|
||||||
|
964, 218,
|
||||||
|
660, 218,
|
||||||
|
391, 1300,
|
||||||
|
231, 1154,
|
||||||
|
415, 218,
|
||||||
|
0, 218,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
716, 290,
|
||||||
|
1429, 290,
|
||||||
|
1312, 462,
|
||||||
|
875, 489,
|
||||||
|
821, 695,
|
||||||
|
1148, 712,
|
||||||
|
1017, 902,
|
||||||
|
761, 924,
|
||||||
|
707, 1127,
|
||||||
|
1106, 1101,
|
||||||
|
1198, 1300,
|
||||||
|
465, 1300,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
1516, 287,
|
||||||
|
2102, 290,
|
||||||
|
2036, 464,
|
||||||
|
1598, 465,
|
||||||
|
1322, 905,
|
||||||
|
1395, 1102,
|
||||||
|
1819, 1064,
|
||||||
|
1743, 1280,
|
||||||
|
1286, 1310,
|
||||||
|
1106, 902,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
2179, 290,
|
||||||
|
2411, 290,
|
||||||
|
2272, 688,
|
||||||
|
2674, 666,
|
||||||
|
2801, 290,
|
||||||
|
3041, 290,
|
||||||
|
2693, 1280,
|
||||||
|
2464, 1280,
|
||||||
|
2601, 879,
|
||||||
|
2199, 897,
|
||||||
|
2056, 1280,
|
||||||
|
1828, 1280,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
3123, 290,
|
||||||
|
3480, 290,
|
||||||
|
3496, 480,
|
||||||
|
3664, 290,
|
||||||
|
4017, 294,
|
||||||
|
3682, 1270,
|
||||||
|
3453, 1280,
|
||||||
|
3697, 578,
|
||||||
|
3458, 843,
|
||||||
|
3304, 842,
|
||||||
|
3251, 561,
|
||||||
|
3001, 1280,
|
||||||
|
2779, 1280,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
4088, 290,
|
||||||
|
4677, 290,
|
||||||
|
4599, 501,
|
||||||
|
4426, 502,
|
||||||
|
4219, 1069,
|
||||||
|
4388, 1070,
|
||||||
|
4317, 1280,
|
||||||
|
3753, 1280,
|
||||||
|
3822, 1068,
|
||||||
|
3978, 1068,
|
||||||
|
4194, 504,
|
||||||
|
4016, 504,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
4747, 290,
|
||||||
|
4978, 295,
|
||||||
|
4921, 464,
|
||||||
|
5186, 850,
|
||||||
|
5366, 290,
|
||||||
|
5599, 295,
|
||||||
|
5288, 1280,
|
||||||
|
5051, 1280,
|
||||||
|
5106, 1102,
|
||||||
|
4836, 709,
|
||||||
|
4641, 1280,
|
||||||
|
4406, 1280,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
5814, 290,
|
||||||
|
6370, 295,
|
||||||
|
6471, 415,
|
||||||
|
6238, 1156,
|
||||||
|
6058, 1280,
|
||||||
|
5507, 1280,
|
||||||
|
5404, 1154,
|
||||||
|
5635, 416,
|
||||||
|
-- -- 5814, 290,
|
||||||
|
-- -- 5878, 463,
|
||||||
|
5770, 542,
|
||||||
|
5617, 1030,
|
||||||
|
5676, 1105,
|
||||||
|
5995, 1106,
|
||||||
|
6100, 1029,
|
||||||
|
6255, 541,
|
||||||
|
6199, 465,
|
||||||
|
5878, 463,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
title2={}
|
||||||
|
for i=1,#title do title2[i]=title[i]end
|
||||||
|
title2[5]={
|
||||||
|
3123, 290,
|
||||||
|
3480, 290,
|
||||||
|
3496, 480,
|
||||||
|
3664, 290,
|
||||||
|
4017, 294,
|
||||||
|
3682, 1270,
|
||||||
|
|
||||||
|
3652, 1270,
|
||||||
|
3678, 1240,
|
||||||
|
3682, 1230,
|
||||||
|
3648, 1230,
|
||||||
|
3644, 1240,
|
||||||
|
3665, 1240,
|
||||||
|
3631, 1280,
|
||||||
|
|
||||||
|
3453, 1280,
|
||||||
|
3697, 578,
|
||||||
|
3458, 843,
|
||||||
|
3304, 842,
|
||||||
|
3251, 561,
|
||||||
|
3001, 1280,
|
||||||
|
2779, 1280,
|
||||||
|
}
|
||||||
|
|
||||||
|
for _,C in next,title do
|
||||||
|
for i=1,#C do
|
||||||
|
C[i]=C[i]*.1626
|
||||||
|
end
|
||||||
|
end
|
||||||
customID={
|
customID={
|
||||||
"drop","lock",
|
"drop","lock",
|
||||||
"wait","fall",
|
"wait","fall",
|
||||||
|
|||||||
@@ -787,7 +787,7 @@ 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
|
--Field
|
||||||
local F=P.field
|
local F=P.field
|
||||||
for j=1,#F do
|
for j=1,#F do
|
||||||
@@ -1313,8 +1313,8 @@ function player.resetBlock(P)
|
|||||||
local id=C.id
|
local id=C.id
|
||||||
local face=P.gameEnv.face[id]
|
local face=P.gameEnv.face[id]
|
||||||
local sc=scs[id][face]
|
local sc=scs[id][face]
|
||||||
P.sc=sc --spin center
|
P.sc=sc --spin center
|
||||||
P.dir=face --block direction
|
P.dir=face --block direction
|
||||||
P.r,P.c=#C.bk,#C.bk[1] --row/column
|
P.r,P.c=#C.bk,#C.bk[1] --row/column
|
||||||
P.curX=int(6-P.c*.5)
|
P.curX=int(6-P.c*.5)
|
||||||
local y=21+ceil(P.fieldBeneath/30)
|
local y=21+ceil(P.fieldBeneath/30)
|
||||||
@@ -1325,6 +1325,10 @@ function player.resetBlock(P)
|
|||||||
P.curX=x
|
P.curX=x
|
||||||
end
|
end
|
||||||
end--IMS
|
end--IMS
|
||||||
|
|
||||||
|
if P.human and id<8 then
|
||||||
|
SFX.play("spawn_"..id,setting.spawn,nil,true)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
function player.hold(P,ifpre)
|
function player.hold(P,ifpre)
|
||||||
if not P.holded and (ifpre or P.waiting==-1) and P.gameEnv.hold then
|
if not P.holded and (ifpre or P.waiting==-1) and P.gameEnv.hold then
|
||||||
@@ -1354,7 +1358,12 @@ function player.hold(P,ifpre)
|
|||||||
if C then
|
if C then
|
||||||
P.cur=C
|
P.cur=C
|
||||||
P.pieceCount=P.pieceCount+1
|
P.pieceCount=P.pieceCount+1
|
||||||
if P.AI_mode=="CC"then BOT.addNext(P.AI_bot,CCblockID[P.next[P.AIdata.next].id])end
|
if P.AI_mode=="CC"then
|
||||||
|
local next=P.next[P.AIdata.next]
|
||||||
|
if id then
|
||||||
|
BOT.addNext(P.AI_bot,CCblockID[next.id])
|
||||||
|
end
|
||||||
|
end
|
||||||
else
|
else
|
||||||
P.holded=false
|
P.holded=false
|
||||||
end
|
end
|
||||||
@@ -1364,9 +1373,6 @@ function player.hold(P,ifpre)
|
|||||||
P:freshgho()
|
P:freshgho()
|
||||||
P.dropDelay,P.lockDelay,P.freshTime=P.gameEnv.drop,P.gameEnv.lock,max(P.freshTime-5,0)
|
P.dropDelay,P.lockDelay,P.freshTime=P.gameEnv.drop,P.gameEnv.lock,max(P.freshTime-5,0)
|
||||||
if P:ifoverlap(P.cur.bk,P.curX,P.curY)then P:lock()P:lose()end
|
if P:ifoverlap(P.cur.bk,P.curX,P.curY)then P:lock()P:lose()end
|
||||||
if P.human and setting.spawn then
|
|
||||||
SFX.play("spawn_"..C.id)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
if P.human then
|
if P.human then
|
||||||
@@ -1390,7 +1396,12 @@ function player.popNext(P)--pop next queue to hand
|
|||||||
P:newNext()
|
P:newNext()
|
||||||
if P.cur then
|
if P.cur then
|
||||||
P.pieceCount=P.pieceCount+1
|
P.pieceCount=P.pieceCount+1
|
||||||
if P.AI_mode=="CC"then BOT.addNext(P.AI_bot,CCblockID[P.next[P.AIdata.next].id])end
|
if P.AI_mode=="CC"then
|
||||||
|
local next=P.next[P.AIdata.next]
|
||||||
|
if id then
|
||||||
|
BOT.addNext(P.AI_bot,CCblockID[next.id])
|
||||||
|
end
|
||||||
|
end
|
||||||
local _=P.keyPressing
|
local _=P.keyPressing
|
||||||
if _[8]and P.gameEnv.hold and P.gameEnv.ihs then
|
if _[8]and P.gameEnv.hold and P.gameEnv.ihs then
|
||||||
P:hold(true)
|
P:hold(true)
|
||||||
@@ -1422,9 +1433,6 @@ function player.popNext(P)--pop next queue to hand
|
|||||||
end
|
end
|
||||||
|
|
||||||
if _[6]then P.act.hardDrop(P)_[6]=false end--IHdS
|
if _[6]then P.act.hardDrop(P)_[6]=false end--IHdS
|
||||||
if P.human and setting.spawn then
|
|
||||||
SFX.play("spawn_"..P.cur.id)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
function player.drop(P)--Place piece
|
function player.drop(P)--Place piece
|
||||||
@@ -2588,7 +2596,7 @@ function PLY.newAIPlayer(id,x,y,size,AIdata)
|
|||||||
ENV.face={0,0,0,0,0,0,0}
|
ENV.face={0,0,0,0,0,0,0}
|
||||||
ENV.skin={1,5,8,2,10,3,7}
|
ENV.skin={1,5,8,2,10,3,7}
|
||||||
prepareSequence(P)
|
prepareSequence(P)
|
||||||
|
|
||||||
P.human=false
|
P.human=false
|
||||||
loadAI(P,AIdata)
|
loadAI(P,AIdata)
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -72,11 +72,19 @@ Future outlook:
|
|||||||
0.9.2: Bug Fixed
|
0.9.2: Bug Fixed
|
||||||
new:
|
new:
|
||||||
debug page
|
debug page
|
||||||
|
independent spawning volume setting
|
||||||
change:
|
change:
|
||||||
three little better backgrounds instead of stupid rainbow
|
three little better backgrounds instead of stupid rainbow
|
||||||
little change of in-game layout
|
kick list of i-piece little changed
|
||||||
|
no extremly huge radar chart in pause page
|
||||||
|
new in-game layout
|
||||||
|
new setting page layout
|
||||||
fixed:
|
fixed:
|
||||||
error in infinite-dig
|
error in infinite-dig
|
||||||
|
CC's sudden death sometimes
|
||||||
|
missing the top line when paste field
|
||||||
|
error when AI used all nexts
|
||||||
|
error when play default-bag game after played with custom sequence
|
||||||
|
|
||||||
0.9.1: Piece Spawn SFX
|
0.9.1: Piece Spawn SFX
|
||||||
new:
|
new:
|
||||||
|
|||||||
Reference in New Issue
Block a user