界面美化/死亡动画/自定义序列编辑器
This commit is contained in:
@@ -39,7 +39,12 @@ local function dumpTable(L,t)
|
||||
else
|
||||
k="["..k.."]="
|
||||
end
|
||||
elseif T=="string"then k=k.."="
|
||||
elseif T=="string"then
|
||||
if find(k,"[^0-9a-zA-Z_]")then
|
||||
k="[\""..k.."\"]="
|
||||
else
|
||||
k=k.."="
|
||||
end
|
||||
elseif T=="boolean"then k="["..k.."]="
|
||||
else assert(false,"Error key type!")
|
||||
end
|
||||
|
||||
@@ -146,21 +146,18 @@ function mouseDown.intro(x,y,k)
|
||||
VOC.play("bye")
|
||||
SCN.back()
|
||||
else
|
||||
SCN.push()
|
||||
SCN.swapTo("main")
|
||||
SCN.goto("main")
|
||||
end
|
||||
end
|
||||
function touchDown.intro(id,x,y)
|
||||
SCN.push()
|
||||
SCN.swapTo("main")
|
||||
SCN.goto("main")
|
||||
end
|
||||
function keyDown.intro(key)
|
||||
if key=="escape"then
|
||||
VOC.play("bye")
|
||||
SCN.back()
|
||||
else
|
||||
SCN.push()
|
||||
SCN.swapTo("main")
|
||||
SCN.goto("main")
|
||||
end
|
||||
end
|
||||
|
||||
@@ -168,17 +165,15 @@ local function onMode(x,y)
|
||||
local cam=mapCam
|
||||
x=(cam.x1-640+x)/cam.k1
|
||||
y=(cam.y1-360+y)/cam.k1
|
||||
local MM,R=Modes,modeRanks
|
||||
for _=1,#MM do
|
||||
if R[_]then
|
||||
local M=MM[_]
|
||||
for name,M in next,Modes do
|
||||
if modeRanks[name]then
|
||||
local s=M.size
|
||||
if M.shape==1 then
|
||||
if x>M.x-s and x<M.x+s and y>M.y-s and y<M.y+s then return _ end
|
||||
if x>M.x-s and x<M.x+s and y>M.y-s and y<M.y+s then return name end
|
||||
elseif M.shape==2 then
|
||||
if abs(x-M.x)+abs(y-M.y)<s then return _ end
|
||||
if abs(x-M.x)+abs(y-M.y)<s then return name end
|
||||
elseif M.shape==3 then
|
||||
if(x-M.x)^2+(y-M.y)^2<s^2 then return _ end
|
||||
if(x-M.x)^2+(y-M.y)^2<s^2 then return name end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -208,20 +203,22 @@ end
|
||||
function mouseClick.mode(x,y,k)
|
||||
local cam=mapCam
|
||||
local _=cam.sel
|
||||
if not cam.sel or x<920 then
|
||||
local __=onMode(x,y)
|
||||
if _~=__ then
|
||||
if __ then
|
||||
if not _ or x<920 then
|
||||
local SEL=onMode(x,y)
|
||||
if _~=SEL then
|
||||
if SEL then
|
||||
SFX.play("click")
|
||||
cam.moving=true
|
||||
_=Modes[__]
|
||||
_=Modes[SEL]
|
||||
cam.x=_.x*cam.k+180
|
||||
cam.y=_.y*cam.k
|
||||
cam.sel=__
|
||||
cam.sel=SEL
|
||||
else
|
||||
cam.sel=nil
|
||||
cam.x=cam.x-180
|
||||
end
|
||||
elseif _ then
|
||||
loadGame(_)
|
||||
end
|
||||
end
|
||||
cam.keyCtrl=false
|
||||
@@ -259,11 +256,9 @@ function keyDown.mode(key)
|
||||
else
|
||||
SCN.back()
|
||||
end
|
||||
elseif mapCam.sel==71 or mapCam.sel==72 then
|
||||
if key=="q"then
|
||||
SCN.push()SCN.swapTo("draw")
|
||||
elseif key=="e"then
|
||||
SCN.push()SCN.swapTo("custom")
|
||||
elseif mapCam.sel=="custom_clear" or mapCam.sel=="custom_puzzle" then
|
||||
if key=="e"then
|
||||
SCN.goto("custom")
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -333,6 +328,28 @@ function keyDown.custom(key)
|
||||
end
|
||||
end
|
||||
|
||||
function keyDown.sequence(key)
|
||||
local s=sceneTemp
|
||||
if key=="left"then
|
||||
if s.cur>0 then s.cur=s.cur-1 end
|
||||
elseif key=="right"then
|
||||
if s.cur<#preBag then s.cur=s.cur+1 end
|
||||
elseif key=="backspace"then
|
||||
local C=s.cur
|
||||
if C>0 then
|
||||
rem(preBag,C)
|
||||
s.cur=C-1
|
||||
end
|
||||
elseif key=="delete"then
|
||||
if sceneTemp.sure>20 then
|
||||
preBag={1,2,3,4,5,6,7}
|
||||
sceneTemp.sure=0
|
||||
else
|
||||
sceneTemp.sure=50
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function mouseDown.draw(x,y,k)
|
||||
mouseMove.draw(x,y)
|
||||
end
|
||||
@@ -417,13 +434,9 @@ function mouseDown.setting_sound(x,y,k)
|
||||
VOC.play((t<1.5 or t>15)and"doubt"or rnd()<.8 and"happy"or"egg")
|
||||
sceneTemp.last=Timer()
|
||||
if rnd()<.0626 then
|
||||
for i=1,#Modes do
|
||||
local M=Modes[i]
|
||||
for i=1,#M.unlock do
|
||||
local m=M.unlock[i]
|
||||
if not modeRanks[m]then
|
||||
modeRanks[m]=Modes[m].score and 0 or 6
|
||||
end
|
||||
for name,M in next,Modes do
|
||||
if not modeRanks[name]then
|
||||
modeRanks[name]=M.score and 0 or 6
|
||||
end
|
||||
end
|
||||
FILE.saveUnlock()
|
||||
@@ -547,8 +560,7 @@ function keyDown.pause(key)
|
||||
elseif key=="escape"then
|
||||
resumeGame()
|
||||
elseif key=="s"then
|
||||
SCN.push()
|
||||
SCN.swapTo("setting_sound")
|
||||
SCN.goto("setting_sound")
|
||||
elseif key=="r"then
|
||||
TASK.clear("play")
|
||||
mergeStat(stat,players[1].stat)
|
||||
|
||||
@@ -2,7 +2,7 @@ local langList={
|
||||
{
|
||||
anykey="按任意键继续",
|
||||
newVersion="检测到更新!存档格式可能更新,设置已重置",
|
||||
marking="游戏作者:MrZ_26\n任何视频不得出现此水印",
|
||||
marking="游戏作者:MrZ_26\n任何视频/直播不得出现此水印\n任何视频内声明无效",
|
||||
lang="中文",
|
||||
atkModeName={"随机","徽章","击杀","反击"},
|
||||
royale_remain=function(n)return"剩余 "..n.." 名玩家"end,
|
||||
@@ -49,12 +49,13 @@ local langList={
|
||||
fall=nil,
|
||||
next=nil,
|
||||
hold={"开","关","无限"},
|
||||
sequence={"bag7","his4","随机"},
|
||||
sequence={"bag","his4","随机","循环","固定"},
|
||||
visible={"可见","半隐","全隐","瞬隐"},
|
||||
target={10,20,40,100,200,500,1000,"∞"},
|
||||
freshLimit={0,8,15,"∞"},
|
||||
opponent={"无电脑","9S Lv1","9S Lv2","9S Lv3","9S Lv4","9S Lv5","CC Lv1","CC Lv2","CC Lv3","CC Lv4","CC Lv5","CC Lv6"},
|
||||
},
|
||||
sequence="自定义序列",
|
||||
softdropdas="软降DAS:",
|
||||
softdroparr="软降ARR:",
|
||||
snapLevelName={"无吸附","10px吸附","20px吸附","40px吸附","60px吸附","80px吸附"},
|
||||
@@ -188,8 +189,7 @@ local langList={
|
||||
quit="退出",
|
||||
},
|
||||
mode={
|
||||
draw="画图(Q)",
|
||||
custom="参数(E)",
|
||||
setting="参数(E)",
|
||||
start="开始",
|
||||
back="返回",
|
||||
},
|
||||
@@ -210,6 +210,18 @@ local langList={
|
||||
set3="无尽(3)",
|
||||
set4="隐形(4)",
|
||||
set5="极限(5)",
|
||||
seq="高级设置",
|
||||
draw="初始场地编辑",
|
||||
back="返回",
|
||||
},
|
||||
sequence={
|
||||
Z="Z",S="S",J="J",L="L",T="T",O="O",I="I",
|
||||
Z5="Z5",S5="S5",P="P",Q="Q",F="F",E="E",T5="T5",U="U",
|
||||
V="V",W="W",X="X",J5="J5",L5="L5",R="R",Y="Y",N="N",H="H",I5="I5",
|
||||
left="←",
|
||||
right="→",
|
||||
backsp="<X",
|
||||
reset="R",
|
||||
back="返回",
|
||||
},
|
||||
draw={
|
||||
@@ -219,6 +231,7 @@ local langList={
|
||||
demo="不显示×",
|
||||
copy="复制",
|
||||
paste="粘贴",
|
||||
custom="参数",
|
||||
back="返回",
|
||||
},
|
||||
play={
|
||||
@@ -352,85 +365,85 @@ local langList={
|
||||
},
|
||||
},
|
||||
modes={
|
||||
{"竞速", "10L", "消除10行"},
|
||||
{"竞速", "20L", "消除20行"},
|
||||
{"竞速", "40L", "消除40行"},
|
||||
{"竞速", "100L", "消除100行"},
|
||||
{"竞速", "400L", "消除400行"},
|
||||
{"竞速", "1000L", "消除1000行"},
|
||||
{"干旱", "100L", "你I没了"},
|
||||
{"干旱", "100L", "后 妈 发 牌"},
|
||||
{"马拉松", "普通", "200行加速马拉松"},
|
||||
{"马拉松", "困难", "200行高速马拉松"},
|
||||
{"单挑", "简单", "打败AI"},
|
||||
{"单挑", "普通", "打败AI"},
|
||||
{"单挑", "困难", "打败AI"},
|
||||
{"单挑", "疯狂", "打败AI"},
|
||||
{"单挑", "极限", "打败AI"},
|
||||
{"49人混战", "简单", "49人混战,活到最后"},
|
||||
{"49人混战", "困难", "49人混战,活到最后"},
|
||||
{"49人混战", "极限", "49人混战,活到最后"},
|
||||
{"99人混战", "简单", "99人混战,活到最后"},
|
||||
{"99人混战", "困难", "99人混战,活到最后"},
|
||||
{"99人混战", "极限", "99人混战,活到最后"},
|
||||
{"回合制", "简单", "下棋模式"},
|
||||
{"回合制", "普通", "下棋模式"},
|
||||
{"回合制", "困难", "下棋模式"},
|
||||
{"回合制", "疯狂", "下棋模式"},
|
||||
{"回合制", "极限", "下棋模式"},
|
||||
{"大师", "疯狂", "20G:初心者适用"},
|
||||
{"大师", "极限", "20G:上级者的挑战"},
|
||||
{"大师", "终点", "究极20G:无法触及的终点"},
|
||||
{"宗师", "GM", "成为方块大师"},
|
||||
{"隐形", "半隐", "不强大脑"},
|
||||
{"隐形", "全隐", "挺强大脑"},
|
||||
{"隐形", "瞬隐", "很强大脑"},
|
||||
{"隐形", "瞬隐+", "最强大脑"},
|
||||
{"隐形", "", "你准备好了吗"},
|
||||
{"高速经典", "CTWC", "高速经典"},
|
||||
{"生存", "简单", "你能存活多久?"},
|
||||
{"生存", "普通", "你能存活多久?"},
|
||||
{"生存", "困难", "你能存活多久?"},
|
||||
{"生存", "疯狂", "你能存活多久?"},
|
||||
{"生存", "极限", "你能存活多久?"},
|
||||
{"进攻", "困难", "进攻练习"},
|
||||
{"进攻", "极限", "进攻练习"},
|
||||
{"防守", "普通", "防守练习"},
|
||||
{"防守", "疯狂", "防守练习"},
|
||||
{"挖掘", "困难", "挖掘练习"},
|
||||
{"挖掘", "极限", "挖掘练习"},
|
||||
{"大爆炸", "简单", "All-spin 入门教程\n未制作完成,落块即通"},
|
||||
{"C4W练习", "普通", "无 限 连 击"},
|
||||
{"C4W练习", "疯狂", "无 限 连 击"},
|
||||
{"全清训练", "普通", "简易PC题库,熟悉全清定式的组合"},
|
||||
{"全清训练", "疯狂", "简易PC题库,熟悉全清定式的组合"},
|
||||
{"全清挑战", "普通", "100行内刷PC"},
|
||||
{"全清挑战", "困难", "100行内刷PC"},
|
||||
{"全清挑战", "疯狂", "100行内刷PC"},
|
||||
{"科研", "普通", "禁止断B2B"},
|
||||
{"科研", "普通+", "仅允许spin与PC"},
|
||||
{"科研", "困难", "禁止断B2B"},
|
||||
{"科研", "困难+", "仅允许spin与PC"},
|
||||
{"科研", "疯狂", "禁止断B2B"},
|
||||
{"科研", "疯狂+", "仅允许spin与PC"},
|
||||
{"科研", "极限", "强制最简操作"},
|
||||
{"科研", "极限+", "禁止普通消除,强制最简操作"},
|
||||
{"TSD挑战", "简单", "你能连续做几个TSD?"},
|
||||
{"TSD挑战", "困难", "你能连续做几个TSD?"},
|
||||
{"TSD挑战", "极限", "你能连续做几个TSD?"},
|
||||
{"禅", "", "不限时200行"},
|
||||
{"限时打分", "挑战", "在两分钟内尽可能拿到最多的分数"},
|
||||
{"无尽", "", "沙盒"},
|
||||
{"无尽:挖掘", "", "挖呀挖呀挖"},
|
||||
{"自定义", "普通", "画点什么然后把它消除!"},
|
||||
{"自定义", "拼图", "画点什么然后把它拼出来吧!"},
|
||||
{"竞速", "五联块", "伤脑筋十八块"},
|
||||
["sprint_10"]= {"竞速", "10L", "消除10行"},
|
||||
["sprint_20"]= {"竞速", "20L", "消除20行"},
|
||||
["sprint_40"]= {"竞速", "40L", "消除40行"},
|
||||
["sprint_100"]= {"竞速", "100L", "消除100行"},
|
||||
["sprint_400"]= {"竞速", "400L", "消除400行"},
|
||||
["sprint_1000"]= {"竞速", "1000L", "消除1000行"},
|
||||
["drought_normal"]= {"干旱", "100L", "你I没了"},
|
||||
["drought_lunatic"]= {"干旱", "100L", "后 妈 发 牌"},
|
||||
["marathon_normal"]= {"马拉松", "普通", "200行加速马拉松"},
|
||||
["marathon_hard"]= {"马拉松", "困难", "200行高速马拉松"},
|
||||
["solo_1"]= {"单挑", "简单", "打败AI"},
|
||||
["solo_2"]= {"单挑", "普通", "打败AI"},
|
||||
["solo_3"]= {"单挑", "困难", "打败AI"},
|
||||
["solo_4"]= {"单挑", "疯狂", "打败AI"},
|
||||
["solo_5"]= {"单挑", "极限", "打败AI"},
|
||||
["techmino49_easy"]= {"49人混战", "简单", "49人混战,活到最后"},
|
||||
["techmino49_hard"]= {"49人混战", "困难", "49人混战,活到最后"},
|
||||
["techmino49_ultimate"]={"49人混战", "极限", "49人混战,活到最后"},
|
||||
["techmino99_easy"]= {"99人混战", "简单", "99人混战,活到最后"},
|
||||
["techmino99_hard"]= {"99人混战", "困难", "99人混战,活到最后"},
|
||||
["techmino99_ultimate"]={"99人混战", "极限", "99人混战,活到最后"},
|
||||
["round_1"]= {"回合制", "简单", "下棋模式"},
|
||||
["round_2"]= {"回合制", "普通", "下棋模式"},
|
||||
["round_3"]= {"回合制", "困难", "下棋模式"},
|
||||
["round_4"]= {"回合制", "疯狂", "下棋模式"},
|
||||
["round_5"]= {"回合制", "极限", "下棋模式"},
|
||||
["master_beginner"]= {"大师", "疯狂", "20G:初心者适用"},
|
||||
["master_adavnce"]= {"大师", "极限", "20G:上级者的挑战"},
|
||||
["master_final"]= {"大师", "终点", "究极20G:无法触及的终点"},
|
||||
["GM"]= {"宗师", "GM", "成为方块大师"},
|
||||
["blind_easy"]= {"隐形", "半隐", "不强大脑"},
|
||||
["blind_normal"]= {"隐形", "全隐", "挺强大脑"},
|
||||
["blind_hard"]= {"隐形", "瞬隐", "很强大脑"},
|
||||
["blind_lunatic"]= {"隐形", "瞬隐+", "最强大脑"},
|
||||
["blind_ultimate"]= {"隐形", "", "你准备好了吗"},
|
||||
["classic_fast"]= {"高速经典", "CTWC", "高速经典"},
|
||||
["survivor_easy"]= {"生存", "简单", "你能存活多久?"},
|
||||
["survivor_normal"]= {"生存", "普通", "你能存活多久?"},
|
||||
["survivor_hard"]= {"生存", "困难", "你能存活多久?"},
|
||||
["survivor_lunatic"]= {"生存", "疯狂", "你能存活多久?"},
|
||||
["survivor_ultimate"]= {"生存", "极限", "你能存活多久?"},
|
||||
["attacker_hard"]= {"进攻", "困难", "进攻练习"},
|
||||
["attacker_ultimate"]= {"进攻", "极限", "进攻练习"},
|
||||
["defender_normal"]= {"防守", "普通", "防守练习"},
|
||||
["defender_lunatic"]= {"防守", "疯狂", "防守练习"},
|
||||
["dig_hard"]= {"挖掘", "困难", "挖掘练习"},
|
||||
["dig_ultimate"]= {"挖掘", "极限", "挖掘练习"},
|
||||
["bigbang"]= {"大爆炸", "简单", "All-spin 入门教程\n未制作完成,落块即通"},
|
||||
["c4wtrain_normal"]= {"C4W练习", "普通", "无 限 连 击"},
|
||||
["c4wtrain_lunatic"]= {"C4W练习", "疯狂", "无 限 连 击"},
|
||||
["pctrain_normal"]= {"全清训练", "普通", "简易PC题库,熟悉全清定式的组合"},
|
||||
["pctrain_lunatic"]= {"全清训练", "疯狂", "简易PC题库,熟悉全清定式的组合"},
|
||||
["pcchallenge_normal"]= {"全清挑战", "普通", "100行内刷PC"},
|
||||
["pcchallenge_hard"]= {"全清挑战", "困难", "100行内刷PC"},
|
||||
["pcchallenge_lunatic"]={"全清挑战", "疯狂", "100行内刷PC"},
|
||||
["tech_normal"]= {"科研", "普通", "禁止断B2B"},
|
||||
["tech_normal+"]= {"科研", "普通+", "仅允许spin与PC"},
|
||||
["tech_hard"]= {"科研", "困难", "禁止断B2B"},
|
||||
["tech_hard+"]= {"科研", "困难+", "仅允许spin与PC"},
|
||||
["tech_lunatic"]= {"科研", "疯狂", "禁止断B2B"},
|
||||
["tech_lunatic+"]= {"科研", "疯狂+", "仅允许spin与PC"},
|
||||
["tech_ultimate"]= {"科研", "极限", "强制最简操作"},
|
||||
["tech_ultimate+"]= {"科研", "极限+", "禁止普通消除,强制最简操作"},
|
||||
["tsd_easy"]= {"TSD挑战", "简单", "你能连续做几个TSD?"},
|
||||
["tsd_hard"]= {"TSD挑战", "困难", "你能连续做几个TSD?"},
|
||||
["tsd_ultimate"]= {"TSD挑战", "极限", "你能连续做几个TSD?"},
|
||||
["zen"]= {"禅", "", "不限时200行"},
|
||||
["ultra"]= {"限时打分", "挑战", "在两分钟内尽可能拿到最多的分数"},
|
||||
["infinite"]= {"无尽", "", "沙盒"},
|
||||
["infinite_dig"]= {"无尽:挖掘", "", "挖呀挖呀挖"},
|
||||
["custom_clear"]= {"自定义", "普通", "画点什么然后把它消除!"},
|
||||
["custom_puzzle"]= {"自定义", "拼图", "画点什么然后把它拼出来吧!"},
|
||||
["sprintPenta"]= {"竞速", "五联块", "伤脑筋十八块"},
|
||||
},
|
||||
},
|
||||
{
|
||||
anykey="按任意键继续",
|
||||
newVersion="检测到更新!存档格式可能更新,设置已重置",
|
||||
marking="游戏作者:MrZ_26\n任何视频不得出现此水印",
|
||||
marking="游戏作者:MrZ_26\n任何视频/直播不得出现此水印\n任何视频内声明无效",
|
||||
lang="全中文",
|
||||
atkModeName={"随机","徽章","击杀","反击"},
|
||||
royale_remain=function(n)return"剩余 "..n.." 名玩家"end,
|
||||
@@ -477,12 +490,13 @@ local langList={
|
||||
fall=nil,
|
||||
next=nil,
|
||||
hold={"开","关","无限"},
|
||||
sequence={"bag7","his4","随机"},
|
||||
sequence={"bag","his4","随机","循环","固定"},
|
||||
visible={"可见","半隐","全隐","瞬隐"},
|
||||
target={10,20,40,100,200,500,1000,"∞"},
|
||||
freshLimit={0,8,15,"∞"},
|
||||
opponent={"无电脑","9S Lv1","9S Lv2","9S Lv3","9S Lv4","9S Lv5","CC Lv1","CC Lv2","CC Lv3","CC Lv4","CC Lv5","CC Lv6"},
|
||||
},
|
||||
sequence="自定义序列",
|
||||
snapLevelName={"无吸附","10像素吸附","20像素吸附","40像素吸附","60像素吸附","80像素吸附"},
|
||||
setting_game="游戏设置",
|
||||
setting_video="画面设置",
|
||||
@@ -613,8 +627,7 @@ local langList={
|
||||
quit="退出",
|
||||
},
|
||||
mode={
|
||||
draw="画图(Q)",
|
||||
custom="参数(E)",
|
||||
setting="参数(E)",
|
||||
start="开始",
|
||||
back="返回",
|
||||
},
|
||||
@@ -635,6 +648,18 @@ local langList={
|
||||
set3="无尽(3)",
|
||||
set4="隐形(4)",
|
||||
set5="极限(5)",
|
||||
seq="高级设置",
|
||||
draw="初始场地编辑",
|
||||
back="返回",
|
||||
},
|
||||
sequence={
|
||||
Z="Z",S="S",J="J",L="L",T="T",O="O",I="I",
|
||||
Z5="Z5",S5="S5",P="P",Q="Q",F="F",E="E",T5="T5",U="U",
|
||||
V="V",W="W",X="X",J5="J5",L5="L5",R="R",Y="Y",N="N",H="H",I5="I5",
|
||||
left="←",
|
||||
right="→",
|
||||
backsp="<X",
|
||||
reset="R",
|
||||
back="返回",
|
||||
},
|
||||
draw={
|
||||
@@ -644,6 +669,7 @@ local langList={
|
||||
demo="不显示×",
|
||||
copy="复制",
|
||||
paste="粘贴",
|
||||
custom="参数",
|
||||
back="返回",
|
||||
},
|
||||
play={
|
||||
@@ -777,85 +803,85 @@ local langList={
|
||||
},
|
||||
},
|
||||
modes={
|
||||
{"竞速", "10行", "消除10行"},
|
||||
{"竞速", "20行", "消除20行"},
|
||||
{"竞速", "40行", "消除40行"},
|
||||
{"竞速", "100行", "消除100行"},
|
||||
{"竞速", "400行", "消除400行"},
|
||||
{"竞速", "1000行", "消除1000行"},
|
||||
{"干旱", "100行", "你I没了"},
|
||||
{"干旱", "100行", "后 妈 发 牌"},
|
||||
{"马拉松", "普通", "200行加速马拉松"},
|
||||
{"马拉松", "困难", "200行高速马拉松"},
|
||||
{"单挑", "简单", "打败机器人"},
|
||||
{"单挑", "普通", "打败机器人"},
|
||||
{"单挑", "困难", "打败机器人"},
|
||||
{"单挑", "疯狂", "打败机器人"},
|
||||
{"单挑", "极限", "打败机器人"},
|
||||
{"49人混战", "简单", "49人混战,活到最后"},
|
||||
{"49人混战", "困难", "49人混战,活到最后"},
|
||||
{"49人混战", "极限", "49人混战,活到最后"},
|
||||
{"99人混战", "简单", "99人混战,活到最后"},
|
||||
{"99人混战", "困难", "99人混战,活到最后"},
|
||||
{"99人混战", "极限", "99人混战,活到最后"},
|
||||
{"回合制", "简单", "下棋模式"},
|
||||
{"回合制", "普通", "下棋模式"},
|
||||
{"回合制", "困难", "下棋模式"},
|
||||
{"回合制", "疯狂", "下棋模式"},
|
||||
{"回合制", "极限", "下棋模式"},
|
||||
{"大师", "疯狂", "20G:初心者适用"},
|
||||
{"大师", "极限", "20G:上级者的挑战"},
|
||||
{"大师", "终点", "究极20G:无法触及的终点"},
|
||||
{"宗师", "GM", "成为方块大师"},
|
||||
{"隐形", "半隐", "不强大脑"},
|
||||
{"隐形", "全隐", "挺强大脑"},
|
||||
{"隐形", "瞬隐", "很强大脑"},
|
||||
{"隐形", "瞬隐+", "超强大脑"},
|
||||
{"隐形", "", "你准备好了吗"},
|
||||
{"高速经典", "CTWC", "高速经典"},
|
||||
{"生存", "简单", "你能存活多久?"},
|
||||
{"生存", "普通", "你能存活多久?"},
|
||||
{"生存", "困难", "你能存活多久?"},
|
||||
{"生存", "疯狂", "你能存活多久?"},
|
||||
{"生存", "极限", "你能存活多久?"},
|
||||
{"进攻", "困难", "进攻练习"},
|
||||
{"进攻", "极限", "进攻练习"},
|
||||
{"防守", "普通", "防守练习"},
|
||||
{"防守", "疯狂", "防守练习"},
|
||||
{"挖掘", "困难", "挖掘练习"},
|
||||
{"挖掘", "极限", "挖掘练习"},
|
||||
{"大爆炸", "简单", "All-spin 入门教程\n未制作完成,落块即通"},
|
||||
{"中四宽练习", "普通", "无 限 连 击"},
|
||||
{"中四宽练习", "疯狂", "无 限 连 击"},
|
||||
{"全清训练", "普通", "简易全清题库,熟悉全清定式的组合"},
|
||||
{"全清训练", "疯狂", "简易全清题库,熟悉全清定式的组合"},
|
||||
{"全清挑战", "普通", "100行内刷全清"},
|
||||
{"全清挑战", "困难", "100行内刷全清"},
|
||||
{"全清挑战", "疯狂", "100行内刷全清"},
|
||||
{"科研", "普通", "禁止断B2B"},
|
||||
{"科研", "普通+", "仅允许回旋与全清"},
|
||||
{"科研", "困难", "禁止断B2B"},
|
||||
{"科研", "困难+", "仅允许回旋与全清"},
|
||||
{"科研", "疯狂", "禁止断B2B"},
|
||||
{"科研", "疯狂+", "仅允许spin与PC"},
|
||||
{"科研", "极限", "强制最简操作"},
|
||||
{"科研", "极限+", "禁止普通消除,强制最简操作"},
|
||||
{"T2挑战", "简单", "你能连续做几个T旋双清?"},
|
||||
{"T2挑战", "困难", "你能连续做几个T旋双清?"},
|
||||
{"T2挑战", "极限", "你能连续做几个T旋双清?"},
|
||||
{"禅", "", "不限时200行"},
|
||||
{"限时打分", "挑战", "在两分钟内尽可能拿到最多的分数"},
|
||||
{"无尽", "", "沙盒"},
|
||||
{"无尽:挖掘", "", "挖呀挖呀挖"},
|
||||
{"自定义", "普通", "画点什么然后把它消除!"},
|
||||
{"自定义", "拼图", "画点什么然后把它拼出来吧!"},
|
||||
{"竞速", "五联块", "伤脑筋十八块"},
|
||||
["sprint_10"]= {"竞速", "10行", "消除10行"},
|
||||
["sprint_20"]= {"竞速", "20行", "消除20行"},
|
||||
["sprint_40"]= {"竞速", "40行", "消除40行"},
|
||||
["sprint_100"]= {"竞速", "100行", "消除100行"},
|
||||
["sprint_400"]= {"竞速", "400行", "消除400行"},
|
||||
["sprint_1000"]= {"竞速", "1000行", "消除1000行"},
|
||||
["drought_normal"]= {"干旱", "100行", "你I没了"},
|
||||
["drought_lunatic"]= {"干旱", "100行", "后 妈 发 牌"},
|
||||
["marathon_normal"]= {"马拉松", "普通", "200行加速马拉松"},
|
||||
["marathon_hard"]= {"马拉松", "困难", "200行高速马拉松"},
|
||||
["solo_1"]= {"单挑", "简单", "打败机器人"},
|
||||
["solo_2"]= {"单挑", "普通", "打败机器人"},
|
||||
["solo_3"]= {"单挑", "困难", "打败机器人"},
|
||||
["solo_4"]= {"单挑", "疯狂", "打败机器人"},
|
||||
["solo_5"]= {"单挑", "极限", "打败机器人"},
|
||||
["techmino49_easy"]= {"49人混战", "简单", "49人混战,活到最后"},
|
||||
["techmino49_hard"]= {"49人混战", "困难", "49人混战,活到最后"},
|
||||
["techmino49_ultimate"]={"49人混战", "极限", "49人混战,活到最后"},
|
||||
["techmino99_easy"]= {"99人混战", "简单", "99人混战,活到最后"},
|
||||
["techmino99_hard"]= {"99人混战", "困难", "99人混战,活到最后"},
|
||||
["techmino99_ultimate"]={"99人混战", "极限", "99人混战,活到最后"},
|
||||
["round_1"]= {"回合制", "简单", "下棋模式"},
|
||||
["round_2"]= {"回合制", "普通", "下棋模式"},
|
||||
["round_3"]= {"回合制", "困难", "下棋模式"},
|
||||
["round_4"]= {"回合制", "疯狂", "下棋模式"},
|
||||
["round_5"]= {"回合制", "极限", "下棋模式"},
|
||||
["master_beginner"]= {"大师", "疯狂", "20G:初心者适用"},
|
||||
["master_adavnce"]= {"大师", "极限", "20G:上级者的挑战"},
|
||||
["master_final"]= {"大师", "终点", "究极20G:无法触及的终点"},
|
||||
["GM"]= {"宗师", "GM", "成为方块大师"},
|
||||
["blind_easy"]= {"隐形", "半隐", "不强大脑"},
|
||||
["blind_normal"]= {"隐形", "全隐", "挺强大脑"},
|
||||
["blind_hard"]= {"隐形", "瞬隐", "很强大脑"},
|
||||
["blind_lunatic"]= {"隐形", "瞬隐+", "超强大脑"},
|
||||
["blind_ultimate"]= {"隐形", "", "你准备好了吗"},
|
||||
["classic_fast"]= {"高速经典", "CTWC", "高速经典"},
|
||||
["survivor_easy"]= {"生存", "简单", "你能存活多久?"},
|
||||
["survivor_normal"]= {"生存", "普通", "你能存活多久?"},
|
||||
["survivor_hard"]= {"生存", "困难", "你能存活多久?"},
|
||||
["survivor_lunatic"]= {"生存", "疯狂", "你能存活多久?"},
|
||||
["survivor_ultimate"]= {"生存", "极限", "你能存活多久?"},
|
||||
["attacker_hard"]= {"进攻", "困难", "进攻练习"},
|
||||
["attacker_ultimate"]= {"进攻", "极限", "进攻练习"},
|
||||
["defender_normal"]= {"防守", "普通", "防守练习"},
|
||||
["defender_lunatic"]= {"防守", "疯狂", "防守练习"},
|
||||
["dig_hard"]= {"挖掘", "困难", "挖掘练习"},
|
||||
["dig_ultimate"]= {"挖掘", "极限", "挖掘练习"},
|
||||
["bigbang"]= {"大爆炸", "简单", "All-spin 入门教程\n未制作完成,落块即通"},
|
||||
["c4wtrain_normal"]= {"中四宽练习", "普通", "无 限 连 击"},
|
||||
["c4wtrain_lunatic"]= {"中四宽练习", "疯狂", "无 限 连 击"},
|
||||
["pctrain_normal"]= {"全清训练", "普通", "简易全清题库,熟悉全清定式的组合"},
|
||||
["pctrain_lunatic"]= {"全清训练", "疯狂", "简易全清题库,熟悉全清定式的组合"},
|
||||
["pcchallenge_normal"]= {"全清挑战", "普通", "100行内刷全清"},
|
||||
["pcchallenge_hard"]= {"全清挑战", "困难", "100行内刷全清"},
|
||||
["pcchallenge_lunatic"]={"全清挑战", "疯狂", "100行内刷全清"},
|
||||
["tech_normal"]= {"科研", "普通", "禁止断B2B"},
|
||||
["tech_normal+"]= {"科研", "普通+", "仅允许回旋与全清"},
|
||||
["tech_hard"]= {"科研", "困难", "禁止断B2B"},
|
||||
["tech_hard+"]= {"科研", "困难+", "仅允许回旋与全清"},
|
||||
["tech_lunatic"]= {"科研", "疯狂", "禁止断B2B"},
|
||||
["tech_lunatic+"]= {"科研", "疯狂+", "仅允许spin与PC"},
|
||||
["tech_ultimate"]= {"科研", "极限", "强制最简操作"},
|
||||
["tech_ultimate+"]= {"科研", "极限+", "禁止普通消除,强制最简操作"},
|
||||
["tsd_easy"]= {"T2挑战", "简单", "你能连续做几个T旋双清?"},
|
||||
["tsd_hard"]= {"T2挑战", "困难", "你能连续做几个T旋双清?"},
|
||||
["tsd_ultimate"]= {"T2挑战", "极限", "你能连续做几个T旋双清?"},
|
||||
["zen"]= {"禅", "", "不限时200行"},
|
||||
["ultra"]= {"限时打分", "挑战", "在两分钟内尽可能拿到最多的分数"},
|
||||
["infinite"]= {"无尽", "", "沙盒"},
|
||||
["infinite_dig"]= {"无尽:挖掘", "", "挖呀挖呀挖"},
|
||||
["custom_clear"]= {"自定义", "普通", "画点什么然后把它消除!"},
|
||||
["custom_puzzle"]= {"自定义", "拼图", "画点什么然后把它拼出来吧!"},
|
||||
["sprintPenta"]= {"竞速", "五联块", "伤脑筋十八块"},
|
||||
},
|
||||
},
|
||||
{
|
||||
anykey="Press any button",
|
||||
newVersion="Updating detected! Save format may have been updated, settings reseted",
|
||||
marking="Author:MrZ_26\nIllegal recording if u see this",
|
||||
marking="Author:MrZ_26\nIllegal recording if see this\nAny explanation invalid",
|
||||
lang="English",
|
||||
atkModeName={"Random","Badges","K.O.s","Attackers"},
|
||||
royale_remain=function(n)return n.." Players Remaining"end,
|
||||
@@ -902,12 +928,13 @@ local langList={
|
||||
fall=nil,
|
||||
next=nil,
|
||||
hold={"On","Off","Inf"},
|
||||
sequence={"bag7","his4","random"},
|
||||
sequence={"bag","his4","random","loop","fixed"},
|
||||
visible={"normal","slow fade","fast fade","sudden fade"},
|
||||
target={10,20,40,100,200,500,1000,"None"},
|
||||
freshLimit={0,8,15,"Inf"},
|
||||
opponent={"None","9S Lv1","9S Lv2","9S Lv3","9S Lv4","9S Lv5","CC Lv1","CC Lv2","CC Lv3","CC Lv4","CC Lv5","CC Lv6"},
|
||||
},
|
||||
sequence="Custom Sequence",
|
||||
snapLevelName={"Free pos","Snap-10","Snap-20","Snap-40","Snap-60","Snap-80"},
|
||||
setting_game="Game settings",
|
||||
setting_video="Video settings",
|
||||
@@ -1027,8 +1054,7 @@ local langList={
|
||||
quit="Exit",
|
||||
},
|
||||
mode={
|
||||
draw="Draw (Q)",
|
||||
custom="Settings (E)",
|
||||
setting="Settings (E)",
|
||||
start="Start",
|
||||
back="Back",
|
||||
},
|
||||
@@ -1049,6 +1075,18 @@ local langList={
|
||||
set3="Inf. (3)",
|
||||
set4="Blind (4)",
|
||||
set5="Master (5)",
|
||||
seq="Advanced",
|
||||
draw="Field Edit",
|
||||
back="Back",
|
||||
},
|
||||
sequence={
|
||||
Z="Z",S="S",J="J",L="L",T="T",O="O",I="I",
|
||||
Z5="Z5",S5="S5",P="P",Q="Q",F="F",E="E",T5="T5",U="U",
|
||||
V="V",W="W",X="X",J5="J5",L5="L5",R="R",Y="Y",N="N",H="H",I5="I5",
|
||||
left="←",
|
||||
right="→",
|
||||
backsp="<X",
|
||||
reset="R",
|
||||
back="Back",
|
||||
},
|
||||
draw={
|
||||
@@ -1058,6 +1096,7 @@ local langList={
|
||||
demo="Don't show ×",
|
||||
copy="Copy",
|
||||
paste="Paste",
|
||||
custom="Args",
|
||||
back="Back",
|
||||
},
|
||||
play={
|
||||
@@ -1191,85 +1230,85 @@ local langList={
|
||||
},
|
||||
},
|
||||
modes={
|
||||
{"Sprint", "10L", "Clear 10 lines!"},
|
||||
{"Sprint", "20L", "Clear 20 lines!"},
|
||||
{"Sprint", "40L", "Clear 40 lines!"},
|
||||
{"Sprint", "100L", "Clear 100 lines!"},
|
||||
{"Sprint", "400L", "Clear 400 lines!"},
|
||||
{"Sprint", "1000L", "Clear 1000 lines!"},
|
||||
{"Drought", "100L", "No I piece!"},
|
||||
{"Drought", "100L", "WTF"},
|
||||
{"Marathon", "NORMAL", "200-line marathon with accelerating speed."},
|
||||
{"Marathon", "HARD", "200-line high-speed marathon."},
|
||||
{"Battle", "EASY", "Defeat the AI!"},
|
||||
{"Battle", "NORMAL", "Defeat the AI!"},
|
||||
{"Battle", "HARD", "Defeat the AI!"},
|
||||
{"Battle", "LUNATIC", "Defeat the AI!"},
|
||||
{"Battle", "ULTIMATE", "Defeat the AI!"},
|
||||
{"Tech 49", "EASY", "49-player battle.\nThe last one standing wins."},
|
||||
{"Tech 49", "HARD", "49-player battle.\nThe last one standing wins."},
|
||||
{"Tech 49", "ULTIMATE", "49-player battle.\nThe last one standing wins."},
|
||||
{"Tech 99", "EASY", "99-player battle.\nThe last one standing wins."},
|
||||
{"Tech 99", "HARD", "99-player battle.\nThe last one standing wins."},
|
||||
{"Tech 99", "ULTIMATE", "99-player battle.\nThe last one standing wins."},
|
||||
{"Turn-Based", "EASY", "Chess mode"},
|
||||
{"Turn-Based", "NORMAL", "Chess mode"},
|
||||
{"Turn-Based", "HARD", "Chess mode"},
|
||||
{"Turn-Based", "LUNATIC", "Chess mode"},
|
||||
{"Turn-Based", "ULTIMATE", "Chess mode"},
|
||||
{"Master", "LUNATIC", "20G: For beginners."},
|
||||
{"Master", "ULTIMATE", "20G: Professional challenge!"},
|
||||
{"Master", "FINAL", "20G: Unreachable end point!"},
|
||||
{"GrandMaster", "GM", "To be Grand Master"},
|
||||
{"Blind", "HALF", "For novice players."},
|
||||
{"Blind", "ALL", "For intermediate players."},
|
||||
{"Blind", "SUDDEN", "For experienced players."},
|
||||
{"Blind", "SUDDEN+", "For professionals."},
|
||||
{"Blind", "", "R U Ready?"},
|
||||
{"Classic", "CTWC", "High-speed classic mode."},
|
||||
{"Survivor", "EASY", "How long can you survive?"},
|
||||
{"Survivor", "NORMAL", "How long can you survive?"},
|
||||
{"Survivor", "HARD", "How long can you survive?"},
|
||||
{"Survivor", "LUNATIC", "How long can you survive?"},
|
||||
{"Survivor", "ULTIMATE", "How long can you survive?"},
|
||||
{"Attacker", "HARD", "Offensive practice!"},
|
||||
{"Attacker", "ULTIMATE", "Offensive practice!"},
|
||||
{"Defender", "NORMAL", "Defensive practice!"},
|
||||
{"Defender", "LUNATIC", "Defensive practice!"},
|
||||
{"Driller", "HARD", "Digging practice!"},
|
||||
{"Driller", "ULTIMATE", "Digging practice!"},
|
||||
{"Big Bang", "EASY", "All-spin tutorial!\n[Under construction]"},
|
||||
{"C4W Training", "NORMAL", "Infinite combos."},
|
||||
{"C4W Training", "LUNATIC", "Infinite combos."},
|
||||
{"PC Training", "NORMAL", "Simple Perfect Clear mode."},
|
||||
{"PC Training", "LUNATIC", "Simple Perfect Clear mode."},
|
||||
{"PC Challenge", "NORMAL", "Get PCs within 100 lines!"},
|
||||
{"PC Challenge", "HARD", "Get PCs within 100 lines!"},
|
||||
{"PC Challenge", "LUNATIC", "Get PCs within 100 lines!"},
|
||||
{"Tech", "NORMAL", "Keep the B2B chain!"},
|
||||
{"Tech", "NORMAL+", "Spin & PC only"},
|
||||
{"Tech", "HARD", "Keep the B2B chain!"},
|
||||
{"Tech", "HARD+", "Spin & PC only"},
|
||||
{"Tech", "LUNATIC", "Keep the B2B chain!"},
|
||||
{"Tech", "LUNATIC+", "Spin & PC only"},
|
||||
{"Tech", "ULTIMATE", "No finesse faults!"},
|
||||
{"Tech", "ULTIMATE+", "No normal clears, no finesse faults!"},
|
||||
{"TSD Challenge", "EASY", "T-spin-doubles only!"},
|
||||
{"TSD Challenge", "HARD", "T-spin-doubles only!"},
|
||||
{"TSD Challenge", "ULTIMATE", "T-spin-doubles only!"},
|
||||
{"Zen", "", "200 lines without a time limit."},
|
||||
{"Ultra", "EXTRA", "Get the highest score within 2 min."},
|
||||
{"Infinite", "", "Sandbox mode."},
|
||||
{"Infinite: Dig", "", "Dig, dig, dig."},
|
||||
{"Custom", "NORMAL", "Draw something then clear it!!"},
|
||||
{"Custom", "PUZZLE", "Draw something then stack it!!"},
|
||||
{"Sprint", "Pentomino", "Puzzle-18"},
|
||||
["sprint_10"]= {"Sprint", "10L", "Clear 10 lines!"},
|
||||
["sprint_20"]= {"Sprint", "20L", "Clear 20 lines!"},
|
||||
["sprint_40"]= {"Sprint", "40L", "Clear 40 lines!"},
|
||||
["sprint_100"]= {"Sprint", "100L", "Clear 100 lines!"},
|
||||
["sprint_400"]= {"Sprint", "400L", "Clear 400 lines!"},
|
||||
["sprint_1000"]= {"Sprint", "1000L", "Clear 1000 lines!"},
|
||||
["drought_normal"]= {"Drought", "100L", "No I piece!"},
|
||||
["drought_lunatic"]= {"Drought", "100L", "WTF"},
|
||||
["marathon_normal"]= {"Marathon", "NORMAL", "200-line marathon with accelerating speed."},
|
||||
["marathon_hard"]= {"Marathon", "HARD", "200-line high-speed marathon."},
|
||||
["solo_1"]= {"Battle", "EASY", "Defeat the AI!"},
|
||||
["solo_2"]= {"Battle", "NORMAL", "Defeat the AI!"},
|
||||
["solo_3"]= {"Battle", "HARD", "Defeat the AI!"},
|
||||
["solo_4"]= {"Battle", "LUNATIC", "Defeat the AI!"},
|
||||
["solo_5"]= {"Battle", "ULTIMATE", "Defeat the AI!"},
|
||||
["techmino49_easy"]= {"Tech 49", "EASY", "49-player battle.\nThe last one standing wins."},
|
||||
["techmino49_hard"]= {"Tech 49", "HARD", "49-player battle.\nThe last one standing wins."},
|
||||
["techmino49_ultimate"]={"Tech 49", "ULTIMATE", "49-player battle.\nThe last one standing wins."},
|
||||
["techmino99_easy"]= {"Tech 99", "EASY", "99-player battle.\nThe last one standing wins."},
|
||||
["techmino99_hard"]= {"Tech 99", "HARD", "99-player battle.\nThe last one standing wins."},
|
||||
["techmino99_ultimate"]={"Tech 99", "ULTIMATE", "99-player battle.\nThe last one standing wins."},
|
||||
["round_1"]= {"Turn-Based", "EASY", "Chess mode"},
|
||||
["round_2"]= {"Turn-Based", "NORMAL", "Chess mode"},
|
||||
["round_3"]= {"Turn-Based", "HARD", "Chess mode"},
|
||||
["round_4"]= {"Turn-Based", "LUNATIC", "Chess mode"},
|
||||
["round_5"]= {"Turn-Based", "ULTIMATE", "Chess mode"},
|
||||
["master_beginner"]= {"Master", "LUNATIC", "20G: For beginners."},
|
||||
["master_adavnce"]= {"Master", "ULTIMATE", "20G: Professional challenge!"},
|
||||
["master_final"]= {"Master", "FINAL", "20G: Unreachable end point!"},
|
||||
["GM"]= {"GrandMaster", "GM", "To be Grand Master"},
|
||||
["blind_easy"]= {"Blind", "HALF", "For novice players."},
|
||||
["blind_normal"]= {"Blind", "ALL", "For intermediate players."},
|
||||
["blind_hard"]= {"Blind", "SUDDEN", "For experienced players."},
|
||||
["blind_lunatic"]= {"Blind", "SUDDEN+", "For professionals."},
|
||||
["blind_ultimate"]= {"Blind", "", "R U Ready?"},
|
||||
["classic_fast"]= {"Classic", "CTWC", "High-speed classic mode."},
|
||||
["survivor_easy"]= {"Survivor", "EASY", "How long can you survive?"},
|
||||
["survivor_normal"]= {"Survivor", "NORMAL", "How long can you survive?"},
|
||||
["survivor_hard"]= {"Survivor", "HARD", "How long can you survive?"},
|
||||
["survivor_lunatic"]= {"Survivor", "LUNATIC", "How long can you survive?"},
|
||||
["survivor_ultimate"]= {"Survivor", "ULTIMATE", "How long can you survive?"},
|
||||
["attacker_hard"]= {"Attacker", "HARD", "Offensive practice!"},
|
||||
["attacker_ultimate"]= {"Attacker", "ULTIMATE", "Offensive practice!"},
|
||||
["defender_normal"]= {"Defender", "NORMAL", "Defensive practice!"},
|
||||
["defender_lunatic"]= {"Defender", "LUNATIC", "Defensive practice!"},
|
||||
["dig_hard"]= {"Driller", "HARD", "Digging practice!"},
|
||||
["dig_ultimate"]= {"Driller", "ULTIMATE", "Digging practice!"},
|
||||
["bigbang"]= {"Big Bang", "EASY", "All-spin tutorial!\n[Under construction]"},
|
||||
["c4wtrain_normal"]= {"C4W Training", "NORMAL", "Infinite combos."},
|
||||
["c4wtrain_lunatic"]= {"C4W Training", "LUNATIC", "Infinite combos."},
|
||||
["pctrain_normal"]= {"PC Training", "NORMAL", "Simple Perfect Clear mode."},
|
||||
["pctrain_lunatic"]= {"PC Training", "LUNATIC", "Simple Perfect Clear mode."},
|
||||
["pcchallenge_normal"]= {"PC Challenge", "NORMAL", "Get PCs within 100 lines!"},
|
||||
["pcchallenge_hard"]= {"PC Challenge", "HARD", "Get PCs within 100 lines!"},
|
||||
["pcchallenge_lunatic"]={"PC Challenge", "LUNATIC", "Get PCs within 100 lines!"},
|
||||
["tech_normal"]= {"Tech", "NORMAL", "Keep the B2B chain!"},
|
||||
["tech_normal+"]= {"Tech", "NORMAL+", "Spin & PC only"},
|
||||
["tech_hard"]= {"Tech", "HARD", "Keep the B2B chain!"},
|
||||
["tech_hard+"]= {"Tech", "HARD+", "Spin & PC only"},
|
||||
["tech_lunatic"]= {"Tech", "LUNATIC", "Keep the B2B chain!"},
|
||||
["tech_lunatic+"]= {"Tech", "LUNATIC+", "Spin & PC only"},
|
||||
["tech_ultimate"]= {"Tech", "ULTIMATE", "No finesse faults!"},
|
||||
["tech_ultimate+"]= {"Tech", "ULTIMATE+", "No normal clears, no finesse faults!"},
|
||||
["tsd_easy"]= {"TSD Challenge", "EASY", "T-spin-doubles only!"},
|
||||
["tsd_hard"]= {"TSD Challenge", "HARD", "T-spin-doubles only!"},
|
||||
["tsd_ultimate"]= {"TSD Challenge", "ULTIMATE", "T-spin-doubles only!"},
|
||||
["zen"]= {"Zen", "", "200 lines without a time limit."},
|
||||
["ultra"]= {"Ultra", "EXTRA", "Get the highest score within 2 min."},
|
||||
["infinite"]= {"Infinite", "", "Sandbox mode."},
|
||||
["infinite_dig"]= {"Infinite: Dig", "", "Dig, dig, dig."},
|
||||
["custom_clear"]= {"Custom", "NORMAL", "Draw something then clear it!!"},
|
||||
["custom_puzzle"]= {"Custom", "PUZZLE", "Draw something then stack it!!"},
|
||||
["sprintPenta"]= {"Sprint", "Pentomino", "Puzzle-18"},
|
||||
},
|
||||
},
|
||||
{
|
||||
anykey="↓□↓",
|
||||
newVersion="&!!! ___/_?_ R",
|
||||
marking="Author:MrZ_26\nIllegal recording if u see this",
|
||||
marking="Author:MrZ_26\nIllegal recording if see this\nAny explanation invalid",
|
||||
lang="?????",
|
||||
atkModeName={"?","( )","!","←→"},
|
||||
royale_remain=function(n)return n.."~"end,
|
||||
@@ -1316,12 +1355,13 @@ local langList={
|
||||
fall=nil,
|
||||
next=nil,
|
||||
hold={"+","-","~"},
|
||||
sequence={"(xxx)","[...]","???"},
|
||||
sequence={"(xxx)","[....]","???","{abc}+","==="},
|
||||
visible={"=","-","_","."},
|
||||
target={10,20,40,100,200,500,1000,"x"},
|
||||
freshLimit={0,8,15,"~"},
|
||||
opponent={"x","9S Lv1","9S Lv2","9S Lv3","9S Lv4","9S Lv5","CC Lv1","CC Lv2","CC Lv3","CC Lv4","CC Lv5","CC Lv6"},
|
||||
},
|
||||
sequence="!@#$%^&*",
|
||||
snapLevelName={"~","10","20","40","60","80"},
|
||||
setting_game="%~~%",
|
||||
setting_video="{~~}",
|
||||
@@ -1441,8 +1481,7 @@ local langList={
|
||||
quit="X",
|
||||
},
|
||||
mode={
|
||||
draw="ABC (Q)",
|
||||
custom="_?_ (E)",
|
||||
setting="_?_ (E)",
|
||||
start="!!!",
|
||||
back="X",
|
||||
},
|
||||
@@ -1463,6 +1502,18 @@ local langList={
|
||||
set3="Inf. (3)",
|
||||
set4="Blind (4)",
|
||||
set5="Master (5)",
|
||||
seq="Advanced",
|
||||
draw="Field Edit",
|
||||
back="X",
|
||||
},
|
||||
sequence={
|
||||
Z="Z",S="S",J="J",L="L",T="T",O="O",I="I",
|
||||
Z5="Z5",S5="S5",P="P",Q="Q",F="F",E="E",T5="T5",U="U",
|
||||
V="V",W="W",X="X",J5="J5",L5="L5",R="R",Y="Y",N="N",H="H",I5="I5",
|
||||
left="←",
|
||||
right="→",
|
||||
backsp="<X",
|
||||
reset="R",
|
||||
back="X",
|
||||
},
|
||||
draw={
|
||||
@@ -1472,6 +1523,7 @@ local langList={
|
||||
demo="X ×",
|
||||
copy="→__",
|
||||
paste="__→",
|
||||
custom="_?_",
|
||||
back="X",
|
||||
},
|
||||
play={
|
||||
@@ -1605,79 +1657,79 @@ local langList={
|
||||
},
|
||||
},
|
||||
modes={
|
||||
{"Sprint", "10L", "Clear 10 lines!"},
|
||||
{"Sprint", "20L", "Clear 20 lines!"},
|
||||
{"Sprint", "40L", "Clear 40 lines!"},
|
||||
{"Sprint", "100L", "Clear 100 lines!"},
|
||||
{"Sprint", "400L", "Clear 400 lines!"},
|
||||
{"Sprint", "1000L", "Clear 1000 lines!"},
|
||||
{"Drought", "100L", "No I piece!"},
|
||||
{"Drought", "100L", "WTF"},
|
||||
{"Marathon", "NORMAL", "200-line marathon with accelerating speed."},
|
||||
{"Marathon", "HARD", "200-line high-speed marathon."},
|
||||
{"Battle", "EASY", "Defeat the AI!"},
|
||||
{"Battle", "NORMAL", "Defeat the AI!"},
|
||||
{"Battle", "HARD", "Defeat the AI!"},
|
||||
{"Battle", "LUNATIC", "Defeat the AI!"},
|
||||
{"Battle", "ULTIMATE", "Defeat the AI!"},
|
||||
{"Tech 49", "EASY", "49-player battle.\nThe last one standing wins."},
|
||||
{"Tech 49", "HARD", "49-player battle.\nThe last one standing wins."},
|
||||
{"Tech 49", "ULTIMATE", "49-player battle.\nThe last one standing wins."},
|
||||
{"Tech 99", "EASY", "99-player battle.\nThe last one standing wins."},
|
||||
{"Tech 99", "HARD", "99-player battle.\nThe last one standing wins."},
|
||||
{"Tech 99", "ULTIMATE", "99-player battle.\nThe last one standing wins."},
|
||||
{"Turn-Based", "EASY", "Chess mode"},
|
||||
{"Turn-Based", "NORMAL", "Chess mode"},
|
||||
{"Turn-Based", "HARD", "Chess mode"},
|
||||
{"Turn-Based", "LUNATIC", "Chess mode"},
|
||||
{"Turn-Based", "ULTIMATE", "Chess mode"},
|
||||
{"Master", "LUNATIC", "20G: For beginners."},
|
||||
{"Master", "ULTIMATE", "20G: Professional challenge!"},
|
||||
{"Master", "FINAL", "20G: Unreachable end point!"},
|
||||
{"GrandMaster", "GM", "To be Grand Master"},
|
||||
{"Blind", "HALF", "For novice players."},
|
||||
{"Blind", "ALL", "For intermediate players."},
|
||||
{"Blind", "SUDDEN", "For experienced players."},
|
||||
{"Blind", "SUDDEN+", "For professionals."},
|
||||
{"Blind", "", "R U Ready?"},
|
||||
{"Classic", "CTWC", "High-speed classic mode."},
|
||||
{"Survivor", "EASY", "How long can you survive?"},
|
||||
{"Survivor", "NORMAL", "How long can you survive?"},
|
||||
{"Survivor", "HARD", "How long can you survive?"},
|
||||
{"Survivor", "LUNATIC", "How long can you survive?"},
|
||||
{"Survivor", "ULTIMATE", "How long can you survive?"},
|
||||
{"Attacker", "HARD", "Offensive practice!"},
|
||||
{"Attacker", "ULTIMATE", "Offensive practice!"},
|
||||
{"Defender", "NORMAL", "Defensive practice!"},
|
||||
{"Defender", "LUNATIC", "Defensive practice!"},
|
||||
{"Driller", "HARD", "Digging practice!"},
|
||||
{"Driller", "ULTIMATE", "Digging practice!"},
|
||||
{"Big Bang", "EASY", "All-spin tutorial!\n[Under construction]"},
|
||||
{"C4W Training", "NORMAL", "Infinite combos."},
|
||||
{"C4W Training", "LUNATIC", "Infinite combos."},
|
||||
{"PC Training", "NORMAL", "Simple Perfect Clear mode."},
|
||||
{"PC Training", "LUNATIC", "Simple Perfect Clear mode."},
|
||||
{"PC Challenge", "NORMAL", "Get PCs within 100 lines!"},
|
||||
{"PC Challenge", "HARD", "Get PCs within 100 lines!"},
|
||||
{"PC Challenge", "LUNATIC", "Get PCs within 100 lines!"},
|
||||
{"Tech", "NORMAL", "Keep the B2B chain!"},
|
||||
{"Tech", "NORMAL+", "Spin & PC only"},
|
||||
{"Tech", "HARD", "Keep the B2B chain!"},
|
||||
{"Tech", "HARD+", "Spin & PC only"},
|
||||
{"Tech", "LUNATIC", "Keep the B2B chain!"},
|
||||
{"Tech", "LUNATIC+", "Spin & PC only"},
|
||||
{"Tech", "ULTIMATE", "No finesse faults!"},
|
||||
{"Tech", "ULTIMATE+", "No normal clears, no finesse faults!"},
|
||||
{"TSD Challenge", "EASY", "T-spin-doubles only!"},
|
||||
{"TSD Challenge", "HARD", "T-spin-doubles only!"},
|
||||
{"TSD Challenge", "ULTIMATE", "T-spin-doubles only!"},
|
||||
{"Zen", "", "200 lines without a time limit."},
|
||||
{"Ultra", "EXTRA", "Get the highest score within 2 min."},
|
||||
{"Infinite", "", "Sandbox mode."},
|
||||
{"Infinite: Dig", "", "Dig, dig, dig."},
|
||||
{"Custom", "NORMAL", "Draw something then clear it!!"},
|
||||
{"Custom", "PUZZLE", "Draw something then stack it!!"},
|
||||
{"Sprint", "Pentomino", "Puzzle-18"},
|
||||
["sprint_10"]= {"Sprint", "10L", "Clear 10 lines!"},
|
||||
["sprint_20"]= {"Sprint", "20L", "Clear 20 lines!"},
|
||||
["sprint_40"]= {"Sprint", "40L", "Clear 40 lines!"},
|
||||
["sprint_100"]= {"Sprint", "100L", "Clear 100 lines!"},
|
||||
["sprint_400"]= {"Sprint", "400L", "Clear 400 lines!"},
|
||||
["sprint_1000"]= {"Sprint", "1000L", "Clear 1000 lines!"},
|
||||
["drought_normal"]= {"Drought", "100L", "No I piece!"},
|
||||
["drought_lunatic"]= {"Drought", "100L", "WTF"},
|
||||
["marathon_normal"]= {"Marathon", "NORMAL", "200-line marathon with accelerating speed."},
|
||||
["marathon_hard"]= {"Marathon", "HARD", "200-line high-speed marathon."},
|
||||
["solo_1"]= {"Battle", "EASY", "Defeat the AI!"},
|
||||
["solo_2"]= {"Battle", "NORMAL", "Defeat the AI!"},
|
||||
["solo_3"]= {"Battle", "HARD", "Defeat the AI!"},
|
||||
["solo_4"]= {"Battle", "LUNATIC", "Defeat the AI!"},
|
||||
["solo_5"]= {"Battle", "ULTIMATE", "Defeat the AI!"},
|
||||
["techmino49_easy"]= {"Tech 49", "EASY", "49-player battle.\nThe last one standing wins."},
|
||||
["techmino49_hard"]= {"Tech 49", "HARD", "49-player battle.\nThe last one standing wins."},
|
||||
["techmino49_ultimate"]={"Tech 49", "ULTIMATE", "49-player battle.\nThe last one standing wins."},
|
||||
["techmino99_easy"]= {"Tech 99", "EASY", "99-player battle.\nThe last one standing wins."},
|
||||
["techmino99_hard"]= {"Tech 99", "HARD", "99-player battle.\nThe last one standing wins."},
|
||||
["techmino99_ultimate"]={"Tech 99", "ULTIMATE", "99-player battle.\nThe last one standing wins."},
|
||||
["round_1"]= {"Turn-Based", "EASY", "Chess mode"},
|
||||
["round_2"]= {"Turn-Based", "NORMAL", "Chess mode"},
|
||||
["round_3"]= {"Turn-Based", "HARD", "Chess mode"},
|
||||
["round_4"]= {"Turn-Based", "LUNATIC", "Chess mode"},
|
||||
["round_5"]= {"Turn-Based", "ULTIMATE", "Chess mode"},
|
||||
["master_beginner"]= {"Master", "LUNATIC", "20G: For beginners."},
|
||||
["master_adavnce"]= {"Master", "ULTIMATE", "20G: Professional challenge!"},
|
||||
["master_final"]= {"Master", "FINAL", "20G: Unreachable end point!"},
|
||||
["GM"]= {"GrandMaster", "GM", "To be Grand Master"},
|
||||
["blind_easy"]= {"Blind", "HALF", "For novice players."},
|
||||
["blind_normal"]= {"Blind", "ALL", "For intermediate players."},
|
||||
["blind_hard"]= {"Blind", "SUDDEN", "For experienced players."},
|
||||
["blind_lunatic"]= {"Blind", "SUDDEN+", "For professionals."},
|
||||
["blind_ultimate"]= {"Blind", "", "R U Ready?"},
|
||||
["classic_fast"]= {"Classic", "CTWC", "High-speed classic mode."},
|
||||
["survivor_easy"]= {"Survivor", "EASY", "How long can you survive?"},
|
||||
["survivor_normal"]= {"Survivor", "NORMAL", "How long can you survive?"},
|
||||
["survivor_hard"]= {"Survivor", "HARD", "How long can you survive?"},
|
||||
["survivor_lunatic"]= {"Survivor", "LUNATIC", "How long can you survive?"},
|
||||
["survivor_ultimate"]= {"Survivor", "ULTIMATE", "How long can you survive?"},
|
||||
["attacker_hard"]= {"Attacker", "HARD", "Offensive practice!"},
|
||||
["attacker_ultimate"]= {"Attacker", "ULTIMATE", "Offensive practice!"},
|
||||
["defender_normal"]= {"Defender", "NORMAL", "Defensive practice!"},
|
||||
["defender_lunatic"]= {"Defender", "LUNATIC", "Defensive practice!"},
|
||||
["dig_hard"]= {"Driller", "HARD", "Digging practice!"},
|
||||
["dig_ultimate"]= {"Driller", "ULTIMATE", "Digging practice!"},
|
||||
["bigbang"]= {"Big Bang", "EASY", "All-spin tutorial!\n[Under construction]"},
|
||||
["c4wtrain_normal"]= {"C4W Training", "NORMAL", "Infinite combos."},
|
||||
["c4wtrain_lunatic"]= {"C4W Training", "LUNATIC", "Infinite combos."},
|
||||
["pctrain_normal"]= {"PC Training", "NORMAL", "Simple Perfect Clear mode."},
|
||||
["pctrain_lunatic"]= {"PC Training", "LUNATIC", "Simple Perfect Clear mode."},
|
||||
["pcchallenge_normal"]= {"PC Challenge", "NORMAL", "Get PCs within 100 lines!"},
|
||||
["pcchallenge_hard"]= {"PC Challenge", "HARD", "Get PCs within 100 lines!"},
|
||||
["pcchallenge_lunatic"]={"PC Challenge", "LUNATIC", "Get PCs within 100 lines!"},
|
||||
["tech_normal"]= {"Tech", "NORMAL", "Keep the B2B chain!"},
|
||||
["tech_normal+"]= {"Tech", "NORMAL+", "Spin & PC only"},
|
||||
["tech_hard"]= {"Tech", "HARD", "Keep the B2B chain!"},
|
||||
["tech_hard+"]= {"Tech", "HARD+", "Spin & PC only"},
|
||||
["tech_lunatic"]= {"Tech", "LUNATIC", "Keep the B2B chain!"},
|
||||
["tech_lunatic+"]= {"Tech", "LUNATIC+", "Spin & PC only"},
|
||||
["tech_ultimate"]= {"Tech", "ULTIMATE", "No finesse faults!"},
|
||||
["tech_ultimate+"]= {"Tech", "ULTIMATE+", "No normal clears, no finesse faults!"},
|
||||
["tsd_easy"]= {"TSD Challenge", "EASY", "T-spin-doubles only!"},
|
||||
["tsd_hard"]= {"TSD Challenge", "HARD", "T-spin-doubles only!"},
|
||||
["tsd_ultimate"]= {"TSD Challenge", "ULTIMATE", "T-spin-doubles only!"},
|
||||
["zen"]= {"Zen", "", "200 lines without a time limit."},
|
||||
["ultra"]= {"Ultra", "EXTRA", "Get the highest score within 2 min."},
|
||||
["infinite"]= {"Infinite", "", "Sandbox mode."},
|
||||
["infinite_dig"]= {"Infinite: Dig", "", "Dig, dig, dig."},
|
||||
["custom_clear"]= {"Custom", "NORMAL", "Draw something then clear it!!"},
|
||||
["custom_puzzle"]= {"Custom", "PUZZLE", "Draw something then stack it!!"},
|
||||
["sprintPenta"]= {"Sprint", "Pentomino", "Puzzle-18"},
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -1729,7 +1781,7 @@ local drawableTextLoad={
|
||||
"anykey",
|
||||
"next","hold",
|
||||
"win","finish","lose","pause",
|
||||
"custom",
|
||||
"custom","sequence",
|
||||
"setting_game",
|
||||
"setting_video",
|
||||
"setting_sound",
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
--https://github.com/mattdesl/lwjgl-basics/wiki/2D-Pixel-Perfect-Shadows
|
||||
local gc=love.graphics
|
||||
local C=gc.clear
|
||||
local shadowMapShader=gc.newShader("shader/shadowMap.glsl")--Shader for caculating the 1D shadow map.
|
||||
local lightRenderShader=gc.newShader("shader/lightRender.glsl")--Shader for rendering blurred lights and shadows.
|
||||
local shadowMapShader=gc.newShader("Zframework/shader/shadowMap.glsl")--Shader for caculating the 1D shadow map.
|
||||
local lightRenderShader=gc.newShader("Zframework/shader/lightRender.glsl")--Shader for rendering blurred lights and shadows.
|
||||
local Lights={}--Lightsource objects
|
||||
local function move(L,x,y)
|
||||
L.x,L.y=x,y
|
||||
|
||||
@@ -152,59 +152,60 @@ function Pnt.mode()
|
||||
gc.scale(cam.zoomK)
|
||||
gc.translate(-cam.x1,-cam.y1)
|
||||
gc.scale(cam.k1)
|
||||
local MM=Modes
|
||||
local R=modeRanks
|
||||
local sel=cam.sel
|
||||
setFont(30)
|
||||
for _=1,#MM do
|
||||
local M=MM[_]
|
||||
if R[_]then
|
||||
gc.setLineWidth(8)
|
||||
gc.setColor(1,1,1,.2)
|
||||
|
||||
gc.setLineWidth(8)
|
||||
gc.setColor(1,1,1,.2)
|
||||
for name,M in next,Modes do
|
||||
if R[name]then
|
||||
for _=1,#M.unlock do
|
||||
local m=M.unlock[_]
|
||||
m=MM[m]
|
||||
local m=Modes[M.unlock[_]]
|
||||
gc.line(M.x,M.y,m.x,m.y)
|
||||
end
|
||||
end
|
||||
end--lines connecting modes
|
||||
|
||||
for name,M in next,Modes do
|
||||
if R[name]then
|
||||
local S=M.size
|
||||
local d=((M.x-(cam.x1+(sel and -180 or 0))/cam.k1)^2+(M.y-cam.y1/cam.k1)^2)^.55
|
||||
if d<500 then S=S*(1.25-d*0.0005) end
|
||||
local c=modeRankColor[modeRanks[M.id]]
|
||||
local c=modeRankColor[R[M.name]]
|
||||
if c then
|
||||
gc.setColor(c)
|
||||
else
|
||||
c=.5+sin(Timer()*6.26-_)*.2
|
||||
c=.5+sin(Timer()*6.26)*.2
|
||||
S=S*(.9+c*.4)
|
||||
gc.setColor(c,c,c)
|
||||
end
|
||||
if M.shape==1 then--Rectangle
|
||||
gc.rectangle("fill",M.x-S,M.y-S,2*S,2*S)
|
||||
if sel==_ then
|
||||
if sel==name then
|
||||
gc.setColor(1,1,1)
|
||||
gc.setLineWidth(10)
|
||||
gc.rectangle("line",M.x-S+5,M.y-S+5,2*S-10,2*S-10)
|
||||
end
|
||||
elseif M.shape==2 then--diamond
|
||||
gc.circle("fill",M.x,M.y,S+5,4)
|
||||
if sel==_ then
|
||||
if sel==name then
|
||||
gc.setColor(1,1,1)
|
||||
gc.setLineWidth(10)
|
||||
gc.circle("line",M.x,M.y,S+5,4)
|
||||
end
|
||||
elseif M.shape==3 then--Octagon
|
||||
gc.circle("fill",M.x,M.y,S,8)
|
||||
if sel==_ then
|
||||
if sel==name then
|
||||
gc.setColor(1,1,1)
|
||||
gc.setLineWidth(10)
|
||||
gc.circle("line",M.x,M.y,S,8)
|
||||
end
|
||||
end
|
||||
_=drawableText[rankString[modeRanks[M.id]]]
|
||||
if _ then
|
||||
local dx,dy=6.26*sin(Timer()*0.626+M.id),6.6*sin(Timer()+M.id)
|
||||
name=drawableText[rankString[R[M.name]]]
|
||||
if name then
|
||||
gc.setColor(0,0,0,.26)
|
||||
mDraw(_,M.x+dx*1.5,M.y+dy*1.5)
|
||||
mDraw(name,M.x,M.y)
|
||||
end
|
||||
--[[
|
||||
if M.icon then
|
||||
@@ -224,7 +225,7 @@ function Pnt.mode()
|
||||
end
|
||||
gc.pop()
|
||||
if sel then
|
||||
local M=MM[sel]
|
||||
local M=Modes[sel]
|
||||
local lang=setting.lang
|
||||
gc.setColor(.7,.7,.7,.5)
|
||||
gc.rectangle("fill",920,0,360,720)--Info board
|
||||
@@ -293,21 +294,40 @@ function Pnt.music()
|
||||
end
|
||||
function Pnt.custom()
|
||||
gc.setColor(1,1,1,.3+sin(Timer()*8)*.2)
|
||||
gc.rectangle("fill",25,95+40*sceneTemp,480,40)
|
||||
gc.setColor(.7,.7,.7)gc.draw(drawableText.custom,20,20)
|
||||
gc.setColor(1,1,1)gc.draw(drawableText.custom,22,23)
|
||||
gc.rectangle("fill",100,115+40*sceneTemp,570,40)
|
||||
gc.setColor(.7,.7,.7)gc.draw(drawableText.custom,360,20)
|
||||
gc.setColor(1,1,1)gc.draw(drawableText.custom,362,23)
|
||||
setFont(35)
|
||||
for i=1,#customID do
|
||||
local k=customID[i]
|
||||
local y=90+40*i
|
||||
gc.printf(text.customOption[k],15,y,320,"right")
|
||||
local y=110+40*i
|
||||
gc.printf(text.customOption[k],100,y,320,"right")
|
||||
if text.customVal[k]then
|
||||
gc.print(text.customVal[k][customSel[i]],335,y)
|
||||
gc.print(text.customVal[k][customSel[i]],440,y)
|
||||
else
|
||||
gc.print(customRange[k][customSel[i]],335,y)
|
||||
gc.print(customRange[k][customSel[i]],440,y)
|
||||
end
|
||||
end
|
||||
end
|
||||
function Pnt.sequence()
|
||||
gc.setColor(.7,.7,.7)gc.draw(drawableText.sequence,120,-15)
|
||||
gc.setColor(1,1,1)gc.draw(drawableText.sequence,122,-12)
|
||||
gc.setLineWidth(4)
|
||||
gc.rectangle("line",100,100,1080,260)
|
||||
setFont(30)
|
||||
for i=1,#preBag do
|
||||
gc.print(preBag[i],100+30*i,110)
|
||||
end
|
||||
setFont(40)
|
||||
gc.print(sceneTemp.cur,120,300)
|
||||
|
||||
--Confirm reset
|
||||
if sceneTemp.sure>0 then
|
||||
gc.setColor(1,1,1,sceneTemp.sure*.02)
|
||||
gc.draw(drawableText.question,1035,570)
|
||||
end
|
||||
end
|
||||
|
||||
function Pnt.draw()
|
||||
local sx,sy=sceneTemp.x,sceneTemp.y
|
||||
gc.translate(200,60)
|
||||
@@ -333,6 +353,8 @@ function Pnt.draw()
|
||||
gc.rectangle("line",30*sx-30,600-30*sy,30,30)
|
||||
end
|
||||
gc.translate(-200,-60)
|
||||
|
||||
--Pen
|
||||
local pen=sceneTemp.pen
|
||||
if pen>0 then
|
||||
gc.setLineWidth(13)
|
||||
@@ -344,10 +366,14 @@ function Pnt.draw()
|
||||
gc.line(575,470,625,520)
|
||||
gc.line(575,520,625,470)
|
||||
end
|
||||
|
||||
--Confirm reset
|
||||
if sceneTemp.sure>0 then
|
||||
gc.setColor(1,1,1,sceneTemp.sure*.02)
|
||||
gc.draw(drawableText.question,1040,430)
|
||||
end
|
||||
|
||||
--Block name
|
||||
setFont(40)
|
||||
local _
|
||||
for i=1,7 do
|
||||
@@ -358,10 +384,13 @@ function Pnt.draw()
|
||||
end
|
||||
function Pnt.play()
|
||||
if marking then
|
||||
setFont(36)
|
||||
local x=game.frame*2%1800-260
|
||||
gc.setColor(1,1,1,abs(0.26*(1-x/640))-0.0626)
|
||||
setFont(26)
|
||||
local x=Timer()*46%1680-200
|
||||
gc.setColor(1,1,1,abs(.26*(1-x/640)))
|
||||
mStr(text.marking,x,260+62*sin(Timer()))
|
||||
-- gc.setColor(1,1,1,.0626)
|
||||
-- mStr(text.marking,260,62+26*sin(Timer()))
|
||||
-- mStr(text.marking,1100,460+62*sin(Timer()*1.2))
|
||||
end
|
||||
for p=1,#players do
|
||||
players[p]:draw()
|
||||
@@ -420,6 +449,13 @@ function Pnt.play()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--Mode info
|
||||
gc.setColor(1,1,1,.8)
|
||||
gc.draw(drawableText.modeName,485,10)
|
||||
gc.draw(drawableText.levelName,511+drawableText.modeName:getWidth(),10)
|
||||
|
||||
--Danger
|
||||
gc.push("transform")
|
||||
gc.origin()
|
||||
if restartCount>0 then
|
||||
|
||||
@@ -79,6 +79,9 @@ function sceneInit.custom()
|
||||
BG.set(customRange.bg[customSel[12]])
|
||||
BGM.play(customRange.bgm[customSel[13]])
|
||||
end
|
||||
function sceneInit.sequence()
|
||||
sceneTemp={cur=#preBag,sure=0}
|
||||
end
|
||||
function sceneInit.draw()
|
||||
BG.set("space")
|
||||
sceneTemp={
|
||||
@@ -328,6 +331,9 @@ function SCN.swapTo(tar,style)
|
||||
S.draw=swap[3]
|
||||
end
|
||||
end
|
||||
function SCN.goto(tar,style)
|
||||
SCN.push()SCN.swapTo(tar,style)
|
||||
end
|
||||
function SCN.back()
|
||||
if backFunc[SCN.cur] then backFunc[SCN.cur]()end
|
||||
--func when scene end
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
local function N(file)
|
||||
return love.graphics.newShader("shader/"..file..".glsl")
|
||||
return love.graphics.newShader("Zframework/shader/"..file..".glsl")
|
||||
end
|
||||
return{
|
||||
-- glow=gc.newShader("shader/glow.cs"),
|
||||
-- glow=gc.newShader("Zframework/shader/glow.cs"),
|
||||
alpha=N("alpha"),
|
||||
warning=N("warning"),
|
||||
|
||||
|
||||
4
Zframework/shader/alpha.glsl
Normal file
4
Zframework/shader/alpha.glsl
Normal file
@@ -0,0 +1,4 @@
|
||||
extern float a;
|
||||
vec4 effect(vec4 color,Image text,vec2 pos,vec2 scr_pos){
|
||||
return vec4(1.,1.,1.,sign(Texel(text,pos).a)*a);
|
||||
}
|
||||
42
Zframework/shader/aura.glsl
Normal file
42
Zframework/shader/aura.glsl
Normal file
@@ -0,0 +1,42 @@
|
||||
#define PI 3.1415926535897932384626
|
||||
extern float w,h;
|
||||
extern float t;
|
||||
vec4 effect(vec4 color,Image text,vec2 pos,vec2 scr_pos){
|
||||
float x=scr_pos.x/w;
|
||||
float y=scr_pos.y/h;
|
||||
float dx,dy;
|
||||
vec3 V=vec3(0.);
|
||||
|
||||
dx=0.5+cos(t*3.*0.26)*0.4-x;
|
||||
dy=0.5-sin(t*3.*0.62)*0.4-y;
|
||||
dx=sqrt(dx*dx+dy*dy);
|
||||
V.r=V.r+smoothstep(1.26,0.,dx);
|
||||
|
||||
dx=(0.5+cos(t*3.*0.32)*0.4)-x;
|
||||
dy=(0.5-sin(t*3.*0.80)*0.4)-y;
|
||||
dx=sqrt(dx*dx+dy*dy);
|
||||
V.g=V.g+smoothstep(1.26,0.,dx);
|
||||
|
||||
dx=(0.5-cos(t*3.*0.49)*0.4)-x;
|
||||
dy=(0.5+sin(t*3.*0.18)*0.4)-y;
|
||||
dx=sqrt(dx*dx+dy*dy);
|
||||
V.b=V.b+smoothstep(1.26,0.,dx);
|
||||
|
||||
dx=(0.5+cos(t*0.53)*0.4)-x;
|
||||
dy=(0.5-sin(t*0.46)*0.4)-y;
|
||||
dx=sqrt(dx*dx+dy*dy);
|
||||
V.rg+=vec2(smoothstep(0.626,0.,dx));
|
||||
|
||||
dx=(0.5+cos(t*0.98)*0.4)-x;
|
||||
dy=(0.5+sin(t*0.57)*0.4)-y;
|
||||
dx=sqrt(dx*dx+dy*dy);
|
||||
V.rb+=vec2(smoothstep(0.626,0.,dx));
|
||||
|
||||
dx=(0.5-cos(t*0.86)*0.4)-x;
|
||||
dy=(0.5-sin(t*0.32)*0.4)-y;
|
||||
dx=sqrt(dx*dx+dy*dy);
|
||||
V.gb+=vec2(smoothstep(0.626,0.,dx));
|
||||
|
||||
dx=1.626*max(max(V.r,V.g),V.b);
|
||||
return vec4(V/dx,1.);
|
||||
}
|
||||
5
Zframework/shader/glow.glsl
Normal file
5
Zframework/shader/glow.glsl
Normal file
@@ -0,0 +1,5 @@
|
||||
extern float X,Y,W,H;
|
||||
vec4 effect(vec4 C,Image Tx,vec2 pos,vec2 scr_pos){
|
||||
C[3]=min((scr_pos.x-X)/W*0.3+(scr_pos.y-Y)/H*0.1,0.3)+0.5;
|
||||
return C;
|
||||
}
|
||||
29
Zframework/shader/lightRender.glsl
Normal file
29
Zframework/shader/lightRender.glsl
Normal file
@@ -0,0 +1,29 @@
|
||||
#define PI 3.14159
|
||||
extern float xresolution;
|
||||
//sample from 1D vis-depth map
|
||||
float samp(vec2 coord,float r,Image u_texture){
|
||||
return step(r,Texel(u_texture,coord).r);
|
||||
}
|
||||
vec4 effect(vec4 color,Image texture,vec2 texture_coords,vec2 screen_coords){
|
||||
//cartesian to polar, y of 1D sample is always 0
|
||||
vec2 norm=texture_coords.st*2.-1.;
|
||||
vec2 tc=vec2((atan(norm.y,norm.x)+PI)/(2.*PI),0.);
|
||||
float r=length(norm);
|
||||
|
||||
//enlarge blur parameter by distance, light scattering simulation
|
||||
float blur=(1./xresolution)*smoothstep(0.3,1.,r);
|
||||
|
||||
//Simple Gaussian blur
|
||||
float sum=//brightness(0~1)
|
||||
samp(vec2(tc.x-3.*blur,tc.y),r,texture)*0.1
|
||||
+samp(vec2(tc.x-2.*blur,tc.y),r,texture)*0.13
|
||||
+samp(vec2(tc.x-1.*blur,tc.y),r,texture)*0.17
|
||||
|
||||
+samp(tc,r,texture)*0.2//The center tex coord,which gives us hard shadows.
|
||||
+samp(vec2(tc.x+1.*blur,tc.y),r,texture)*0.17
|
||||
+samp(vec2(tc.x+2.*blur,tc.y),r,texture)*0.13
|
||||
+samp(vec2(tc.x+3.*blur,tc.y),r,texture)*0.1;
|
||||
|
||||
//Multiply the distance to get a soft fading
|
||||
return vec4(vec3(1.),sum*smoothstep(1.,0.,r));
|
||||
}
|
||||
15
Zframework/shader/rainbow.glsl
Normal file
15
Zframework/shader/rainbow.glsl
Normal file
@@ -0,0 +1,15 @@
|
||||
#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.
|
||||
);
|
||||
}
|
||||
21
Zframework/shader/shadowMap.glsl
Normal file
21
Zframework/shader/shadowMap.glsl
Normal file
@@ -0,0 +1,21 @@
|
||||
#define PI 3.14
|
||||
extern float yresolution;
|
||||
vec4 effect(vec4 color,Image texture,vec2 texture_coords,vec2 screen_coords){
|
||||
//Iterate through the occluder map's y-axis.
|
||||
for(float y=0.;y<yresolution;y++){
|
||||
//cartesian to polar
|
||||
// y/yresolution=distance to light source(0~1)
|
||||
vec2 norm=vec2(texture_coords.s,y/yresolution)*2.-1.;
|
||||
float theta=PI*1.5+norm.x*PI;
|
||||
float r=(1.+norm.y)*0.5;
|
||||
|
||||
//sample from solid
|
||||
if(
|
||||
Texel(texture,(
|
||||
vec2(-r*sin(theta),-r*cos(theta))*0.5+0.5//coord of solid sampling
|
||||
))
|
||||
.a>0.1
|
||||
)return vec4(vec3(y/yresolution),1.);//collision check, alpha>0.1 means transparent
|
||||
}
|
||||
return vec4(1.,1.,1.,1.);//return max distance 1
|
||||
}
|
||||
11
Zframework/shader/strap.glsl
Normal file
11
Zframework/shader/strap.glsl
Normal file
@@ -0,0 +1,11 @@
|
||||
#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.
|
||||
);
|
||||
}
|
||||
8
Zframework/shader/warning.glsl
Normal file
8
Zframework/shader/warning.glsl
Normal file
@@ -0,0 +1,8 @@
|
||||
extern float w,h;
|
||||
extern float level;
|
||||
vec4 effect(vec4 color,Image text,vec2 pos,vec2 scr_pos){
|
||||
float dx=abs(scr_pos.x/w-0.5);
|
||||
float dy=abs(scr_pos.y/h-0.5);
|
||||
float a=(max(dx,dy)*2.-.626)*level;
|
||||
return vec4(1.,0.,0.,a);
|
||||
}
|
||||
@@ -1,5 +1,4 @@
|
||||
local rem=table.remove
|
||||
|
||||
local tasks={}
|
||||
|
||||
local TASK={}
|
||||
@@ -48,12 +47,6 @@ function TASK.clear(opt)
|
||||
tasks[i]=nil
|
||||
i=i-1
|
||||
end
|
||||
elseif opt=="play"then
|
||||
for i=#tasks,1,-1 do
|
||||
if tasks[i].P then
|
||||
rem(tasks,i)
|
||||
end
|
||||
end
|
||||
else--Player table
|
||||
for i=#tasks,1,-1 do
|
||||
if tasks[i].P==opt then
|
||||
|
||||
@@ -18,13 +18,13 @@ function Tmr.load()
|
||||
elseif S.phase==4 then
|
||||
IMG.loadOne(S.cur)
|
||||
elseif S.phase==5 then
|
||||
local m=Modes[S.cur]
|
||||
Modes[S.cur]=require("modes/"..m[1])
|
||||
local M=Modes[S.cur]
|
||||
M.saveFileName,M.id=m[1],m.id
|
||||
M.x,M.y,M.size,M.shape=m.x,m.y,m.size,m.shape
|
||||
M.unlock=m.unlock
|
||||
M.records=FILE.loadRecord(m[1])or M.score and{}
|
||||
local m=Modes[S.cur]--mode template
|
||||
local M=require("modes/"..m.name)--mode file
|
||||
Modes[m.name]=M
|
||||
for k,v in next,m do
|
||||
M[k]=v
|
||||
end
|
||||
M.records=FILE.loadRecord(m.name)or M.score and{}
|
||||
-- M.icon=gc.newImage("image/modeIcon/"..m.icon..".png")
|
||||
-- M.icon=gc.newImage("image/modeIcon/custom.png")
|
||||
elseif S.phase==6 then
|
||||
@@ -105,21 +105,19 @@ function Tmr.mode(dt)
|
||||
cam.keyCtrl=true
|
||||
end
|
||||
local x,y=(cam.x1-180)/cam.k1,cam.y1/cam.k1
|
||||
local MM,R=Modes,modeRanks
|
||||
for _=1,#MM do
|
||||
if R[_]then
|
||||
local __
|
||||
local M=MM[_]
|
||||
for name,M in next,Modes do
|
||||
if modeRanks[name]then
|
||||
local SEL
|
||||
local s=M.size
|
||||
if M.shape==1 then
|
||||
if x>M.x-s and x<M.x+s and y>M.y-s and y<M.y+s then __=_ end
|
||||
if x>M.x-s and x<M.x+s and y>M.y-s and y<M.y+s then SEL=name end
|
||||
elseif M.shape==2 then
|
||||
if abs(x-M.x)+abs(y-M.y)<s then __=_ end
|
||||
if abs(x-M.x)+abs(y-M.y)<s then SEL=name end
|
||||
elseif M.shape==3 then
|
||||
if(x-M.x)^2+(y-M.y)^2<s^2 then __=_ end
|
||||
if(x-M.x)^2+(y-M.y)^2<s^2 then SEL=name end
|
||||
end
|
||||
if __ and cam.sel~=__ then
|
||||
cam.sel=__
|
||||
if SEL and cam.sel~=SEL then
|
||||
cam.sel=SEL
|
||||
SFX.play("click")
|
||||
end
|
||||
end
|
||||
@@ -154,6 +152,9 @@ function Tmr.mode(dt)
|
||||
cam.zoomK=cam.zoomK^.9
|
||||
end
|
||||
end
|
||||
function Tmr.sequence()
|
||||
if sceneTemp.sure>0 then sceneTemp.sure=sceneTemp.sure-1 end
|
||||
end
|
||||
function Tmr.draw()
|
||||
if sceneTemp.sure>0 then sceneTemp.sure=sceneTemp.sure-1 end
|
||||
end
|
||||
@@ -239,8 +240,8 @@ function Tmr.play(dt)
|
||||
if game.frame%26==0 and setting.warn then
|
||||
local F=P1.field
|
||||
local M=#F
|
||||
local height=0
|
||||
for x=3,8 do
|
||||
local height=0--max height of row 4~7
|
||||
for x=4,7 do
|
||||
for y=M,1,-1 do
|
||||
if F[y][x]>0 then
|
||||
if y>height then
|
||||
|
||||
@@ -218,9 +218,6 @@ function WIDGET.press(x,y)
|
||||
local W=WIDGET.sel
|
||||
if not W then return end
|
||||
if W.type=="button"then
|
||||
for k,v in next,W do
|
||||
print(k,v)
|
||||
end
|
||||
W.code()
|
||||
W:FX()
|
||||
SFX.play("button")
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
local ins,rem=table.insert,table.remove
|
||||
local mobileHide=(system=="Android"or system=="iOS")and function()return true end
|
||||
local function BACK()SCN.back()end
|
||||
local virtualkeySet={
|
||||
@@ -85,46 +86,84 @@ local function nextDir(n) return function()SKIN.rotate(n) end end
|
||||
local function VKAdisp(n) return function()return VK_org[n].ava end end
|
||||
local function VKAcode(n) return function()VK_org[n].ava=not VK_org[n].ava end end
|
||||
local function setLang(n) return function()LANG.set(n)setting.lang=n end end
|
||||
local function SEQpush(n) return function()local C=sceneTemp.cur+1 ins(preBag,C,n)sceneTemp.cur=C end end
|
||||
local newButton,newSwitch,newSlider=WIDGET.new.button,WIDGET.new.switch,WIDGET.new.slider
|
||||
|
||||
|
||||
local C=color
|
||||
local Widgets={
|
||||
load={},intro={},quit={},
|
||||
main={
|
||||
play= newButton(150,280,200,160,C.lightRed, 55,function()SCN.push()SCN.swapTo("mode")end, nil,"setting"),
|
||||
setting=newButton(370,280,200,160,C.lightBlue, 45,function()SCN.push()SCN.swapTo("setting_game")end, nil,"music"),
|
||||
music= newButton(590,280,200,160,C.lightPurple, 32,function()SCN.push()SCN.swapTo("music")end, nil,"help"),
|
||||
help= newButton(150,460,200,160,C.lightYellow, 50,function()SCN.push()SCN.swapTo("help")end, nil,"stat"),
|
||||
stat= newButton(370,460,200,160,C.lightCyan, 43,function()SCN.push()SCN.swapTo("stat")end, nil,"qplay"),
|
||||
play= newButton(150,280,200,160,C.lightRed, 55,function()SCN.goto("mode")end, nil,"setting"),
|
||||
setting=newButton(370,280,200,160,C.lightBlue, 45,function()SCN.goto("setting_game")end, nil,"music"),
|
||||
music= newButton(590,280,200,160,C.lightPurple, 32,function()SCN.goto("music")end, nil,"help"),
|
||||
help= newButton(150,460,200,160,C.lightYellow, 50,function()SCN.goto("help")end, nil,"stat"),
|
||||
stat= newButton(370,460,200,160,C.lightCyan, 43,function()SCN.goto("stat")end, nil,"qplay"),
|
||||
qplay= newButton(590,460,200,160,C.lightOrange, 43,function()SCN.push()loadGame(stat.lastPlay)end, nil,"lang"),
|
||||
lang= newButton(150,610,160,100,C.lightGreen, 45,function()SCN.push()SCN.swapTo("setting_lang")end, nil,"quit"),
|
||||
lang= newButton(150,610,160,100,C.lightGreen, 45,function()SCN.goto("setting_lang")end, nil,"quit"),
|
||||
quit= newButton(590,610,160,100,C.lightGrey, 45,function()VOC.play("bye")SCN.swapTo("quit","slowFade")end,nil,"play"),
|
||||
},
|
||||
mode={
|
||||
draw= newButton(1100, 440,240,90,C.lightYellow, 40,function()SCN.push()SCN.swapTo("draw")end,function()return mapCam.sel~=71 and mapCam.sel~=72 end),
|
||||
custom= newButton(1100, 540,240,90,C.lightGreen, 40,function()SCN.push()SCN.swapTo("custom")end,function()return mapCam.sel~=71 and mapCam.sel~=72 end),
|
||||
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),
|
||||
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),
|
||||
back= newButton(1200, 655,120,80,C.white, 40,BACK),
|
||||
--function()SCN.push()SCN.swapTo("custom")end
|
||||
},
|
||||
music={
|
||||
bgm= newSlider(760, 80,400,10,35,function()BGM.freshVolume()end,SETval("bgm"),SETsto("bgm")),
|
||||
up= newButton(1100, 200,120,120,C.white,55,pressKey("up")),
|
||||
play= newButton(1100, 340,120,120,C.white,35,pressKey("space"),function()return setting.bgm==0 end),
|
||||
down= newButton(1100, 480,120,120,C.white,55,pressKey("down")),
|
||||
back= newButton(640, 630,230,90, C.white,40,BACK),
|
||||
up= newButton(1100, 200,120,120,C.white, 55,pressKey("up")),
|
||||
play= newButton(1100, 340,120,120,C.white, 35,pressKey("space"),function()return setting.bgm==0 end),
|
||||
down= newButton(1100, 480,120,120,C.white, 55,pressKey("down")),
|
||||
back= newButton(640, 630,230,90, C.white, 40,BACK),
|
||||
},
|
||||
custom={
|
||||
up= newButton(1000, 360,100,100,C.white, 45,function()sceneTemp=(sceneTemp-2)%#customID+1 end),
|
||||
down= newButton(1000, 600,100,100,C.white, 45,function()sceneTemp=sceneTemp%#customID+1 end),
|
||||
left= newButton(880, 480,100,100,C.white, 45,pressKey("left")),
|
||||
right= newButton(1120, 480,100,100,C.white, 45,pressKey("right")),
|
||||
set1= newButton(640, 160,240,75, C.lightYellow, 35,pressKey("1")),
|
||||
set2= newButton(640, 250,240,75, C.lightYellow, 35,pressKey("2")),
|
||||
set3= newButton(640, 340,240,75, C.lightYellow, 35,pressKey("3")),
|
||||
set4= newButton(640, 430,240,75, C.lightYellow, 35,pressKey("4")),
|
||||
set5= newButton(640, 520,240,75, C.lightYellow, 35,pressKey("5")),
|
||||
back= newButton(640, 630,180,60, C.white, 35,BACK),
|
||||
up= newButton(1140, 100,100,100,C.white, 45,function()sceneTemp=(sceneTemp-2)%#customID+1 end),
|
||||
down= newButton(1140, 340,100,100,C.white, 45,function()sceneTemp=sceneTemp%#customID+1 end),
|
||||
left= newButton(1080, 220,100,100,C.white, 45,pressKey("left")),
|
||||
right= newButton(1200, 220,100,100,C.white, 45,pressKey("right")),
|
||||
|
||||
set1= newButton(940, 320,260,70, C.lightYellow, 32,pressKey("1")),
|
||||
set2= newButton(940, 400,260,70, C.lightYellow, 32,pressKey("2")),
|
||||
set3= newButton(940, 480,260,70, C.lightYellow, 32,pressKey("3")),
|
||||
set4= newButton(940, 560,260,70, C.lightYellow, 32,pressKey("4")),
|
||||
set5= newButton(940, 640,260,70, C.lightYellow, 32,pressKey("5")),
|
||||
|
||||
seq= newButton(665, 415,162,40, C.lightGreen, 32,function()SCN.goto("sequence")end),
|
||||
draw= newButton(150, 80, 220,80, C.white, 35,function()SCN.swapTo("draw")end),
|
||||
back= newButton(1200, 640,120,120,C.white, 35,BACK),
|
||||
},
|
||||
sequence={
|
||||
Z= newButton(150, 440,90, 90,C.white, 50,SEQpush(1)),
|
||||
S= newButton(250, 440,90, 90,C.white, 50,SEQpush(2)),
|
||||
J= newButton(350, 440,90, 90,C.white, 50,SEQpush(3)),
|
||||
L= newButton(450, 440,90, 90,C.white, 50,SEQpush(4)),
|
||||
T= newButton(550, 440,90, 90,C.white, 50,SEQpush(5)),
|
||||
O= newButton(650, 440,90, 90,C.white, 50,SEQpush(6)),
|
||||
I= newButton(750, 440,90, 90,C.white, 50,SEQpush(7)),
|
||||
|
||||
Z5= newButton(150, 540,90, 90,C.white, 50,SEQpush(8)),
|
||||
S5= newButton(250, 540,90, 90,C.white, 50,SEQpush(9)),
|
||||
P= newButton(350, 540,90, 90,C.white, 50,SEQpush(10)),
|
||||
Q= newButton(450, 540,90, 90,C.white, 50,SEQpush(11)),
|
||||
F= newButton(550, 540,90, 90,C.white, 50,SEQpush(12)),
|
||||
E= newButton(650, 540,90, 90,C.white, 50,SEQpush(13)),
|
||||
T5= newButton(750, 540,90, 90,C.white, 50,SEQpush(14)),
|
||||
U= newButton(850, 540,90, 90,C.white, 50,SEQpush(15)),
|
||||
V= newButton(950, 540,90, 90,C.white, 50,SEQpush(16)),
|
||||
W= newButton(150, 640,90, 90,C.white, 50,SEQpush(17)),
|
||||
X= newButton(250, 640,90, 90,C.white, 50,SEQpush(18)),
|
||||
J5= newButton(350, 640,90, 90,C.white, 50,SEQpush(19)),
|
||||
L5= newButton(450, 640,90, 90,C.white, 50,SEQpush(20)),
|
||||
R= newButton(550, 640,90, 90,C.white, 50,SEQpush(21)),
|
||||
Y= newButton(650, 640,90, 90,C.white, 50,SEQpush(22)),
|
||||
N= newButton(750, 640,90, 90,C.white, 50,SEQpush(23)),
|
||||
H= newButton(850, 640,90, 90,C.white, 50,SEQpush(24)),
|
||||
I5= newButton(950, 640,90, 90,C.white, 50,SEQpush(25)),
|
||||
|
||||
left= newButton(850, 440,90, 90,C.green, 55,pressKey("left")),
|
||||
right= newButton(950, 440,90, 90,C.green, 55,pressKey("right")),
|
||||
backsp= newButton(1050, 440,90, 90,C.red, 50,pressKey("backspace")),
|
||||
reset= newButton(1050, 540,90, 90,C.red, 50,pressKey("delete")),
|
||||
back= newButton(1200, 640,120,120,C.white, 35,BACK),
|
||||
},
|
||||
draw={
|
||||
b1= newButton(500+65*1, 150,58,58,C.red, 30,setPen(1)),--B1
|
||||
@@ -152,6 +191,7 @@ local Widgets={
|
||||
demo= newSwitch(755, 640,30,function()return sceneTemp.demo end,function()sceneTemp.demo=not sceneTemp.demo end),
|
||||
copy= newButton(920, 640,120,120,C.lightRed, 35,copyBoard),
|
||||
paste= newButton(1060, 640,120,120,C.lightBlue, 35,pasteBoard),
|
||||
custom= newButton(110, 80, 140,80, C.white, 35,function()SCN.goto("custom")end),
|
||||
back= newButton(1200, 640,120,120,C.white, 35,BACK),
|
||||
},
|
||||
play={
|
||||
@@ -160,28 +200,27 @@ local Widgets={
|
||||
pause={
|
||||
resume= newButton(640,290,240,100,C.white,30,function()resumeGame()end),
|
||||
restart=newButton(640,445,240,100,C.white,33,function()
|
||||
TASK.clear("play")
|
||||
TASK.removeTask_code(TICK.autoPause)
|
||||
mergeStat(stat,players[1].stat)
|
||||
resetGameData()
|
||||
SCN.swapTo("play","none")
|
||||
end),
|
||||
setting=newButton(1120,70,240,90,C.lightBlue,35,function()
|
||||
SCN.push()SCN.swapTo("setting_sound")
|
||||
SCN.goto("setting_sound")
|
||||
end),
|
||||
quit= newButton(640,600,240,100,C.white,35,BACK),
|
||||
},
|
||||
setting_game={
|
||||
graphic=newButton(200,80,240,80,C.lightCyan,35,function()SCN.swapTo("setting_video")end, nil,"sound"),
|
||||
sound= newButton(1080,80,240,80,C.lightCyan,35,function()SCN.swapTo("setting_sound")end, nil,"ctrl"),
|
||||
ctrl= newButton(290,220,320,80,C.lightYellow,35,function()SCN.push()SCN.swapTo("setting_control")end, nil,"key"),
|
||||
key= newButton(640,220,320,80,C.lightGreen,35,function()SCN.push()SCN.swapTo("setting_key")end, nil,"touch"),
|
||||
touch= newButton(990,220,320,80,C.lightBlue,35,function()SCN.push()SCN.swapTo("setting_touch")end, nil,"reTime"),
|
||||
ctrl= newButton(290,220,320,80,C.lightYellow,35,function()SCN.goto("setting_control")end, nil,"key"),
|
||||
key= newButton(640,220,320,80,C.lightGreen,35,function()SCN.goto("setting_key")end, nil,"touch"),
|
||||
touch= newButton(990,220,320,80,C.lightBlue,35,function()SCN.goto("setting_touch")end, nil,"reTime"),
|
||||
reTime= newSlider(350,340,300,10,30,nil, SETval("reTime"), SETsto("reTime"), nil,"maxNext"),
|
||||
maxNext=newSlider(350,440,300,6,30,nil, SETval("maxNext"), SETsto("maxNext"), nil,"autoPause"),
|
||||
autoPause=newSwitch(350,540,20, SETval("autoPause"), SETrev("autoPause"), nil,"layout"),
|
||||
layout= newButton(590,540,140,70,C.white,35,function()
|
||||
SCN.push()
|
||||
SCN.swapTo("setting_skin")
|
||||
SCN.goto("setting_skin")
|
||||
end,nil,"quickR"),
|
||||
quickR= newSwitch(1050,340,35, SETval("quickR"), SETrev("quickR"), nil,"swap"),
|
||||
swap= newSwitch(1050,440,19, SETval("swap"), SETrev("swap"), nil,"fine"),
|
||||
@@ -308,8 +347,7 @@ local Widgets={
|
||||
sceneTemp.snap=sceneTemp.snap%6+1
|
||||
end),
|
||||
option= newButton(520,180,170,80,C.white,40,function()
|
||||
SCN.push()
|
||||
SCN.swapTo("setting_touchSwitch")
|
||||
SCN.goto("setting_touchSwitch")
|
||||
end),
|
||||
back= newButton(760,180,170,80,C.white,40,BACK),
|
||||
size= newSlider(450,265,460,14,40,nil,function()
|
||||
@@ -351,8 +389,7 @@ local Widgets={
|
||||
vib= newSlider(800,460,180,2,40,function()VIB(setting.VKVIB)end,SETval("VKVIB"),SETsto("VKVIB")),
|
||||
icon= newSwitch(850,300, 40,SETval("VKIcon"),SETrev("VKIcon")),
|
||||
tkset= newButton(1120,420,240,80,C.white,32,function()
|
||||
SCN.push()
|
||||
SCN.swapTo("setting_trackSetting")
|
||||
SCN.goto("setting_trackSetting")
|
||||
end,function()return not setting.VKTrack end),
|
||||
alpha= newSlider(840,540,400,10,40,nil,SETval("VKAlpha"),SETsto("VKAlpha")),
|
||||
back= newButton(1120,620,200,80,C.white,45,BACK),
|
||||
@@ -371,8 +408,8 @@ local Widgets={
|
||||
back= newButton(640,600,200,80,C.white,40,BACK,nil,"chi"),
|
||||
},
|
||||
help={
|
||||
staff= newButton(980,500,150,80,C.white,32,function()SCN.push()SCN.swapTo("staff")end,nil,"his"),
|
||||
his= newButton(1160,500,150,80,C.white,32,function()SCN.push()SCN.swapTo("history")end,nil,"qq"),
|
||||
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"),
|
||||
qq= newButton(980,600,150,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"),
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user