Compare commits
16 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d46d111900 | ||
|
|
87d6e0b501 | ||
|
|
45430a6a4a | ||
|
|
7f8a10327b | ||
|
|
bebe4b96a3 | ||
|
|
c1fd22f0b4 | ||
|
|
0f204e8659 | ||
|
|
9529597a0d | ||
|
|
392ec9abab | ||
|
|
d0c7e14f74 | ||
|
|
3cd86472f8 | ||
|
|
1e6e3d0d50 | ||
|
|
ed89685925 | ||
|
|
971dce6a66 | ||
|
|
5de78e924d | ||
|
|
de0de3a771 |
@@ -25,6 +25,7 @@ local Timer=love.timer.getTime
|
||||
local int,rnd,max,min=math.floor,math.random,math.max,math.min
|
||||
local abs=math.abs
|
||||
local ins,rem=table.insert,table.remove
|
||||
local byte=string.byte
|
||||
|
||||
local scr=scr
|
||||
local xOy=love.math.newTransform()
|
||||
@@ -127,6 +128,75 @@ local touchDown,touchUp,touchMove={},{},{}
|
||||
local keyDown,keyUp={},{}
|
||||
local gamepadDown,gamepadUp={},{}
|
||||
|
||||
function keyDown.calculator(k)
|
||||
local S=sceneTemp
|
||||
if byte(k)>=48 and byte(k)<=57 then
|
||||
if S.sym=="="then
|
||||
S.val=tonumber(k)
|
||||
S.sym=false
|
||||
elseif S.sym then
|
||||
if not S.reg then
|
||||
S.reg=S.val
|
||||
S.val=tonumber(k)
|
||||
elseif S.val<1e13 then
|
||||
S.val=S.val*10+tonumber(k)
|
||||
end
|
||||
else
|
||||
if S.val<1e13 then
|
||||
S.val=S.val*10+tonumber(k)
|
||||
end
|
||||
end
|
||||
elseif k=="backspace"then
|
||||
if S.val>0 then
|
||||
S.val=int(S.val/10)
|
||||
end
|
||||
elseif k=="+"or k=="="and kb.isDown("rshift","lshift")then
|
||||
S.sym="+"
|
||||
elseif k=="-"then
|
||||
S.sym="-"
|
||||
elseif k=="*"or k=="8"and kb.isDown("rshift","lshift")then
|
||||
S.sym="*"
|
||||
elseif k=="/"then
|
||||
S.sym="/"
|
||||
elseif k=="return"then
|
||||
if S.val then
|
||||
if S.sym and S.reg then
|
||||
S.val=
|
||||
S.sym=="+"and S.reg+S.val or
|
||||
S.sym=="-"and S.reg-S.val or
|
||||
S.sym=="*"and S.reg*S.val or
|
||||
S.sym=="/"and S.reg/S.val or
|
||||
-1
|
||||
end
|
||||
S.sym="="
|
||||
S.reg=false
|
||||
if S.val==626 then
|
||||
S.pass=true
|
||||
elseif S.val==196022 then
|
||||
marking=nil
|
||||
TEXT.show("\68\69\86\58\87\97\116\101\114\109\97\114\107\32\82\101\109\111\118\101\100",640,360,60,"stretch",.6)
|
||||
SFX.play("clear")
|
||||
elseif S.val==72943816 then
|
||||
for name,M in next,Modes do
|
||||
if not modeRanks[name]then
|
||||
modeRanks[name]=M.score and 0 or 6
|
||||
end
|
||||
end
|
||||
FILE.saveUnlock()
|
||||
TEXT.show("\68\69\86\58\85\78\76\79\67\75\65\76\76",640,360,60,"stretch",.6)
|
||||
SFX.play("clear_2")
|
||||
elseif S.val==137926261379 then
|
||||
SCN.goto("debug")
|
||||
end
|
||||
end
|
||||
elseif k=="space"then
|
||||
if S.pass then
|
||||
SCN.goto("load")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
function keyDown.load(k)
|
||||
if k=="a"then
|
||||
sceneTemp.skip=true
|
||||
@@ -738,34 +808,6 @@ function gamepadUp.play(key)
|
||||
end
|
||||
end
|
||||
|
||||
function keyDown.staff(key,RESET)
|
||||
if key=="escape"then
|
||||
SCN.back()
|
||||
elseif key=="\122"then
|
||||
if RESET or kb.isDown("\109")and kb.isDown("\114")then
|
||||
SCN.goto("debug")
|
||||
end
|
||||
end
|
||||
end
|
||||
function touchDown.staff(id,x,y)
|
||||
local pw=sceneTemp.pw
|
||||
local t=pw%4
|
||||
if
|
||||
t==0 and x<640 and y<360 or
|
||||
t==1 and x>640 and y<360 or
|
||||
t==2 and x<640 and y>360 or
|
||||
t==3 and x>640 and y>360
|
||||
then
|
||||
pw=pw+1
|
||||
if pw==8 then
|
||||
SCN.goto("debug")
|
||||
end
|
||||
else
|
||||
pw=x<640 and y<360==1 and 1 or 0
|
||||
end
|
||||
sceneTemp.pw=pw
|
||||
end
|
||||
|
||||
function wheelMoved.history(x,y)
|
||||
wheelScroll(y)
|
||||
end
|
||||
@@ -1050,7 +1092,7 @@ function love.run()
|
||||
local FCT=0--Framedraw counter
|
||||
|
||||
love.resize(gc.getWidth(),gc.getHeight())
|
||||
SCN.init("load")--Scene Launch
|
||||
SCN.init(setting.lock and "calculator"or"load")--Scene Launch
|
||||
marking=true
|
||||
|
||||
return function()
|
||||
@@ -1152,7 +1194,7 @@ function love.run()
|
||||
end
|
||||
|
||||
--Fresh power info.
|
||||
if Timer()-lastFreshPow>2 and setting.powerInfo and SCN.cur~="load"then
|
||||
if Timer()-lastFreshPow>2 and setting.powerInfo and loadingFinished then
|
||||
updatePowerInfo()
|
||||
lastFreshPow=Timer()
|
||||
_=gc.getWidth()
|
||||
|
||||
@@ -186,6 +186,17 @@ local langList={
|
||||
support="支持作者",
|
||||
group="官方QQ群(如果没有被暗改的话就是这个):1080457319",
|
||||
WidgetText={
|
||||
calculator={
|
||||
_1="1",_2="2",_3="3",
|
||||
_4="4",_5="5",_6="6",
|
||||
_7="7",_8="8",_9="9",
|
||||
_0="0",["<"]="<",["="]="=",
|
||||
["+"]="+",
|
||||
["-"]="-",
|
||||
["*"]="*",
|
||||
["/"]="/",
|
||||
play="开始",
|
||||
},
|
||||
main={
|
||||
play="开始",
|
||||
setting="设置",
|
||||
@@ -258,15 +269,15 @@ local langList={
|
||||
graphic="←画面设置",
|
||||
sound="声音设置→",
|
||||
ctrl="控制设置",
|
||||
reTime="开局等待时间",
|
||||
maxNext="最大预览数量",
|
||||
autoPause="自动暂停",
|
||||
layout="外观",
|
||||
key="键位设置",
|
||||
touch="触屏设置",
|
||||
quickR="快速重新开始",
|
||||
reTime="开局等待时间",
|
||||
maxNext="最大预览数量",
|
||||
layout="外观",
|
||||
autoPause="失去焦点自动暂停",
|
||||
swap="组合键切换攻击模式",
|
||||
fine="极简操作提示音",
|
||||
lock="软件锁(密码626)",
|
||||
back="返回",
|
||||
},
|
||||
setting_video={
|
||||
@@ -376,8 +387,6 @@ local langList={
|
||||
back="返回",
|
||||
},
|
||||
debug={
|
||||
killWTM="关闭水印",
|
||||
unlock="解锁全模式",
|
||||
reset="重置?",
|
||||
reset1="重置解锁/等级",
|
||||
reset2="重置统计",
|
||||
@@ -646,6 +655,17 @@ local langList={
|
||||
support="支持作者",
|
||||
group="官方QQ群(如果没有被暗改的话就是这个):1080457319",
|
||||
WidgetText={
|
||||
calculator={
|
||||
_1="1",_2="2",_3="3",
|
||||
_4="4",_5="5",_6="6",
|
||||
_7="7",_8="8",_9="9",
|
||||
_0="0",["<"]="<",["="]="=",
|
||||
["+"]="+",
|
||||
["-"]="-",
|
||||
["*"]="*",
|
||||
["/"]="/",
|
||||
play="开始",
|
||||
},
|
||||
main={
|
||||
play="开始",
|
||||
setting="设置",
|
||||
@@ -718,15 +738,15 @@ local langList={
|
||||
graphic="←画面设置",
|
||||
sound="声音设置→",
|
||||
ctrl="控制设置",
|
||||
reTime="开局等待时间",
|
||||
maxNext="最大预览数量",
|
||||
autoPause="自动暂停",
|
||||
layout="外观",
|
||||
key="键位设置",
|
||||
touch="触屏设置",
|
||||
quickR="快速重新开始",
|
||||
reTime="开局等待时间",
|
||||
maxNext="最大预览数量",
|
||||
layout="外观",
|
||||
autoPause="失去焦点自动暂停",
|
||||
swap="组合键切换攻击模式",
|
||||
fine="极简操作提示音",
|
||||
lock="软件锁(密码626)",
|
||||
back="返回",
|
||||
},
|
||||
setting_video={
|
||||
@@ -836,8 +856,6 @@ local langList={
|
||||
back="返回",
|
||||
},
|
||||
debug={
|
||||
killWTM="关闭水印",
|
||||
unlock="解锁全模式",
|
||||
reset="重置?",
|
||||
reset1="重置解锁/等级",
|
||||
reset2="重置统计",
|
||||
@@ -1095,6 +1113,17 @@ local langList={
|
||||
support="Support author",
|
||||
group="Official QQ Group(if not hacked):1080457319",
|
||||
WidgetText={
|
||||
calculator={
|
||||
_1="1",_2="2",_3="3",
|
||||
_4="4",_5="5",_6="6",
|
||||
_7="7",_8="8",_9="9",
|
||||
_0="0",["<"]="<",["="]="=",
|
||||
["+"]="+",
|
||||
["-"]="-",
|
||||
["*"]="*",
|
||||
["/"]="/",
|
||||
play="Play",
|
||||
},
|
||||
main={
|
||||
play="Play",
|
||||
setting="Settings",
|
||||
@@ -1167,15 +1196,15 @@ local langList={
|
||||
graphic="←Video",
|
||||
sound="Sound→",
|
||||
ctrl="Control settings",
|
||||
reTime="Start Delay",
|
||||
maxNext="Next Queue Length",
|
||||
autoPause="Auto pause",
|
||||
layout="Layout",
|
||||
key="Key Mappings",
|
||||
touch="Touch Settings",
|
||||
quickR="Quick Retry",
|
||||
reTime="Start Delay",
|
||||
maxNext="Next Queue Length",
|
||||
layout="Layout",
|
||||
autoPause="Pause when lose focus",
|
||||
swap="Key Combination (Change Atk. Mode)",
|
||||
fine="Finesse Error Sound",
|
||||
lock="Game Lock(pw=626)",
|
||||
back="Back",
|
||||
},
|
||||
setting_video={
|
||||
@@ -1285,8 +1314,6 @@ local langList={
|
||||
back="Back",
|
||||
},
|
||||
debug={
|
||||
killWTM="Kill watermark",
|
||||
unlock="Unlock all",
|
||||
reset="Reset?",
|
||||
reset1="Reset rank",
|
||||
reset2="Reset data",
|
||||
@@ -1540,6 +1567,17 @@ local langList={
|
||||
support="Support author",
|
||||
group="Official QQ Group(if not hacked):1080457319",
|
||||
WidgetText={
|
||||
calculator={
|
||||
_1="1",_2="2",_3="3",
|
||||
_4="4",_5="5",_6="6",
|
||||
_7="7",_8="8",_9="9",
|
||||
_0="0",["<"]="<",["="]="=",
|
||||
["+"]="+",
|
||||
["-"]="-",
|
||||
["*"]="*",
|
||||
["/"]="/",
|
||||
play="!!!",
|
||||
},
|
||||
main={
|
||||
play="!!!",
|
||||
setting="_?_",
|
||||
@@ -1612,15 +1650,15 @@ local langList={
|
||||
graphic="←Video",
|
||||
sound="Sound→",
|
||||
ctrl="=?=",
|
||||
reTime="3-2-1",
|
||||
maxNext="=123",
|
||||
autoPause="A||",
|
||||
layout="=-=-=",
|
||||
key="=?",
|
||||
touch="_?",
|
||||
quickR="R!",
|
||||
reTime="3-2-1",
|
||||
maxNext="=123",
|
||||
layout="=-=-=",
|
||||
autoPause="A||",
|
||||
swap="=+=+=",
|
||||
fine="!#!X #!#",
|
||||
lock="?XX(=626)",
|
||||
back="X",
|
||||
},
|
||||
setting_video={
|
||||
@@ -1730,8 +1768,6 @@ local langList={
|
||||
back="X",
|
||||
},
|
||||
debug={
|
||||
killWTM="Kill watermark",
|
||||
unlock="Unlock all",
|
||||
reset="Reset?",
|
||||
reset1="Reset rank",
|
||||
reset2="Reset data",
|
||||
@@ -2003,6 +2039,17 @@ local langList={
|
||||
support="支持作者",
|
||||
group="官方QQ群(如果没有被暗改的话就是这个):1080457319",
|
||||
WidgetText={
|
||||
calculator={
|
||||
_1="1",_2="2",_3="3",
|
||||
_4="4",_5="5",_6="6",
|
||||
_7="7",_8="8",_9="9",
|
||||
_0="0",["<"]="<",["="]="=",
|
||||
["+"]="+",
|
||||
["-"]="-",
|
||||
["*"]="*",
|
||||
["/"]="/",
|
||||
play="开始",
|
||||
},
|
||||
main={
|
||||
play="开始",
|
||||
setting="设置",
|
||||
@@ -2075,15 +2122,15 @@ local langList={
|
||||
graphic="←改画面",
|
||||
sound="改声音→",
|
||||
ctrl="改控制",
|
||||
reTime="开局等待时间",
|
||||
maxNext="最大预览数量",
|
||||
autoPause="自动暂停",
|
||||
layout="外观",
|
||||
key="改键位",
|
||||
touch="改触屏",
|
||||
quickR="快速重新开始",
|
||||
reTime="开局等待时间",
|
||||
maxNext="最大预览数量",
|
||||
layout="外观",
|
||||
autoPause="失去焦点自动暂停",
|
||||
swap="组合键切换攻击模式",
|
||||
fine="极简操作提示音",
|
||||
lock="家长锁(密码626)",
|
||||
back="返回",
|
||||
},
|
||||
setting_video={
|
||||
@@ -2193,8 +2240,6 @@ local langList={
|
||||
back="返回",
|
||||
},
|
||||
debug={
|
||||
killWTM="关水印",
|
||||
unlock="解锁全模式",
|
||||
reset="重置?",
|
||||
reset1="重置解锁/等级",
|
||||
reset2="重置统计",
|
||||
@@ -2356,7 +2401,6 @@ function LANG.set(l)
|
||||
end
|
||||
end
|
||||
for _,s in next,drawableTextLoad do
|
||||
print(s)
|
||||
drawableText[s]:set(text[s])
|
||||
end
|
||||
collectgarbage()
|
||||
|
||||
@@ -94,6 +94,16 @@ end
|
||||
|
||||
local Pnt={}
|
||||
|
||||
function Pnt.calculator()
|
||||
local S=sceneTemp
|
||||
gc.setLineWidth(4)
|
||||
gc.rectangle("line",100,80,650,150)
|
||||
setFont(45)
|
||||
if S.reg then gc.printf(S.reg,0,100,720,"right")end
|
||||
if S.val then gc.printf(S.val,0,150,720,"right")end
|
||||
setFont(50)
|
||||
if S.sym then gc.print(S.sym,126,150)end
|
||||
end
|
||||
function Pnt.load()
|
||||
local S=sceneTemp
|
||||
gc.setLineWidth(4)
|
||||
@@ -381,7 +391,6 @@ function Pnt.sequence()
|
||||
gc.draw(drawableText.question,980,470)
|
||||
end
|
||||
end
|
||||
|
||||
function Pnt.draw()
|
||||
local sx,sy=sceneTemp.x,sceneTemp.y
|
||||
gc.translate(200,60)
|
||||
@@ -531,10 +540,10 @@ function Pnt.play()
|
||||
end
|
||||
gc.pop()
|
||||
end
|
||||
|
||||
local hexList={1,0,.5,1.732*.5,-.5,1.732*.5}for i=1,6 do hexList[i]=hexList[i]*150 end
|
||||
local textPos={90,131,-90,131,-200,-25,-90,-181,90,-181,200,-25}
|
||||
local dataPos={90,143,-90,143,-200,-13,-90,-169,90,-169,200,-13}
|
||||
|
||||
function Pnt.pause()
|
||||
local S=sceneTemp
|
||||
local T=S.timer*.02
|
||||
@@ -625,7 +634,7 @@ end
|
||||
function Pnt.setting_game()
|
||||
gc.setColor(1,1,1)
|
||||
mText(drawableText.setting_game,640,15)
|
||||
gc.draw(blockSkin[int(Timer()*2)%11+1],720,540,Timer()%6.28319,2,nil,15,15)
|
||||
gc.draw(blockSkin[int(Timer()*2)%11+1],590,540,Timer()%6.28319,2,nil,15,15)
|
||||
end
|
||||
function Pnt.setting_video()
|
||||
gc.setColor(1,1,1)
|
||||
@@ -646,6 +655,7 @@ function Pnt.setting_sound()
|
||||
gc.draw(IMG.miyaF4,129,98+3*sin(t*.7))
|
||||
gc.translate(-x,-y)
|
||||
end
|
||||
|
||||
local function timeConv(t)
|
||||
return t.."F "..int(t*16.67).."ms"
|
||||
end
|
||||
|
||||
@@ -7,6 +7,14 @@ local scr=scr
|
||||
|
||||
local sceneInit={}
|
||||
sceneInit.quit=love.event.quit
|
||||
function sceneInit.calculator()
|
||||
sceneTemp={
|
||||
reg=false,
|
||||
val=0,
|
||||
sym=false,
|
||||
pass=false,
|
||||
}
|
||||
end
|
||||
function sceneInit.load()
|
||||
sceneTemp={
|
||||
phase=1,--Loading stage
|
||||
@@ -221,7 +229,6 @@ function sceneInit.help()
|
||||
end
|
||||
function sceneInit.staff()
|
||||
sceneTemp={
|
||||
pw=0,
|
||||
time=0,
|
||||
v=1,
|
||||
}
|
||||
@@ -337,8 +344,6 @@ function SCN.swapUpdate()
|
||||
S.time=S.time-1
|
||||
if S.time==S.mid then
|
||||
SCN.init(S.tar,SCN.cur)
|
||||
SCN.cur=S.tar
|
||||
WIDGET.set(Widgets[S.tar])
|
||||
collectgarbage()
|
||||
--Scene swapped this moment
|
||||
end
|
||||
@@ -348,6 +353,8 @@ function SCN.swapUpdate()
|
||||
end
|
||||
function SCN.init(s,org)
|
||||
if sceneInit[s]then sceneInit[s](org)end
|
||||
SCN.cur=s
|
||||
WIDGET.set(Widgets[s])
|
||||
end
|
||||
function SCN.push(tar,style)
|
||||
if not SCN.swapping then
|
||||
|
||||
@@ -52,6 +52,7 @@ function Tmr.load()
|
||||
SCN.swapTo("intro","none")
|
||||
end
|
||||
end
|
||||
loadingFinished=true
|
||||
return
|
||||
end
|
||||
S.cur=S.cur+1
|
||||
|
||||
@@ -91,13 +91,13 @@ function VOC.update()
|
||||
end
|
||||
elseif Q.s==1 then--Waiting load source
|
||||
Q[1]=getVoice(Q[1])
|
||||
Q[1]:setVolume(setting.voc*.1)
|
||||
Q[1]:setVolume(setting.voc*.01)
|
||||
Q[1]:play()
|
||||
Q.s=Q[2]and 2 or 4
|
||||
elseif Q.s==2 then--Playing 1,ready 2
|
||||
if Q[1]:getDuration()-Q[1]:tell()<.08 then
|
||||
Q[2]=getVoice(Q[2])
|
||||
Q[2]:setVolume(setting.voc*.1)
|
||||
Q[2]:setVolume(setting.voc*.01)
|
||||
Q[2]:play()
|
||||
Q.s=3
|
||||
end
|
||||
@@ -121,7 +121,7 @@ function VOC.play(s,chn)
|
||||
if chn then
|
||||
local L=voiceQueue[chn]
|
||||
local _=VOC.list[s]
|
||||
if not _ then DBP("no VOC called:"..s)return end
|
||||
if not _ then return end
|
||||
L[#L+1]=_[rnd(#_)]
|
||||
L.s=1
|
||||
--Add to queue[chn]
|
||||
|
||||
@@ -395,7 +395,6 @@ function WIDGET.press(x,y)
|
||||
W.code()
|
||||
W:FX()
|
||||
SFX.play("button")
|
||||
VOC.play("nya")
|
||||
elseif W.type=="key"then
|
||||
W.code()
|
||||
SFX.play("lock")
|
||||
|
||||
@@ -98,6 +98,25 @@ newSlider=WIDGET.newSlider
|
||||
--All widgets
|
||||
local Widgets={
|
||||
load={},intro={},quit={},
|
||||
calculator={
|
||||
newKey({name="_1", x=300,y=300,w=90,h=90, color="white", font=50,code=pressKey("1")}),
|
||||
newKey({name="_2", x=400,y=300,w=90,h=90, color="white", font=50,code=pressKey("2")}),
|
||||
newKey({name="_3", x=500,y=300,w=90,h=90, color="white", font=50,code=pressKey("3")}),
|
||||
newKey({name="_4", x=300,y=400,w=90,h=90, color="white", font=50,code=pressKey("4")}),
|
||||
newKey({name="_5", x=400,y=400,w=90,h=90, color="white", font=50,code=pressKey("5")}),
|
||||
newKey({name="_6", x=500,y=400,w=90,h=90, color="white", font=50,code=pressKey("6")}),
|
||||
newKey({name="_7", x=300,y=500,w=90,h=90, color="white", font=50,code=pressKey("7")}),
|
||||
newKey({name="_8", x=400,y=500,w=90,h=90, color="white", font=50,code=pressKey("8")}),
|
||||
newKey({name="_9", x=500,y=500,w=90,h=90, color="white", font=50,code=pressKey("9")}),
|
||||
newKey({name="_0", x=300,y=600,w=90,h=90, color="white", font=50,code=pressKey("0")}),
|
||||
newKey({name="<", x=400,y=600,w=90,h=90, color="lRed", font=50,code=pressKey("backspace")}),
|
||||
newKey({name="=", x=500,y=600,w=90,h=90, color="lYellow",font=50,code=pressKey("return")}),
|
||||
newKey({name="+", x=600,y=300,w=90,h=90, color="lBlue", font=50,code=pressKey("+")}),
|
||||
newKey({name="-", x=600,y=400,w=90,h=90, color="lBlue", font=50,code=pressKey("-")}),
|
||||
newKey({name="*", x=600,y=500,w=90,h=90, color="lBlue", font=50,code=pressKey("*")}),
|
||||
newKey({name="/", x=600,y=600,w=90,h=90, color="lBlue", font=50,code=pressKey("/")}),
|
||||
newButton({name="play", x=800,y=600,w=180,h=90, color="lGreen", font=40,code=pressKey("space"),hide=function()return not sceneTemp.pass end}),
|
||||
},
|
||||
main={
|
||||
newButton({name="play", x=150,y=280,w=200,h=160,color="lRed", font=55,code=function()SCN.goto("mode")end}),
|
||||
newButton({name="setting", x=370,y=280,w=200,h=160,color="lBlue", font=45,code=function()SCN.goto("setting_game")end}),
|
||||
@@ -224,13 +243,13 @@ local Widgets={
|
||||
newButton({name="touch", x=990, y=220, w=320,h=80, color="lBlue", font=35,code=function()SCN.goto("setting_touch")end}),
|
||||
newSlider({name="reTime", x=350, y=340, w=300,unit=10, font=30,disp=SETval("reTime"), code=SETsto("reTime")}),
|
||||
newSlider({name="maxNext", x=350, y=440, w=300,unit=6, font=30,disp=SETval("maxNext"), code=SETsto("maxNext")}),
|
||||
newSwitch({name="autoPause",x=350, y=540, font=20,disp=SETval("autoPause"),code=SETrev("autoPause")}),
|
||||
newButton({name="layout", x=590, y=540, w=140,h=70,color="white", font=35,code=function()
|
||||
newButton({name="layout", x=460, y=540, w=140,h=70,color="white", font=35,code=function()
|
||||
SCN.goto("setting_skin")
|
||||
end}),
|
||||
newSwitch({name="quickR", x=1050, y=320, font=35,disp=SETval("quickR"), code=SETrev("quickR")}),
|
||||
newSwitch({name="swap", x=1050, y=400, font=20,disp=SETval("swap"), code=SETrev("swap")}),
|
||||
newSwitch({name="fine", x=1050, y=480, font=20,disp=SETval("fine"), code=SETrev("fine")}),
|
||||
newSwitch({name="autoPause",x=1080, y=320, font=20,disp=SETval("autoPause"), code=SETrev("autoPause")}),
|
||||
newSwitch({name="swap", x=1080, y=380, font=20,disp=SETval("swap"), code=SETrev("swap")}),
|
||||
newSwitch({name="fine", x=1080, y=440, font=20,disp=SETval("fine"), code=SETrev("fine")}),
|
||||
newSwitch({name="lock", x=1080, y=500, font=20,disp=SETval("lock"), code=SETrev("lock")}),
|
||||
newButton({name="back", x=1140, y=650, w=200,h=80,color="white", font=40,code=BACK}),
|
||||
},
|
||||
setting_video={
|
||||
@@ -278,10 +297,10 @@ local Widgets={
|
||||
newButton({name="graphic", x=1080, y=80,w=240,h=80,color="lCyan",font=35,code=function()SCN.swapTo("setting_video","swipe")end}),
|
||||
newSlider({name="sfx", x=180, y=200,w=400,unit=100,noUnit=true,font=35,change=function()SFX.play("blip_1")end, disp=SETval("sfx"), code=SETsto("sfx")}),
|
||||
newSlider({name="stereo", x=180, y=500,w=400,unit=10, font=35,change=function()SFX.play("move",1,-1)SFX.play("lock",1,1)end, disp=SETval("stereo"), code=SETsto("stereo"),hide=function()return setting.sfx==0 end}),
|
||||
newSlider({name="spawn", x=180, y=300,w=400,unit=100,noUnit=true,font=30,change=function()SFX.fplay("spawn_1",setting.spawn)end, disp=SETval("spawn"), code=SETsto("spawn")}),
|
||||
newSlider({name="spawn", x=180, y=300,w=400,unit=100,noUnit=true,font=30,change=function()SFX.fplay("spawn_1",setting.spawn)end, disp=SETval("spawn"), code=SETsto("spawn")}),
|
||||
newSlider({name="bgm", x=180, y=400,w=400,unit=100,noUnit=true,font=35,change=function()BGM.freshVolume()end, disp=SETval("bgm"), code=SETsto("bgm")}),
|
||||
newSlider({name="vib", x=750, y=200,w=400,unit=5, font=28,change=function()VIB(2)end, disp=SETval("vib"), code=SETsto("vib")}),
|
||||
newSlider({name="voc", x=750, y=300,w=400,unit=10,font=32,change=function()VOC.play("nya")end, disp=SETval("voc"), code=SETsto("voc")}),
|
||||
newSlider({name="vib", x=750, y=200,w=400,unit=5, font=28,change=function()VIB(2)end, disp=SETval("vib"), code=SETsto("vib")}),
|
||||
newSlider({name="voc", x=750, y=300,w=400,unit=100,noUnit=true,font=32,change=function()VOC.play("nya")end, disp=SETval("voc"), code=SETsto("voc")}),
|
||||
newButton({name="back", x=1140, y=650,w=200,h=80,color="white",font=40,code=BACK}),
|
||||
},
|
||||
setting_control={
|
||||
@@ -458,27 +477,7 @@ local Widgets={
|
||||
newButton({name="back", x=640, y=620,w=200,h=80,color="white",font=40,code=BACK}),
|
||||
},
|
||||
debug={
|
||||
newButton({name="killWTM", x=340,y=200,w=260,h=100,color="white",font=35,
|
||||
code=function()
|
||||
marking=nil
|
||||
TEXT.show("\68\69\86\58\87\97\116\101\114\109\97\114\107\32\82\101\109\111\118\101\100",640,360,60,"stretch",.6)
|
||||
SFX.play("clear")
|
||||
end,
|
||||
hide=function()
|
||||
return not marking
|
||||
end}),
|
||||
newButton({name="unlock", x=640,y=200,w=260,h=100,color="white",font=40,
|
||||
code=function()
|
||||
for name,M in next,Modes do
|
||||
if not modeRanks[name]then
|
||||
modeRanks[name]=M.score and 0 or 6
|
||||
end
|
||||
end
|
||||
FILE.saveUnlock()
|
||||
TEXT.show("\68\69\86\58\85\78\76\79\67\75\65\76\76",640,360,60,"stretch",.6)
|
||||
SFX.play("clear_2")
|
||||
end}),
|
||||
newButton({name="reset", x=940,y=200,w=260,h=100,color="yellow",font=40,
|
||||
newButton({name="reset", x=640,y=200,w=260,h=100,color="yellow",font=40,
|
||||
code=function()
|
||||
sceneTemp.reset=true
|
||||
end,
|
||||
|
||||
2
conf.lua
2
conf.lua
@@ -1,4 +1,4 @@
|
||||
gameVersion="Alpha V0.10.2"
|
||||
gameVersion="Alpha V0.10.3"
|
||||
function love.conf(t)
|
||||
t.identity="Techmino"--Saving folder
|
||||
t.version="11.1"
|
||||
|
||||
6
main.lua
6
main.lua
@@ -34,7 +34,7 @@ mapCam={
|
||||
zoomMethod=nil,
|
||||
zoomK=nil,
|
||||
}
|
||||
scr={x=0,y=0,w=0,h=0,rad=0,k=1}--wid,hei,radius,scale K
|
||||
scr={x=0,y=0,w=0,h=0,W=0,H=0,rad=0,k=1}--wid,hei,radius,scale K
|
||||
|
||||
customSel={1,22,1,1,7,3,1,1,8,4,1,1,1}
|
||||
preField={h=20}for i=1,20 do preField[i]={0,0,0,0,0,0,0,0,0,0}end
|
||||
@@ -121,12 +121,12 @@ end
|
||||
|
||||
--Update data file
|
||||
S=stat
|
||||
if S.version=="Alpha V0.9.1"or type(setting.spawn)~="number"then
|
||||
if type(setting.spawn)~="number"then
|
||||
setting.spawn=0
|
||||
end
|
||||
if S.version~=gameVersion then
|
||||
S.version=gameVersion
|
||||
TEXT.show(text.newBigVersion,640,200,30,"fly",.3)
|
||||
TEXT.show(text.newVersion,640,200,30,"fly",.3)
|
||||
newVersionLaunch=true
|
||||
|
||||
fs.remove("sprintPenta.dat")
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
local min=math.random,math.min
|
||||
local min=math.min
|
||||
local function check_c4w(P)
|
||||
for i=1,#P.clearedRow do
|
||||
P.field[#P.field+1]=freeRow.get(13)
|
||||
@@ -59,7 +59,7 @@ return{
|
||||
if L==100 then
|
||||
local T=P.stat.time
|
||||
return
|
||||
T<=36 and 5 or
|
||||
T<=40 and 5 or
|
||||
T<=60 and 4 or
|
||||
3
|
||||
else
|
||||
|
||||
@@ -18,8 +18,9 @@ return{
|
||||
},
|
||||
load=function()
|
||||
PLY.newPlayer(1,340,15)
|
||||
local P=players[1]
|
||||
for _=1,8 do
|
||||
players[1]:garbageRise(13,1,P:RND(10))
|
||||
P:garbageRise(13,1,P:RND(10))
|
||||
end
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
|
||||
@@ -3,12 +3,14 @@ setting={
|
||||
das=10,arr=2,
|
||||
sddas=0,sdarr=2,
|
||||
ihs=true,irs=true,ims=true,
|
||||
reTime=4,
|
||||
maxNext=6,
|
||||
autoPause=true,
|
||||
quickR=true,
|
||||
swap=true,
|
||||
|
||||
--System
|
||||
reTime=4,
|
||||
autoPause=true,
|
||||
fine=false,
|
||||
lock=false,
|
||||
lang=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},
|
||||
|
||||
@@ -263,11 +263,13 @@ function pauseGame()
|
||||
if not game.result then
|
||||
game.pauseCount=game.pauseCount+1
|
||||
end
|
||||
for i=1,#players do
|
||||
local l=players[i].keyPressing
|
||||
for j=1,#l do
|
||||
if l[j]then
|
||||
players[i]:releaseKey(j)
|
||||
if not game.replaying then
|
||||
for i=1,#players do
|
||||
local l=players[i].keyPressing
|
||||
for j=1,#l do
|
||||
if l[j]then
|
||||
players[i]:releaseKey(j)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -68,7 +68,7 @@ if setting.lang==1 or setting.lang==2 then
|
||||
"戴上耳机以获得最佳体验",
|
||||
"大满贯10连击消四全清!",
|
||||
"打好块没有捷径,多练",
|
||||
"车车人在此",
|
||||
"你可以长按R键重新开始游戏(也不是很长)",
|
||||
"茶娘 可爱!",
|
||||
"草(日本语)",
|
||||
"不要在上课时玩游戏!",
|
||||
@@ -143,6 +143,7 @@ elseif setting.lang==3 then
|
||||
"Hello world!",
|
||||
"Headphones for better experience",
|
||||
"Have you noticed what does \"rotating\" do to block?",
|
||||
"Hold R key to restart game",
|
||||
"Find out what's in the setting!",
|
||||
"Enjoy Tech. Rotation System!",
|
||||
"e^(pi*i/2)=i",
|
||||
@@ -196,31 +197,32 @@ elseif setting.lang==5 then
|
||||
local R=math.random()
|
||||
if R<.05 then
|
||||
local time={
|
||||
"大半夜的在这干啥呢?不睡觉是会猝死的",
|
||||
"大半夜的在这干啥呢?不睡觉是会猝死的",
|
||||
"现在打块你是认真的?",
|
||||
"现在打块你是认真的?",
|
||||
"早起是好的,但是你不应该打块",
|
||||
"早起是好的,但是你不应该打块",
|
||||
"早饭吃好了?",
|
||||
"早饭吃好了?",
|
||||
"九点多了,没自己的事情要做?",
|
||||
"十点多了,没自己的事情要做?",
|
||||
"十一点多了,午饭有的吃么",
|
||||
"十二点多了,午饭有的吃么",
|
||||
"累了累了,现在不想说你",
|
||||
"累了累了,现在不想说你",
|
||||
"累了累了,现在不想说你",
|
||||
"累了累了,现在不想说你",
|
||||
"累了累了,现在不想说你",
|
||||
"晚饭吃好了?",
|
||||
"晚饭吃好了?",
|
||||
"累了累了,现在不想说你",
|
||||
"累了累了,现在不想说你",
|
||||
"好睡了,作息健康活得久",
|
||||
"大半夜的在这干啥呢?不睡觉是会猝死的",
|
||||
--[[00]]"大半夜的在这干啥呢?不睡觉是会猝死的",
|
||||
--[[01]]"大半夜的在这干啥呢?不睡觉是会猝死的",
|
||||
--[[02]]"现在打块你是认真的?",
|
||||
--[[03]]"现在打块你是认真的?",
|
||||
--[[04]]"早起是好的,但是你不应该打块",
|
||||
--[[05]]"早起是好的,但是你不应该打块",
|
||||
--[[06]]"早饭吃好了?",
|
||||
--[[07]]"早饭吃好了?",
|
||||
--[[08]]"九点多了,没自己的事情要做?",
|
||||
--[[09]]"十点多了,没自己的事情要做?",
|
||||
--[[10]]"十一点多了,午饭有的吃么",
|
||||
--[[11]]"十二点多了,午饭有的吃么",
|
||||
--[[12]]"累了累了,现在不想说你",
|
||||
--[[13]]"累了累了,现在不想说你",
|
||||
--[[14]]"累了累了,现在不想说你",
|
||||
--[[15]]"累了累了,现在不想说你",
|
||||
--[[16]]"累了累了,现在不想说你",
|
||||
--[[17]]"晚饭吃好了?",
|
||||
--[[18]]"晚饭吃好了?",
|
||||
--[[19]]"累了累了,现在不想说你",
|
||||
--[[20]]"累了累了,现在不想说你",
|
||||
--[[21]]"好睡了,作息健康活得久",
|
||||
--[[22]]"好睡了,作息健康活得久",
|
||||
--[[23]]"大半夜的在这干啥呢?不睡觉是会猝死的",
|
||||
}
|
||||
return time[os.date("%H")]
|
||||
return time[tonumber(os.date("%H"))+1]
|
||||
elseif true or R<.1 then
|
||||
local int=math.floor
|
||||
L={
|
||||
@@ -260,6 +262,7 @@ elseif setting.lang==5 then
|
||||
"0202年了,还在玩这种小孩子玩的游戏?",
|
||||
"天天卖弱,你一定把把150apm吧?",
|
||||
"别会个c4w就以为自己多强,这是基本功罢了",
|
||||
"少玩点,多眨眼,到时候瞎了别怪我没提醒你",
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
@@ -5,13 +5,15 @@ local int,ceil,abs,rnd,max,min=math.floor,math.ceil,math.abs,math.random,math.ma
|
||||
local ins,rem=table.insert,table.remove
|
||||
local format=string.format
|
||||
local scr=scr--Screen camera
|
||||
local setFont=setFont
|
||||
--------------------------<GameData>--------------------------
|
||||
local gameEnv0={
|
||||
noFly=false,
|
||||
das=10,arr=2,
|
||||
sddas=2,sdarr=2,
|
||||
ihs=true,irs=true,ims=true,
|
||||
quickR=true,swap=true,
|
||||
swap=true,
|
||||
|
||||
ghost=true,center=true,
|
||||
smooth=false,grid=false,
|
||||
bagLine=false,
|
||||
@@ -688,9 +690,9 @@ local function Pdraw_norm(P)
|
||||
if P.lockDelay>=0 then
|
||||
gc.rectangle("fill",0,602,300*P.lockDelay/P.gameEnv.lock,6)--Lock delay indicator
|
||||
end
|
||||
_=10
|
||||
_=3
|
||||
for i=1,min(P.gameEnv.freshLimit-P.freshTime,15)do
|
||||
gc.circle("fill",_,615,5)
|
||||
gc.rectangle("fill",_,615,14,5)
|
||||
_=_+20
|
||||
end
|
||||
|
||||
@@ -1136,7 +1138,7 @@ function player.finesseError(P,rate)
|
||||
SFX.play("finesseError_long",.6)
|
||||
P:lose()
|
||||
elseif setting.fine then
|
||||
SFX.play("finesseError",.3)
|
||||
SFX.play("finesseError",.8)
|
||||
end
|
||||
elseif P.gameEnv.fineKill then
|
||||
P:lose()
|
||||
@@ -1197,9 +1199,11 @@ function player.garbageRise(P,color,amount,pos)
|
||||
P.field[1][pos]=0
|
||||
end
|
||||
P.fieldBeneath=P.fieldBeneath+amount*30
|
||||
P.curY=P.curY+amount
|
||||
if P.cur then
|
||||
P.curY=P.curY+amount
|
||||
P.imgY=P.imgY+amount
|
||||
end
|
||||
P.garbageBeneath=P.garbageBeneath+amount
|
||||
P.imgY=P.imgY+amount
|
||||
for i=1,#P.clearingRow do
|
||||
P.clearingRow[i]=P.clearingRow[i]+amount
|
||||
end
|
||||
@@ -2029,6 +2033,7 @@ end
|
||||
|
||||
--------------------------<Events>--------------------------
|
||||
local function gameOver()--Save record
|
||||
if game.replaying then return end
|
||||
FILE.saveData()
|
||||
local M=curMode
|
||||
local R=M.getRank
|
||||
@@ -2342,7 +2347,7 @@ function player.act.func(P)
|
||||
P.gameEnv.Fkey(P)
|
||||
end
|
||||
function player.act.restart(P)
|
||||
if P.gameEnv.quickR or game.frame<180 then
|
||||
if game.frame<240 or game.result then
|
||||
TASK.removeTask_code(TICK.autoPause)
|
||||
resetPartGameData()
|
||||
end
|
||||
@@ -2687,7 +2692,7 @@ function PLY.newDemoPlayer(id,x,y,size)
|
||||
noFly=false,
|
||||
das=10,arr=2,
|
||||
sddas=2,sdarr=2,
|
||||
quickR=true,swap=true,
|
||||
swap=true,
|
||||
ghost=setting.ghost,center=setting.center,
|
||||
smooth=setting.smooth,grid=setting.grid,
|
||||
text=setting.text,
|
||||
|
||||
@@ -56,7 +56,6 @@ Future outlook:
|
||||
mine sweeper
|
||||
tank battle
|
||||
new AI: task-Z
|
||||
self protection
|
||||
cool backgrounds
|
||||
'Encrypt'(compile to byte code)
|
||||
better drop FX
|
||||
@@ -70,11 +69,30 @@ Future outlook:
|
||||
more graphic FXs & 3D features & animations
|
||||
network game
|
||||
|
||||
0.10.3: 软件锁 APP Lock
|
||||
新内容:
|
||||
设置增加软件锁选项,打开游戏后进入伪装界面
|
||||
改动:
|
||||
剩余锁延重置次数指示器改为长方形
|
||||
debug界面改为重置界面,进入方法修改
|
||||
游戏设置页面布局更改
|
||||
语音音量条改为无刻度
|
||||
取消快速重开设置,游戏过程中长按重开,结束后开局一秒内点击重开
|
||||
修复:
|
||||
无尽挖掘报错
|
||||
极简错误提示声音太小
|
||||
修复回放也计入排行榜
|
||||
回放时暂停不打断玩家操作
|
||||
c4w练习的lunatic分数bug
|
||||
|
||||
0.10.2: 锁延修复 Lock Delay Fixed
|
||||
改动:
|
||||
锁延机制再修正
|
||||
"失败"字样改为"游戏结束"
|
||||
"失败"改为"游戏结束"
|
||||
修复:
|
||||
纠正部分rank文件转换错误
|
||||
模式文件使用玩家的随机器以正确回放
|
||||
游戏结束后马上暂停并解除还会自动暂停
|
||||
改设置后回放错误
|
||||
字库缺字
|
||||
|
||||
|
||||
Reference in New Issue
Block a user