Compare commits
34 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
963b57a49b | ||
|
|
9b57f55285 | ||
|
|
86266731cd | ||
|
|
78c0c7d18d | ||
|
|
be7f7fe17b | ||
|
|
b673892b7d | ||
|
|
7ab34480cd | ||
|
|
f46cdbec47 | ||
|
|
30f4073bc6 | ||
|
|
6bc0da712d | ||
|
|
d553b2cb05 | ||
|
|
aebf6fafc2 | ||
|
|
0287dd390d | ||
|
|
7f6d0e8c45 | ||
|
|
68c4a9fceb | ||
|
|
e47e0e1c78 | ||
|
|
e5478739bb | ||
|
|
0c7f56b656 | ||
|
|
0b5c19b459 | ||
|
|
f86d98bfde | ||
|
|
e681a43fb1 | ||
|
|
4f8810a693 | ||
|
|
0e5bcaa21e | ||
|
|
6cc0b262be | ||
|
|
4c94952052 | ||
|
|
c82f04e115 | ||
|
|
4da23852a7 | ||
|
|
b873aa09d6 | ||
|
|
d3ae0e28a8 | ||
|
|
b730d5e485 | ||
|
|
ffbfa525d4 | ||
|
|
ff9d63c910 | ||
|
|
ef32b917a8 | ||
|
|
198e4bdaab |
37
.github/workflows/build.yml
vendored
Normal file
37
.github/workflows/build.yml
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
name: Techmino CI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
pull_request:
|
||||
branches: [ master ]
|
||||
|
||||
jobs:
|
||||
build-windows:
|
||||
runs-on: windows-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Download font
|
||||
run: curl -LO https://github.com/flaribbit/Techmino/releases/download/font/font.ttf
|
||||
- name: Download love
|
||||
run: |
|
||||
curl -LO https://github.com/love2d/love/releases/download/11.3/love-11.3-win64.zip
|
||||
7z x love-11.3-win64.zip
|
||||
- name: Download ColdClear
|
||||
run: |
|
||||
curl -LO https://github.com/flaribbit/Techmino/releases/download/coldclear/lib.zip
|
||||
7z x lib.zip -olib
|
||||
move lib\Windows\x86_64\cold_clear.dll love-11.3-win64
|
||||
- name: Pack Techmino
|
||||
run: |
|
||||
7z a game.zip BGM image lib modes parts SFX VOICE Zframework conf.lua document.txt font.ttf main.lua
|
||||
move game.zip game.love
|
||||
cmd /c copy /b love-11.3-win64\love.exe + game.love love-11.3-win64\Techmino.exe
|
||||
del love-11.3-win64\love.exe
|
||||
del love-11.3-win64\lovec.exe
|
||||
cmd /c rmdir /S/Q lib\windows\x86
|
||||
- name: Artifact
|
||||
uses: actions/upload-artifact@v1.0.0
|
||||
with:
|
||||
name: Techmino_x64
|
||||
path: love-11.3-win64
|
||||
3
.gitignore
vendored
3
.gitignore
vendored
@@ -1,2 +1,3 @@
|
||||
lib
|
||||
font.ttf
|
||||
font.ttf
|
||||
BGM
|
||||
Binary file not shown.
BIN
BGM/blank.ogg
BIN
BGM/blank.ogg
Binary file not shown.
BIN
BGM/cruelty.ogg
BIN
BGM/cruelty.ogg
Binary file not shown.
Binary file not shown.
BIN
BGM/end.ogg
BIN
BGM/end.ogg
Binary file not shown.
BIN
BGM/far.ogg
BIN
BGM/far.ogg
Binary file not shown.
BIN
BGM/final.ogg
BIN
BGM/final.ogg
Binary file not shown.
Binary file not shown.
BIN
BGM/infinite.ogg
BIN
BGM/infinite.ogg
Binary file not shown.
BIN
BGM/newera.ogg
BIN
BGM/newera.ogg
Binary file not shown.
BIN
BGM/oxygen.ogg
BIN
BGM/oxygen.ogg
Binary file not shown.
BIN
BGM/push.ogg
BIN
BGM/push.ogg
Binary file not shown.
BIN
BGM/race.ogg
BIN
BGM/race.ogg
Binary file not shown.
BIN
BGM/reason.ogg
BIN
BGM/reason.ogg
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
BGM/way.ogg
BIN
BGM/way.ogg
Binary file not shown.
@@ -345,16 +345,18 @@ back.matrix={
|
||||
t=t+dt
|
||||
end,
|
||||
draw=function()
|
||||
gc.scale(scr.k)
|
||||
gc.clear(.15,.15,.15)
|
||||
local Y=ceil(scr.H/80)
|
||||
for x=1,ceil(scr.W/80)do
|
||||
for y=1,Y do
|
||||
gc.setColor(1,1,1,sin(x+matrixT[x][y]*t)*.1+.1)
|
||||
gc.rectangle("fill",80*x,80*y,-80,-80)
|
||||
gc.push("transform")
|
||||
local k=scr.k
|
||||
gc.scale(k)
|
||||
local Y=ceil(scr.h/80/k)
|
||||
for x=1,ceil(scr.w/80/k)do
|
||||
for y=1,Y do
|
||||
gc.setColor(1,1,1,sin(x+matrixT[x][y]*t)*.1+.1)
|
||||
gc.rectangle("fill",80*x,80*y,-80,-80)
|
||||
end
|
||||
end
|
||||
end
|
||||
gc.scale(1/scr.k)
|
||||
gc.pop()
|
||||
end,
|
||||
}
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ local BGM={
|
||||
BGM.list={
|
||||
"blank",
|
||||
"race","push","way","reason",
|
||||
"newera","oxygen","infinite",
|
||||
"newera","oxygen","infinite","down",
|
||||
"secret7th","secret8th",
|
||||
"shining terminal","distortion","far",
|
||||
"rockblock","cruelty","final","8-bit happiness","end",
|
||||
@@ -55,7 +55,7 @@ function BGM.play(s)
|
||||
elseif not s then
|
||||
return
|
||||
elseif not BGM.list[s]then
|
||||
LOG.print("Cannot find BGM: "..s,color.lRed)
|
||||
LOG.print("Cannot find BGM: "..s,"short",color.red)
|
||||
return
|
||||
end
|
||||
if BGM.nowPlay~=s then
|
||||
|
||||
@@ -5,14 +5,14 @@ local toN,toS=tonumber,tostring
|
||||
local concat=table.concat
|
||||
|
||||
local function splitS(s,sep)
|
||||
local t,n={},1
|
||||
repeat
|
||||
local p=find(s,sep)or #s+1
|
||||
t[n]=sub(s,1,p-1)
|
||||
n=n+1
|
||||
s=sub(s,p+#sep)
|
||||
until #s==0
|
||||
return t
|
||||
local L={}
|
||||
local p1,p2=1--start,target
|
||||
while p1<=#s do
|
||||
p2=find(s,sep,p1)or #s+1
|
||||
L[#L+1]=sub(s,p1,p2-1)
|
||||
p1=p2+#sep
|
||||
end
|
||||
return L
|
||||
end
|
||||
local tabs={
|
||||
[0]="",
|
||||
@@ -99,7 +99,7 @@ function FILE.saveRecord(N,L)
|
||||
local _,mes=F:write(dumpTable(L))
|
||||
F:flush()F:close()
|
||||
if not _ then
|
||||
TEXT.show(text.recSavingError..(mes or"unknown error"),1140,650,20,"sudden",.5)
|
||||
LOG.print(text.recSavingError..(mes or"unknown error"),color.red)
|
||||
end
|
||||
end
|
||||
function FILE.delRecord(N)
|
||||
@@ -125,10 +125,9 @@ function FILE.saveUnlock()
|
||||
local _,mes=F:write(dumpTable(modeRanks))
|
||||
F:flush()F:close()
|
||||
if not _ then
|
||||
TEXT.show(text.unlockSavingError..(mes or"unknown error"),1140,650,20,"sudden",.5)
|
||||
LOG.print(text.unlockSavingError..(mes or"unknown error"),color.red)
|
||||
end
|
||||
end
|
||||
|
||||
function FILE.loadData()
|
||||
local F=files.data
|
||||
if F:open("r")then
|
||||
@@ -151,7 +150,7 @@ function FILE.saveData()
|
||||
local _,mes=F:write(dumpTable(stat))
|
||||
F:flush()F:close()
|
||||
if not _ then
|
||||
TEXT.show(text.statSavingError..(mes or"unknown error"),1140,650,20,"sudden",.5)
|
||||
LOG.print(text.statSavingError..(mes or"unknown error"),color.red)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -175,8 +174,8 @@ function FILE.saveSetting()
|
||||
F:open("w")
|
||||
local _,mes=F:write(dumpTable(setting))
|
||||
F:flush()F:close()
|
||||
if _ then TEXT.show(text.settingSaved,1140,650,40,"sudden",.5)
|
||||
else TEXT.show(text.settingSavingError..(mes or"unknown error"),1140,650,20,"sudden",.5)
|
||||
if _ then LOG.print(text.settingSaved,color.green)
|
||||
else LOG.print(text.settingSavingError..(mes or"unknown error"),color.red)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -196,8 +195,8 @@ function FILE.saveKeyMap()
|
||||
F:open("w")
|
||||
local _,mes=F:write(dumpTable(keyMap))
|
||||
F:flush()F:close()
|
||||
if _ then TEXT.show(text.keyMapSaved,1140,650,26,"sudden",.5)
|
||||
else TEXT.show(text.keyMapSavingError..(mes or"unknown error"),1140,650,20,"sudden",.5)
|
||||
if _ then LOG.print(text.keyMapSaved,color.green)
|
||||
else LOG.print(text.keyMapSavingError..(mes or"unknown error"),color.red)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -217,8 +216,8 @@ function FILE.saveVK()
|
||||
F:open("w")
|
||||
local _,mes=F:write(dumpTable(VK_org))
|
||||
F:flush()F:close()
|
||||
if _ then TEXT.show(text.VKSaved,1140,650,26,"sudden",.5)
|
||||
else TEXT.show(text.VKSavingError..(mes or"unknown error"),1140,650,20,"sudden",.5)
|
||||
if _ then LOG.print(text.VKSaved,color.green)
|
||||
else LOG.print(text.VKSavingError..(mes or"unknown error"),color.red)
|
||||
end
|
||||
end
|
||||
return FILE
|
||||
@@ -32,7 +32,6 @@ xOy=love.math.newTransform()
|
||||
joysticks={}
|
||||
|
||||
local devMode
|
||||
debugMesHistory={}
|
||||
|
||||
local infoCanvas=gc.newCanvas(108,27)
|
||||
local function updatePowerInfo()
|
||||
@@ -191,13 +190,13 @@ function love.keypressed(i)
|
||||
if devMode then
|
||||
if i=="f5"then
|
||||
DBP("DEBUG:")
|
||||
elseif i=="f3"then
|
||||
LOG.print("挂了.gif")
|
||||
elseif i=="f8"then devMode=nil TEXT.show("DEBUG OFF",640,360,80,"fly",.8)
|
||||
elseif i=="f9"then devMode=1 TEXT.show("DEBUG 1",640,360,80,"fly",.8)
|
||||
elseif i=="f10"then devMode=2 TEXT.show("DEBUG 2",640,360,80,"fly",.8)
|
||||
elseif i=="f11"then devMode=3 TEXT.show("DEBUG 3",640,360,80,"fly",8)
|
||||
elseif i=="f12"then devMode=4 TEXT.show("DEBUG 4",640,360,80,"fly",12)
|
||||
elseif i=="f3"then LOG.print("挂了.gif")
|
||||
elseif i=="f4"then LOG.copy()
|
||||
elseif i=="f8"then devMode=nil LOG.print("DEBUG OFF",color.yellow)
|
||||
elseif i=="f9"then devMode=1 LOG.print("DEBUG 1",color.yellow)
|
||||
elseif i=="f10"then devMode=2 LOG.print("DEBUG 2",color.yellow)
|
||||
elseif i=="f11"then devMode=3 LOG.print("DEBUG 3",color.yellow)
|
||||
elseif i=="f12"then devMode=4 LOG.print("DEBUG 4",color.yellow)
|
||||
elseif devMode==2 then
|
||||
if i=="k"then
|
||||
for i=1,8 do
|
||||
@@ -210,8 +209,6 @@ function love.keypressed(i)
|
||||
elseif i=="q"then
|
||||
local W=WIDGET.sel
|
||||
if W then W:printInfo()end
|
||||
elseif i=="f3"then
|
||||
assert(false,"Techmino:挂了")
|
||||
elseif i=="e"then
|
||||
for k,v in next,_G do
|
||||
DBP(k,v)
|
||||
@@ -228,7 +225,10 @@ function love.keypressed(i)
|
||||
elseif i=="'"then W.h=W.h+10
|
||||
elseif i=="["then W.font=W.font-1
|
||||
elseif i=="]"then W.font=W.font+1
|
||||
else goto NORMAL
|
||||
end
|
||||
else
|
||||
goto NORMAL
|
||||
end
|
||||
else
|
||||
goto NORMAL
|
||||
@@ -245,7 +245,7 @@ function love.keypressed(i)
|
||||
end
|
||||
else
|
||||
devMode=1
|
||||
TEXT.show("DEBUG ON",640,360,80,"fly",.8)
|
||||
LOG.print("DEBUG ON",color.yellow)
|
||||
end
|
||||
end
|
||||
function love.keyreleased(i)
|
||||
@@ -260,7 +260,7 @@ function love.joystickremoved(JS)
|
||||
for i=1,#joysticks do
|
||||
if joysticks[i]==JS then
|
||||
rem(joysticks,i)
|
||||
LOG.print("Joystick removed")
|
||||
LOG.print("Joystick removed",color.yellow)
|
||||
return
|
||||
end
|
||||
end
|
||||
@@ -518,8 +518,9 @@ function love.run()
|
||||
gc.print("Voices:"..VOC.getCount(),5,_-80)
|
||||
gc.print("Tasks:"..TASK.getCount(),5,_-100)
|
||||
ins(frameTimeList,1,dt)rem(frameTimeList,126)
|
||||
gc.setColor(1,1,1,.3)
|
||||
for i=1,#frameTimeList do
|
||||
gc.rectangle("fill",900+2*i,_,2,-frameTimeList[i]*4000)
|
||||
gc.rectangle("fill",150+2*i,_,2,-frameTimeList[i]*4000)
|
||||
end
|
||||
if devMode==3 then WAIT(.1)
|
||||
elseif devMode==4 then WAIT(.5)
|
||||
@@ -537,7 +538,7 @@ function love.run()
|
||||
lastFreshPow=Timer()
|
||||
if gc.getWidth()~=scr.w then
|
||||
love.resize(gc.getWidth(),gc.getHeight())
|
||||
TEXT.show("resized",200,100,30,"stretch")
|
||||
LOG.print("Resized",color.yellow)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -253,6 +253,8 @@ local langList={
|
||||
copy="复制",
|
||||
paste="粘贴",
|
||||
clear="清除",
|
||||
pushLine="增加一行(K)",
|
||||
delLine="消除行(L)",
|
||||
demo="不显示×",
|
||||
custom="参数(E)",
|
||||
back="返回",
|
||||
@@ -373,6 +375,7 @@ local langList={
|
||||
},--LangName added later
|
||||
minigame={
|
||||
p15="15 Puzzle",
|
||||
schulte_G="舒尔特方格",
|
||||
back="返回",
|
||||
},
|
||||
p15={
|
||||
@@ -380,9 +383,17 @@ local langList={
|
||||
color="颜色",
|
||||
blind="盲打",
|
||||
slide="滑动操作",
|
||||
pathVis="路径显示",
|
||||
revKB="键盘反向",
|
||||
back="返回",
|
||||
},
|
||||
schulte_G={
|
||||
reset="重来",
|
||||
rank="尺寸",
|
||||
blind="盲打",
|
||||
disappear="消失",
|
||||
back="返回",
|
||||
},
|
||||
help={
|
||||
staff="制作人员",
|
||||
his="更新历史",
|
||||
@@ -736,8 +747,10 @@ local langList={
|
||||
copy="复制",
|
||||
paste="粘贴",
|
||||
clear="清除",
|
||||
pushLine="增加一行(K)",
|
||||
delLine="消除行(L)",
|
||||
demo="不显示×",
|
||||
custom="参数",
|
||||
custom="参数(E)",
|
||||
back="返回",
|
||||
},
|
||||
play={
|
||||
@@ -856,6 +869,7 @@ local langList={
|
||||
},--LangName added later
|
||||
minigame={
|
||||
p15="15 Puzzle",
|
||||
schulte_G="舒尔特方格",
|
||||
back="返回",
|
||||
},
|
||||
p15={
|
||||
@@ -863,9 +877,17 @@ local langList={
|
||||
color="颜色",
|
||||
blind="盲打",
|
||||
slide="滑动操作",
|
||||
pathVis="路径显示",
|
||||
revKB="键盘反向",
|
||||
back="返回",
|
||||
},
|
||||
schulte_G={
|
||||
reset="重来",
|
||||
rank="尺寸",
|
||||
blind="盲打",
|
||||
disappear="消失",
|
||||
back="返回",
|
||||
},
|
||||
help={
|
||||
staff="制作人员",
|
||||
his="更新历史",
|
||||
@@ -1209,6 +1231,8 @@ local langList={
|
||||
copy="Copy",
|
||||
paste="Paste",
|
||||
clear="Clear",
|
||||
pushLine="Add Line(K)",
|
||||
delLine="Del Line(L)",
|
||||
demo="Don't show ×",
|
||||
custom="Args(E)",
|
||||
back="Back",
|
||||
@@ -1329,6 +1353,7 @@ local langList={
|
||||
},--LangName added later
|
||||
minigame={
|
||||
p15="15 Puzzle",
|
||||
schulte_G="Schulte Grid",
|
||||
back="Back",
|
||||
},
|
||||
p15={
|
||||
@@ -1336,9 +1361,17 @@ local langList={
|
||||
color="Color",
|
||||
blind="Blind",
|
||||
slide="Slide",
|
||||
pathVis="Path show",
|
||||
revKB="Reverse",
|
||||
back="Back",
|
||||
},
|
||||
schulte_G={
|
||||
reset="Reset",
|
||||
rank="Size",
|
||||
blind="Blind",
|
||||
disappear="Hide",
|
||||
back="Back",
|
||||
},
|
||||
help={
|
||||
staff="Staff",
|
||||
his="History",
|
||||
@@ -1680,6 +1713,8 @@ local langList={
|
||||
copy="→__",
|
||||
paste="__→",
|
||||
clear="XXX",
|
||||
pushLine="↑↑↑↑↑(K)",
|
||||
delLine="==X==(L)",
|
||||
demo="X ×",
|
||||
custom="_?_(E)",
|
||||
back="X",
|
||||
@@ -1800,6 +1835,7 @@ local langList={
|
||||
},--LangName added later
|
||||
minigame={
|
||||
p15="15 Puzzle",
|
||||
schulte_G="Schulte Grid",
|
||||
back="X",
|
||||
},
|
||||
p15={
|
||||
@@ -1807,9 +1843,17 @@ local langList={
|
||||
color="~~~",
|
||||
blind="???",
|
||||
slide="~_~",
|
||||
pathVis="--==>",
|
||||
revKB="Reverse",
|
||||
back="X",
|
||||
},
|
||||
schulte_G={
|
||||
reset="!@#$%",
|
||||
rank="←?→",
|
||||
blind="???",
|
||||
disappear="=X=",
|
||||
back="X",
|
||||
},
|
||||
help={
|
||||
staff="Orz",
|
||||
his="_&_",
|
||||
@@ -2165,6 +2209,8 @@ local langList={
|
||||
copy="复制",
|
||||
paste="粘贴",
|
||||
clear="清除",
|
||||
pushLine="增加一行",
|
||||
delLine="消除行",
|
||||
demo="不显示×",
|
||||
custom="参数(E)",
|
||||
back="返回",
|
||||
@@ -2285,6 +2331,7 @@ local langList={
|
||||
},--LangName added later
|
||||
minigame={
|
||||
p15="15 Puzzle",
|
||||
schulte_G="舒尔特方格",
|
||||
back="返回",
|
||||
},
|
||||
p15={
|
||||
@@ -2292,9 +2339,17 @@ local langList={
|
||||
color="彩",
|
||||
blind="盲",
|
||||
slide="滑动",
|
||||
pathVis="路径显示",
|
||||
revKB="键盘反向",
|
||||
back="返回",
|
||||
},
|
||||
schulte_G={
|
||||
reset="重开",
|
||||
rank="尺寸",
|
||||
blind="盲",
|
||||
disappear="消失",
|
||||
back="返回",
|
||||
},
|
||||
help={
|
||||
staff="制作人员",
|
||||
his="更新历史",
|
||||
|
||||
@@ -3,29 +3,32 @@ local int,min=math.floor,math.min
|
||||
local ins,rem=table.insert,table.remove
|
||||
|
||||
local debugMesList={}
|
||||
local debugMesHistory={
|
||||
"Version: "..gameVersion,
|
||||
os.date("Launched at %Y/%m/%d %H:%M"),
|
||||
}
|
||||
local debugMesFloat=0
|
||||
local LOG={}
|
||||
function LOG.print(text,clr)--use this for print for debug in-game
|
||||
if not clr then clr=color.white end
|
||||
ins(debugMesList,{text=text,r=clr[1],g=clr[2],b=clr[3],time=240})
|
||||
ins(debugMesHistory,SCN.cur..": "..tostring(text))
|
||||
end
|
||||
function LOG.update()
|
||||
if debugMesList[1]then
|
||||
for i=#debugMesList,1,-1 do
|
||||
local M=debugMesList[i]
|
||||
M.time=M.time-1
|
||||
if i==1 and M.time==0 then
|
||||
rem(debugMesList,i)
|
||||
if not debugMesList[1]then
|
||||
debugMesFloat=0
|
||||
else
|
||||
debugMesFloat=debugMesFloat+25
|
||||
if M.blink>0 then
|
||||
M.blink=M.blink-1
|
||||
else
|
||||
M.time=M.time-1
|
||||
if i==1 and M.time==0 then
|
||||
rem(debugMesList,i)
|
||||
if not debugMesList[1]then
|
||||
debugMesFloat=0
|
||||
else
|
||||
debugMesFloat=debugMesFloat+25
|
||||
end
|
||||
end
|
||||
end
|
||||
if debugMesFloat>0 then
|
||||
debugMesFloat=int(debugMesFloat*.9)
|
||||
end
|
||||
end
|
||||
if debugMesFloat>0 then
|
||||
debugMesFloat=int(debugMesFloat*.9)
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -35,9 +38,41 @@ function LOG.draw()
|
||||
for i=1,#debugMesList do
|
||||
local M=debugMesList[i]
|
||||
local t=M.time
|
||||
gc.setColor(M.r,M.g,M.b,t>200 and int(t/3)%2 or min(t/26,1))
|
||||
gc.setColor(M.r,M.g,M.b,M.blink>0 and int(M.blink/3)%2 or min(t/26,1))
|
||||
gc.print(M.text,10+(20-min(t,20))^1.5/4,25*i+debugMesFloat)
|
||||
end
|
||||
end
|
||||
end
|
||||
function LOG.print(text,T,C)--type/time,color
|
||||
local time
|
||||
local his
|
||||
if type(T)=="table"then
|
||||
C,T=T or color.white
|
||||
elseif T=="warn"then
|
||||
C=C or color.yellow
|
||||
his=true
|
||||
time=180
|
||||
elseif T=="error"then
|
||||
C=C or color.red
|
||||
his=true
|
||||
time=210
|
||||
elseif T=="message"then
|
||||
C=C or color.green
|
||||
his=true
|
||||
elseif T=="short"then
|
||||
C=C or color.orange
|
||||
time=30
|
||||
elseif not C then
|
||||
C=color.white
|
||||
end
|
||||
if his then
|
||||
ins(debugMesHistory,SCN.cur..": "..tostring(text))
|
||||
end
|
||||
ins(debugMesList,{text=text,r=C[1],g=C[2],b=C[3],blink=30,time=time or 150})
|
||||
end
|
||||
function LOG.copy()
|
||||
local str=table.concat(debugMesHistory,"\n")
|
||||
love.system.setClipboardText(str)
|
||||
LOG.print("Log copied",color.blue)
|
||||
end
|
||||
return LOG
|
||||
@@ -54,23 +54,23 @@ local swap={
|
||||
fade={30,15,function(t)
|
||||
local t=t>15 and 2-t/15 or t/15
|
||||
gc.setColor(0,0,0,t)
|
||||
gc.rectangle("fill",0,0,scr.W,scr.H)
|
||||
gc.rectangle("fill",0,0,scr.w,scr.h)
|
||||
end},
|
||||
fade_togame={120,20,function(t)
|
||||
local t=t>20 and(120-t)/100 or t/20
|
||||
gc.setColor(0,0,0,t)
|
||||
gc.rectangle("fill",0,0,scr.W,scr.H)
|
||||
gc.rectangle("fill",0,0,scr.w,scr.h)
|
||||
end},
|
||||
slowFade={180,90,function(t)
|
||||
local t=t>90 and 2-t/90 or t/90
|
||||
gc.setColor(0,0,0,t)
|
||||
gc.rectangle("fill",0,0,scr.W,scr.H)
|
||||
gc.rectangle("fill",0,0,scr.w,scr.h)
|
||||
end},
|
||||
swipe={30,15,function(t)
|
||||
t=t/30
|
||||
gc.setColor(.1,.1,.1,1-abs(t-.5))
|
||||
t=t*t*(3-2*t)*2-1
|
||||
gc.rectangle("fill",t*scr.W,0,scr.W,scr.H)
|
||||
gc.rectangle("fill",t*scr.w,0,scr.w,scr.h)
|
||||
end},
|
||||
}--Scene swapping animations
|
||||
function SCN.swapTo(tar,style)--Parallel scene swapping, cannot back
|
||||
|
||||
@@ -2,23 +2,42 @@ local gc=love.graphics
|
||||
local int=math.floor
|
||||
local format=string.format
|
||||
|
||||
local fontData=love.filesystem.newFile("font.ttf")
|
||||
local newFont=gc.setNewFont
|
||||
local setNewFont=gc.setFont
|
||||
local fontCache,currentFontSize={}
|
||||
function setFont(s)
|
||||
local f=fontCache[s]
|
||||
if s~=currentFontSize then
|
||||
if f then
|
||||
setNewFont(f)
|
||||
else
|
||||
f=newFont(fontData,s)
|
||||
fontCache[s]=f
|
||||
setNewFont(f)
|
||||
do
|
||||
local newFont=gc.setNewFont
|
||||
local setNewFont=gc.setFont
|
||||
local fontCache,currentFontSize={}
|
||||
if love.filesystem.getInfo("font.ttf")then
|
||||
local fontData=love.filesystem.newFile("font.ttf")
|
||||
function setFont(s)
|
||||
local f=fontCache[s]
|
||||
if s~=currentFontSize then
|
||||
if f then
|
||||
setNewFont(f)
|
||||
else
|
||||
f=newFont(fontData,s)
|
||||
fontCache[s]=f
|
||||
setNewFont(f)
|
||||
end
|
||||
currentFontSize=s
|
||||
end
|
||||
return f
|
||||
end
|
||||
else
|
||||
function setFont(s)
|
||||
local f=fontCache[s]
|
||||
if s~=currentFontSize then
|
||||
if f then
|
||||
setNewFont(f)
|
||||
else
|
||||
f=newFont(s)
|
||||
fontCache[s]=f
|
||||
setNewFont(f)
|
||||
end
|
||||
currentFontSize=s
|
||||
end
|
||||
return f
|
||||
end
|
||||
currentFontSize=s
|
||||
end
|
||||
return f
|
||||
end
|
||||
|
||||
function toTime(s)
|
||||
|
||||
@@ -142,9 +142,9 @@ local Widgets={
|
||||
},
|
||||
music={
|
||||
newSlider({name="bgm", x=760, y=80, w=400, font=35,disp=SETval("bgm"),code=function(v)setting.bgm=v;BGM.freshVolume()end}),
|
||||
newButton({name="up", x=1100, y=200, w=120, color="white", font=55,code=pressKey("up")}),
|
||||
newButton({name="up", x=1100, y=200, w=120, color="white", font=55,code=pressKey("up"),hide=function()return sceneTemp==1 end}),
|
||||
newButton({name="play", x=1100, y=340, w=120, color="white", font=35,code=pressKey("space"),hide=function()return setting.bgm==0 end}),
|
||||
newButton({name="down", x=1100, y=480, w=120, color="white", font=55,code=pressKey("down")}),
|
||||
newButton({name="down", x=1100, y=480, w=120, color="white", font=55,code=pressKey("down"),hide=function()return sceneTemp==BGM.len end}),
|
||||
newButton({name="back", x=1140, y=640, w=180,h=80, color="white", font=35,code=BACK}),
|
||||
},
|
||||
custom={
|
||||
@@ -221,10 +221,12 @@ local Widgets={
|
||||
|
||||
newButton({name="any", x=600, y=360, w=120, color="lGrey", font=40,code=setPen(0)}),
|
||||
newButton({name="space", x=730, y=360, w=120, color="grey", font=65,code=setPen(-1)}),
|
||||
newButton({name="copy", x=920, y=500, w=120, color="lRed", font=35,code=pressKey("cC")}),
|
||||
newButton({name="paste", x=1060, y=500, w=120, color="lBlue", font=35,code=pressKey("cV")}),
|
||||
newButton({name="clear", x=1200, y=500, w=120, color="white", font=40,code=pressKey("delete")}),
|
||||
newSwitch({name="demo", x=755, y=640, font=30,disp=function()return sceneTemp.demo end,code=function()sceneTemp.demo=not sceneTemp.demo end}),
|
||||
newButton({name="copy", x=920, y=360, w=120, color="lRed", font=35,code=pressKey("cC")}),
|
||||
newButton({name="paste", x=1060, y=360, w=120, color="lBlue", font=35,code=pressKey("cV")}),
|
||||
newButton({name="clear", x=1200, y=360, w=120, color="white", font=40,code=pressKey("delete")}),
|
||||
newButton({name="pushLine", x=1060, y=500, w=120, color="lYellow",font=20,code=pressKey("k")}),
|
||||
newButton({name="delLine", x=1200, y=500, w=120, color="lYellow",font=20,code=pressKey("l")}),
|
||||
newSwitch({name="demo", x=755, y=640, font=30,disp=function()return sceneTemp.demo end,code=function()sceneTemp.demo=not sceneTemp.demo end}),
|
||||
newButton({name="custom", x=110, y=80, w=140,h=80, color="white", font=35,code=pressKey("e")}),
|
||||
newButton({name="back", x=1140, y=640, w=180,h=80, color="white", font=35,code=BACK}),
|
||||
},
|
||||
@@ -421,16 +423,16 @@ local Widgets={
|
||||
newSwitch({name="b8", x=280, y=500, font=35,disp=VKAdisp(8),code=VKAcode(8)}),
|
||||
newSwitch({name="b9", x=280, y=560, font=35,disp=VKAdisp(9),code=VKAcode(9)}),
|
||||
newSwitch({name="b10", x=280, y=620, font=35,disp=VKAdisp(10),code=VKAcode(10)}),
|
||||
newSwitch({name="b11", x=620, y=80, font=35,disp=VKAdisp(11),code=VKAcode(11)}),
|
||||
newSwitch({name="b12", x=620, y=140, font=35,disp=VKAdisp(12),code=VKAcode(12)}),
|
||||
newSwitch({name="b13", x=620, y=200, font=35,disp=VKAdisp(13),code=VKAcode(13)}),
|
||||
newSwitch({name="b14", x=620, y=260, font=35,disp=VKAdisp(14),code=VKAcode(14)}),
|
||||
newSwitch({name="b15", x=620, y=320, font=35,disp=VKAdisp(15),code=VKAcode(15)}),
|
||||
newSwitch({name="b16", x=620, y=380, font=35,disp=VKAdisp(16),code=VKAcode(16)}),
|
||||
newSwitch({name="b17", x=620, y=440, font=35,disp=VKAdisp(17),code=VKAcode(17)}),
|
||||
newSwitch({name="b18", x=620, y=500, font=35,disp=VKAdisp(18),code=VKAcode(18)}),
|
||||
newSwitch({name="b19", x=620, y=560, font=35,disp=VKAdisp(19),code=VKAcode(19)}),
|
||||
newSwitch({name="b20", x=620, y=620, font=35,disp=VKAdisp(20),code=VKAcode(20)}),
|
||||
newSwitch({name="b11", x=580, y=80, font=35,disp=VKAdisp(11),code=VKAcode(11)}),
|
||||
newSwitch({name="b12", x=580, y=140, font=35,disp=VKAdisp(12),code=VKAcode(12)}),
|
||||
newSwitch({name="b13", x=580, y=200, font=35,disp=VKAdisp(13),code=VKAcode(13)}),
|
||||
newSwitch({name="b14", x=580, y=260, font=35,disp=VKAdisp(14),code=VKAcode(14)}),
|
||||
newSwitch({name="b15", x=580, y=320, font=35,disp=VKAdisp(15),code=VKAcode(15)}),
|
||||
newSwitch({name="b16", x=580, y=380, font=35,disp=VKAdisp(16),code=VKAcode(16)}),
|
||||
newSwitch({name="b17", x=580, y=440, font=35,disp=VKAdisp(17),code=VKAcode(17)}),
|
||||
newSwitch({name="b18", x=580, y=500, font=35,disp=VKAdisp(18),code=VKAcode(18)}),
|
||||
newSwitch({name="b19", x=580, y=560, font=35,disp=VKAdisp(19),code=VKAcode(19)}),
|
||||
newSwitch({name="b20", x=580, y=620, font=35,disp=VKAdisp(20),code=VKAcode(20)}),
|
||||
newButton({name="norm", x=840, y=100, w=240,h=80,color="white",font=35,code=function()for i=1,20 do VK_org[i].ava=i<11 end end}),
|
||||
newButton({name="pro", x=1120, y=100, w=240,h=80,color="white",font=35,code=function()for i=1,20 do VK_org[i].ava=true end end}),
|
||||
newSwitch({name="hide", x=1170, y=200, font=40,disp=SETval("VKSwitch"),code=SETrev("VKSwitch")}),
|
||||
@@ -464,14 +466,23 @@ local Widgets={
|
||||
},
|
||||
minigame={
|
||||
newButton({name="p15", x=640, y=100,w=350,h=120,color="white",font=40,code=goScene("p15")}),
|
||||
newButton({name="schulte_G",x=640, y=250,w=350,h=120,color="white",font=40,code=goScene("schulte_G")}),
|
||||
newButton({name="back", x=1140, y=640,w=180,h=80,color="white", font=35,code=BACK}),
|
||||
},
|
||||
p15={
|
||||
newButton({name="reset", x=160,y=100,w=180,h=100,color="lGreen", font=40,code=pressKey("space")}),
|
||||
newSlider({name="color", x=110,y=250,w=170,unit=4,show=false, font=30,disp=function()return sceneTemp.color end,code=function(v)sceneTemp.color=v end,hide=function()return sceneTemp.state<2 end}),
|
||||
newSwitch({name="blind", x=200,y=350,w=60, font=40,disp=function()return sceneTemp.blind end,code=pressKey("b"),hide=function()return sceneTemp.state>0 end}),
|
||||
newSwitch({name="slide", x=200,y=450,w=60, font=40,disp=function()return sceneTemp.slide end,code=pressKey("s"),hide=function()return sceneTemp.state>0 end}),
|
||||
newSwitch({name="revKB", x=200,y=550,w=60, font=40,disp=function()return sceneTemp.revKB end,code=pressKey("r"),hide=function()return sceneTemp.state>0 end}),
|
||||
newSlider({name="color", x=110,y=250,w=170,unit=4,show=false, font=30,disp=function()return sceneTemp.color end,code=function(v)if sceneTemp.state==0 then sceneTemp.color=v end end,hide=function()return sceneTemp.state==1 end}),
|
||||
newSwitch({name="blind", x=240,y=330,w=60, font=40,disp=function()return sceneTemp.blind end,code=pressKey("b"),hide=function()return sceneTemp.state==1 end}),
|
||||
newSwitch({name="slide", x=240,y=420,w=60, font=40,disp=function()return sceneTemp.slide end,code=pressKey("s"),hide=function()return sceneTemp.state==1 end}),
|
||||
newSwitch({name="pathVis", x=240,y=510,w=60, font=40,disp=function()return sceneTemp.pathVis end,code=pressKey("p"),hide=function()return sceneTemp.state==1 or not sceneTemp.slide end}),
|
||||
newSwitch({name="revKB", x=240,y=600,w=60, font=40,disp=function()return sceneTemp.revKB end,code=pressKey("r"),hide=function()return sceneTemp.state==1 end}),
|
||||
newButton({name="back", x=1140,y=640,w=180,h=80,color="white", font=35,code=BACK}),
|
||||
},
|
||||
schulte_G={
|
||||
newButton({name="reset", x=160,y=100,w=180,h=100,color="lGreen", font=40,code=pressKey("r"),hide=function()return sceneTemp.state==0 end}),
|
||||
newSlider({name="rank", x=130,y=250,w=150,unit=3,show=false, font=40,disp=function()return sceneTemp.rank-3 end,code=function(v)sceneTemp.rank=v+3 end,hide=function()return sceneTemp.state>0 end}),
|
||||
newSwitch({name="blind", x=160,y=330,w=60, font=40,disp=function()return sceneTemp.blind end,code=pressKey("b"),hide=function()return sceneTemp.state==1 end}),
|
||||
newSwitch({name="disappear",x=160,y=410,w=60, font=40,disp=function()return sceneTemp.disappear end,code=pressKey("d"),hide=function()return sceneTemp.state==1 end}),
|
||||
newButton({name="back", x=1140,y=640,w=180,h=80,color="white", font=35,code=BACK}),
|
||||
},
|
||||
help={
|
||||
|
||||
2
conf.lua
2
conf.lua
@@ -1,4 +1,4 @@
|
||||
gameVersion="Alpha V0.10.8"
|
||||
gameVersion="Alpha V0.10.9"
|
||||
function love.conf(t)
|
||||
t.identity="Techmino"--Saving folder
|
||||
t.version="11.1"
|
||||
|
||||
8
main.lua
8
main.lua
@@ -33,7 +33,13 @@ mapCam={
|
||||
zoomMethod=nil,
|
||||
zoomK=nil,
|
||||
}
|
||||
scr={x=0,y=0,w=0,h=0,W=0,H=0,rad=0,k=1}--wid,hei,radius,scale K
|
||||
scr={
|
||||
x=0,y=0,--Up-left Coord on screen
|
||||
w=0,h=0,--Fullscreen w/h in gc
|
||||
W=0,H=0,--Fullscreen w/h in shader
|
||||
rad=0,--Radius
|
||||
k=1,--Scale size
|
||||
}--1280:720-Rect Screen Info
|
||||
|
||||
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
|
||||
|
||||
@@ -34,7 +34,7 @@ return{
|
||||
end
|
||||
end
|
||||
end,
|
||||
bg="rainbow2",bgm="way",
|
||||
bg="rainbow2",bgm="shining terminal",
|
||||
},
|
||||
pauseLimit=true,
|
||||
load=function()
|
||||
@@ -42,10 +42,10 @@ return{
|
||||
end,
|
||||
mesDisp=function(P,dx,dy)
|
||||
setFont(55)
|
||||
mStr(P.modeData.event,69,340)
|
||||
mStr("24",69,390)
|
||||
mText(drawableText.wave,69,400)
|
||||
mText(drawableText.nextWave,69,520)
|
||||
mStr(P.modeData.event,69,270)
|
||||
mStr("22",69,390)
|
||||
mText(drawableText.wave,69,330)
|
||||
mText(drawableText.nextWave,69,450)
|
||||
end,
|
||||
score=function(P)return{P.modeData.event,P.stat.time}end,
|
||||
scoreDisp=function(D)return D[1].." Waves "..toTime(D[2])end,
|
||||
|
||||
@@ -37,7 +37,7 @@ return{
|
||||
end
|
||||
end
|
||||
end,
|
||||
bg="rainbow2",bgm="shining terminal",
|
||||
bg="rainbow2",bgm="down",
|
||||
},
|
||||
pauseLimit=true,
|
||||
load=function()
|
||||
|
||||
@@ -15,7 +15,7 @@ return{
|
||||
D.event=D.event+1
|
||||
end
|
||||
end,
|
||||
bg="bg2",bgm="shining terminal",
|
||||
bg="bg2",bgm="down",
|
||||
},
|
||||
pauseLimit=true,
|
||||
load=function()
|
||||
|
||||
@@ -9,7 +9,7 @@ return{
|
||||
pauseLimit=true,
|
||||
load=function()
|
||||
PLY.newPlayer(1,340,15)
|
||||
PLY.newAIPlayer(2,965,360,.5,AITemplate("9S",3))
|
||||
PLY.newAIPlayer(2,965,360,.5,AITemplate("9S",2))
|
||||
end,
|
||||
score=function(P)return{P.stat.time}end,
|
||||
scoreDisp=function(D)return toTime(D[1])end,
|
||||
@@ -18,10 +18,10 @@ return{
|
||||
if P.result=="WIN"then
|
||||
local T=P.stat.time
|
||||
return
|
||||
T<=20 and 5 or
|
||||
T<=25 and 4 or
|
||||
T<=35 and 3 or
|
||||
T<=60 and 2 or
|
||||
T<=100 and 5 or
|
||||
T<=125 and 4 or
|
||||
T<=175 and 3 or
|
||||
T<=300 and 2 or
|
||||
1
|
||||
end
|
||||
end,
|
||||
|
||||
@@ -9,7 +9,7 @@ return{
|
||||
pauseLimit=true,
|
||||
load=function()
|
||||
PLY.newPlayer(1,340,15)
|
||||
PLY.newAIPlayer(2,965,360,.5,AITemplate("9S",5))
|
||||
PLY.newAIPlayer(2,965,360,.5,AITemplate("9S",4))
|
||||
end,
|
||||
score=function(P)return{P.stat.time}end,
|
||||
scoreDisp=function(D)return toTime(D[1])end,
|
||||
@@ -18,10 +18,10 @@ return{
|
||||
if P.result=="WIN"then
|
||||
local T=P.stat.time
|
||||
return
|
||||
T<=20 and 5 or
|
||||
T<=25 and 4 or
|
||||
T<=40 and 3 or
|
||||
T<=62 and 2 or
|
||||
T<=100 and 5 or
|
||||
T<=125 and 4 or
|
||||
T<=200 and 3 or
|
||||
T<=300 and 2 or
|
||||
1
|
||||
end
|
||||
end,
|
||||
|
||||
@@ -9,7 +9,7 @@ return{
|
||||
pauseLimit=true,
|
||||
load=function()
|
||||
PLY.newPlayer(1,340,15)
|
||||
PLY.newAIPlayer(2,965,360,.5,AITemplate("9S",7))
|
||||
PLY.newAIPlayer(2,965,360,.5,AITemplate("9S",5))
|
||||
end,
|
||||
score=function(P)return{P.stat.time}end,
|
||||
scoreDisp=function(D)return toTime(D[1])end,
|
||||
@@ -18,10 +18,10 @@ return{
|
||||
if P.result=="WIN"then
|
||||
local T=P.stat.time
|
||||
return
|
||||
T<=20 and 5 or
|
||||
T<=25 and 4 or
|
||||
T<=35 and 3 or
|
||||
T<=60 and 2 or
|
||||
T<=100 and 5 or
|
||||
T<=125 and 4 or
|
||||
T<=175 and 3 or
|
||||
T<=300 and 2 or
|
||||
1
|
||||
end
|
||||
end,
|
||||
|
||||
@@ -9,7 +9,7 @@ return{
|
||||
pauseLimit=true,
|
||||
load=function()
|
||||
PLY.newPlayer(1,340,15)
|
||||
PLY.newAIPlayer(2,965,360,.5,AITemplate("CC",9,2,true,26000))
|
||||
PLY.newAIPlayer(2,965,360,.5,AITemplate("CC",7,2,true,26000))
|
||||
end,
|
||||
score=function(P)return{P.stat.time}end,
|
||||
scoreDisp=function(D)return toTime(D[1])end,
|
||||
@@ -18,10 +18,10 @@ return{
|
||||
if P.result=="WIN"then
|
||||
local T=P.stat.time
|
||||
return
|
||||
T<=20 and 5 or
|
||||
T<=25 and 4 or
|
||||
T<=35 and 3 or
|
||||
T<=60 and 2 or
|
||||
T<=100 and 5 or
|
||||
T<=125 and 4 or
|
||||
T<=175 and 3 or
|
||||
T<=300 and 2 or
|
||||
1
|
||||
end
|
||||
end,
|
||||
|
||||
@@ -9,7 +9,7 @@ return{
|
||||
pauseLimit=true,
|
||||
load=function()
|
||||
PLY.newPlayer(1,340,15)
|
||||
PLY.newAIPlayer(2,965,360,.5,AITemplate("CC",10,3,true,50000))
|
||||
PLY.newAIPlayer(2,965,360,.5,AITemplate("CC",8,3,true,40000))
|
||||
end,
|
||||
score=function(P)return{P.stat.time}end,
|
||||
scoreDisp=function(D)return toTime(D[1])end,
|
||||
@@ -18,10 +18,10 @@ return{
|
||||
if P.result=="WIN"then
|
||||
local T=P.stat.time
|
||||
return
|
||||
T<=20 and 5 or
|
||||
T<=25 and 4 or
|
||||
T<=35 and 3 or
|
||||
T<=60 and 2 or
|
||||
T<=100 and 5 or
|
||||
T<=125 and 4 or
|
||||
T<=175 and 3 or
|
||||
T<=300 and 2 or
|
||||
1
|
||||
end
|
||||
end,
|
||||
|
||||
@@ -15,7 +15,7 @@ return{
|
||||
freshLimit=15,
|
||||
target=200,
|
||||
dropPiece=tech_check_hard,
|
||||
bg="matrix",bgm="newera",
|
||||
bg="matrix",bgm="push",
|
||||
},
|
||||
load=function()
|
||||
PLY.newPlayer(1,340,15)
|
||||
|
||||
@@ -15,7 +15,7 @@ return{
|
||||
freshLimit=15,
|
||||
target=200,
|
||||
dropPiece=tech_check_easy,
|
||||
bg="matrix",bgm="newera",
|
||||
bg="matrix",bgm="push",
|
||||
},
|
||||
load=function()
|
||||
PLY.newPlayer(1,340,15)
|
||||
|
||||
@@ -15,7 +15,7 @@ return{
|
||||
freshLimit=15,
|
||||
target=200,
|
||||
dropPiece=tech_check_hard,
|
||||
bg="matrix",bgm="push",
|
||||
bg="matrix",bgm="down",
|
||||
},
|
||||
load=function()
|
||||
PLY.newPlayer(1,340,15)
|
||||
|
||||
@@ -15,7 +15,7 @@ return{
|
||||
freshLimit=15,
|
||||
target=200,
|
||||
dropPiece=tech_check_easy,
|
||||
bg="matrix",bgm="push",
|
||||
bg="matrix",bgm="down",
|
||||
},
|
||||
load=function()
|
||||
PLY.newPlayer(1,340,15)
|
||||
|
||||
@@ -15,7 +15,7 @@ return{
|
||||
drop=1e99,lock=1e99,
|
||||
target=200,
|
||||
dropPiece=tech_check_hard,
|
||||
bg="matrix",bgm="way",
|
||||
bg="matrix",bgm="newera",
|
||||
},
|
||||
load=function()
|
||||
PLY.newPlayer(1,340,15)
|
||||
|
||||
@@ -15,7 +15,7 @@ return{
|
||||
drop=1e99,lock=1e99,
|
||||
target=200,
|
||||
dropPiece=tech_check_easy,
|
||||
bg="matrix",bgm="way",
|
||||
bg="matrix",bgm="newera",
|
||||
},
|
||||
load=function()
|
||||
PLY.newPlayer(1,340,15)
|
||||
|
||||
@@ -43,7 +43,7 @@ return{
|
||||
if L[n]then
|
||||
PLY.newAIPlayer(n,78*i-54,115*j-98,.09,AITemplate("9S",rnd(2,5)))
|
||||
else
|
||||
PLY.newAIPlayer(n,78*i-54,115*j-98,.09,AITemplate("CC",rnd(3,5),2,true,10000))
|
||||
PLY.newAIPlayer(n,78*i-54,115*j-98,.09,AITemplate("CC",rnd(3,5),2,true,12000))
|
||||
end
|
||||
n=n+1
|
||||
end end
|
||||
@@ -51,7 +51,7 @@ return{
|
||||
if L[n]then
|
||||
PLY.newAIPlayer(n,78*i+267,115*j-98,.09,AITemplate("9S",rnd(2,5)))
|
||||
else
|
||||
PLY.newAIPlayer(n,78*i+267,115*j-98,.09,AITemplate("CC",rnd(3,5),2,true,10000))
|
||||
PLY.newAIPlayer(n,78*i+267,115*j-98,.09,AITemplate("CC",rnd(3,5),2,true,12000))
|
||||
end
|
||||
n=n+1
|
||||
end end
|
||||
|
||||
@@ -43,7 +43,7 @@ return{
|
||||
if L[n]then
|
||||
PLY.newAIPlayer(n,78*i-54,115*j-98,.09,AITemplate("9S",rnd(8,10)))
|
||||
else
|
||||
PLY.newAIPlayer(n,78*i-54,115*j-98,.09,AITemplate("CC",rnd(9,10),4,true,30000))
|
||||
PLY.newAIPlayer(n,78*i-54,115*j-98,.09,AITemplate("CC",rnd(8,10),3,true,30000))
|
||||
end
|
||||
n=n+1
|
||||
end end
|
||||
@@ -51,7 +51,7 @@ return{
|
||||
if L[n]then
|
||||
PLY.newAIPlayer(n,78*i+267,115*j-98,.09,AITemplate("9S",rnd(8,10)))
|
||||
else
|
||||
PLY.newAIPlayer(n,78*i+267,115*j-98,.09,AITemplate("CC",rnd(9,10),4,true,30000))
|
||||
PLY.newAIPlayer(n,78*i+267,115*j-98,.09,AITemplate("CC",rnd(8,10),3,true,30000))
|
||||
end
|
||||
n=n+1
|
||||
end end
|
||||
|
||||
@@ -43,7 +43,7 @@ return{
|
||||
if L[n]then
|
||||
PLY.newAIPlayer(n,46*i-36,97*j-72,.068,AITemplate("9S",rnd(2,5)))
|
||||
else
|
||||
PLY.newAIPlayer(n,46*i-36,97*j-72,.068,AITemplate("CC",rnd(3,5),2,true,10000))
|
||||
PLY.newAIPlayer(n,46*i-36,97*j-72,.068,AITemplate("CC",rnd(3,5),2,true,12000))
|
||||
end
|
||||
n=n+1
|
||||
end end
|
||||
@@ -51,7 +51,7 @@ return{
|
||||
if L[n]then
|
||||
PLY.newAIPlayer(n,46*i+264,97*j-72,.068,AITemplate("9S",rnd(2,5)))
|
||||
else
|
||||
PLY.newAIPlayer(n,46*i+264,97*j-72,.068,AITemplate("CC",rnd(3,5),2,true,10000))
|
||||
PLY.newAIPlayer(n,46*i+264,97*j-72,.068,AITemplate("CC",rnd(3,5),2,true,12000))
|
||||
end
|
||||
n=n+1
|
||||
end end
|
||||
|
||||
@@ -43,7 +43,7 @@ return{
|
||||
if L[n]then
|
||||
PLY.newAIPlayer(n,46*i-36,97*j-72,.068,AITemplate("9S",rnd(8,10)))
|
||||
else
|
||||
PLY.newAIPlayer(n,46*i-36,97*j-72,.068,AITemplate("CC",rnd(9,10),4,true,30000))
|
||||
PLY.newAIPlayer(n,46*i-36,97*j-72,.068,AITemplate("CC",rnd(8,10),3,true,30000))
|
||||
end
|
||||
n=n+1
|
||||
end end
|
||||
@@ -51,7 +51,7 @@ return{
|
||||
if L[n]then
|
||||
PLY.newAIPlayer(n,46*i+264,97*j-72,.068,AITemplate("9S",rnd(8,10)))
|
||||
else
|
||||
PLY.newAIPlayer(n,46*i+264,97*j-72,.068,AITemplate("CC",rnd(9,10),4,true,30000))
|
||||
PLY.newAIPlayer(n,46*i+264,97*j-72,.068,AITemplate("CC",rnd(8,10),3,true,30000))
|
||||
end
|
||||
n=n+1
|
||||
end end
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
local int=math.floor
|
||||
local AISpeed={60,50,45,35,25,15,9,6,4,3}
|
||||
local AISpeed={60,45,30,24,18,12,8,5,4,3}
|
||||
return function(type,speedLV,next,hold,node)
|
||||
if type=="CC"then
|
||||
return{
|
||||
@@ -12,7 +11,7 @@ return function(type,speedLV,next,hold,node)
|
||||
elseif type=="9S"then
|
||||
return{
|
||||
type="9S",
|
||||
delta=int(AISpeed[speedLV]*.5),
|
||||
delta=math.floor(AISpeed[speedLV]*.5),
|
||||
}
|
||||
end
|
||||
end
|
||||
@@ -39,10 +39,10 @@ local function loadCC()
|
||||
end
|
||||
if not f then
|
||||
CCloader_filename[system]=nil
|
||||
LOG.print("failed to load CC")
|
||||
LOG.print("failed to load CC","warn",color.red)
|
||||
return
|
||||
end
|
||||
LOG.print("CC load successfully")
|
||||
LOG.print("CC load successfully","warn",color.green)
|
||||
f()
|
||||
BOT={
|
||||
getConf= cc.get_default_config ,--()options,weights
|
||||
|
||||
@@ -310,6 +310,7 @@ function resetGameData()
|
||||
game.seed=rnd(261046101471026)
|
||||
|
||||
destroyPlayers()
|
||||
restoreVirtualKey()
|
||||
modeEnv=curMode.env
|
||||
curMode.load()--BG/BGM need redefine in custom,so up here
|
||||
if modeEnv.task then
|
||||
@@ -328,7 +329,6 @@ function resetGameData()
|
||||
game.stage=1
|
||||
game.garbageSpeed=.3
|
||||
end
|
||||
restoreVirtualKey()
|
||||
stat.game=stat.game+1
|
||||
freeRow.reset(30*#players)
|
||||
SFX.play("ready")
|
||||
@@ -360,6 +360,7 @@ function resetPartGameData(replaying)
|
||||
end
|
||||
|
||||
destroyPlayers()
|
||||
restoreVirtualKey()
|
||||
modeEnv=curMode.env
|
||||
curMode.load()
|
||||
if modeEnv.task then
|
||||
@@ -378,7 +379,6 @@ function resetPartGameData(replaying)
|
||||
game.stage=1
|
||||
game.garbageSpeed=.3
|
||||
end
|
||||
restoreVirtualKey()
|
||||
collectgarbage()
|
||||
end
|
||||
function gameStart()
|
||||
|
||||
@@ -224,7 +224,7 @@ drawableText={
|
||||
preview=T(40),
|
||||
keyboard=T(25),joystick=T(25),
|
||||
ctrlSetHelp=T(30),
|
||||
musicRoom=T(80),nowPlaying=T(50),
|
||||
musicRoom=T(80),nowPlaying=T(60),
|
||||
VKTchW=T(30),VKOrgW=T(30),VKCurW=T(30),
|
||||
noScore=T(45),highScore=T(30),
|
||||
}
|
||||
2056
parts/player.lua
2056
parts/player.lua
File diff suppressed because it is too large
Load Diff
261
parts/scenes.lua
261
parts/scenes.lua
@@ -92,7 +92,7 @@ do--calculator
|
||||
elseif S.val==196000+022 then
|
||||
S.pass=true
|
||||
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)
|
||||
LOG.print("\68\69\86\58\87\97\116\101\114\109\97\114\107\32\82\101\109\111\118\101\100","warn",color.lBlue)
|
||||
SFX.play("clear")
|
||||
elseif S.val==72943816 then
|
||||
S.pass=true
|
||||
@@ -102,7 +102,7 @@ do--calculator
|
||||
end
|
||||
end
|
||||
FILE.saveUnlock()
|
||||
TEXT.show("\68\69\86\58\85\78\76\79\67\75\65\76\76",640,360,60,"stretch",.6)
|
||||
LOG.print("\68\69\86\58\85\78\76\79\67\75\65\76\76","warn",color.lBlue)
|
||||
SFX.play("clear_2")
|
||||
elseif S.val==1379e8+2626e4+1379 then
|
||||
S.pass=true
|
||||
@@ -131,6 +131,7 @@ do--calculator
|
||||
|
||||
function Pnt.calculator()
|
||||
local S=sceneTemp
|
||||
gc.setColor(1,1,1)
|
||||
gc.setLineWidth(4)
|
||||
gc.rectangle("line",100,80,650,150)
|
||||
setFont(45)
|
||||
@@ -142,9 +143,9 @@ do--calculator
|
||||
end
|
||||
end
|
||||
do--minigame
|
||||
function sceneInit.p15()
|
||||
function sceneInit.minigame()
|
||||
BG.set("space")
|
||||
BGM.play()
|
||||
BGM.stop()
|
||||
end
|
||||
end
|
||||
do--p15
|
||||
@@ -162,6 +163,7 @@ do--p15
|
||||
color=2,
|
||||
blind=false,
|
||||
slide=true,
|
||||
pathVis=true,
|
||||
revKB=false,
|
||||
}
|
||||
end
|
||||
@@ -212,7 +214,9 @@ do--p15
|
||||
local S=sceneTemp
|
||||
if S.state<2 then
|
||||
if not key then
|
||||
sysFX.newRipple(.16,x,y,10)
|
||||
if S.pathVis then
|
||||
sysFX.newRipple(.16,x,y,10)
|
||||
end
|
||||
x,y=int((x-320)/160)+1,int((y-40)/160)+1
|
||||
end
|
||||
local b=S.board
|
||||
@@ -252,14 +256,14 @@ do--p15
|
||||
if checkBoard(b)then
|
||||
S.state=2
|
||||
S.time=Timer()-S.startTime
|
||||
if S.time<1 then LOG.print("不是人")
|
||||
elseif S.time<2 then LOG.print("还是人")
|
||||
elseif S.time<3 then LOG.print("神仙")
|
||||
elseif S.time<5 then LOG.print("太强了")
|
||||
elseif S.time<7.5 then LOG.print("很强")
|
||||
elseif S.time<10 then LOG.print("可以的")
|
||||
elseif S.time<20 then LOG.print("再接再厉")
|
||||
elseif S.time<30 then LOG.print("多加练习")
|
||||
if S.time<1 then LOG.print("不是人",color.lBlue)
|
||||
elseif S.time<2 then LOG.print("还是人",color.lBlue)
|
||||
elseif S.time<3 then LOG.print("神仙",color.lBlue)
|
||||
elseif S.time<5 then LOG.print("太强了",color.lBlue)
|
||||
elseif S.time<7.5 then LOG.print("很强",color.lBlue)
|
||||
elseif S.time<10 then LOG.print("可以的",color.lBlue)
|
||||
elseif S.time<20 then LOG.print("再接再厉",color.lBlue)
|
||||
elseif S.time<30 then LOG.print("多加练习",color.lBlue)
|
||||
end
|
||||
SFX.play("win")
|
||||
end
|
||||
@@ -293,6 +297,13 @@ do--p15
|
||||
elseif k=="s"then
|
||||
if S.state==0 then
|
||||
S.slide=not S.slide
|
||||
if not S.slide then
|
||||
S.pathVis=false
|
||||
end
|
||||
end
|
||||
elseif k=="p"then
|
||||
if S.state==0 and S.slide then
|
||||
S.pathVis=not S.pathVis
|
||||
end
|
||||
elseif k=="b"then
|
||||
if S.state==0 then
|
||||
@@ -398,20 +409,20 @@ do--p15
|
||||
gc.print(format("%.3f",S.time),1026,80)
|
||||
gc.print(S.move,1026,150)
|
||||
|
||||
if S.state==1 then gc.setColor(.9,.9,.9) --game
|
||||
if S.state==2 then gc.setColor(.9,.9,0) --win
|
||||
elseif S.state==1 then gc.setColor(.9,.9,.9)--game
|
||||
elseif S.state==0 then gc.setColor(.2,.8,.2)--ready
|
||||
elseif S.state==2 then gc.setColor(.9,.9,0) --win
|
||||
end
|
||||
gc.setLineWidth(10)
|
||||
gc.rectangle("line",313,33,654,654,18)
|
||||
|
||||
gc.setLineWidth(4)
|
||||
local x,y=S.x,S.y
|
||||
local blind=S.blind and S.state==1
|
||||
setFont(80)
|
||||
for i=1,4 do
|
||||
for j=1,4 do
|
||||
if x~=j or y~=i then
|
||||
local blind=S.blind and S.state==1
|
||||
local N=S.board[i][j]
|
||||
|
||||
local C=blind and 1 or S.color
|
||||
@@ -437,6 +448,148 @@ do--p15
|
||||
gc.rectangle("line",x*160+173,y*160-107,134,134,50)
|
||||
end
|
||||
end
|
||||
do--schulte_G
|
||||
function sceneInit.schulte_G()
|
||||
BGM.play("way")
|
||||
sceneTemp={
|
||||
board={},
|
||||
rank=3,
|
||||
blind=false,
|
||||
disappear=false,
|
||||
|
||||
startTime=0,
|
||||
time=0,
|
||||
error=0,
|
||||
state=0,
|
||||
target=0,
|
||||
}
|
||||
end
|
||||
|
||||
local function newBoard()
|
||||
local S=sceneTemp
|
||||
local L={}
|
||||
for i=1,S.rank^2 do
|
||||
L[i]=i
|
||||
end
|
||||
for i=1,S.rank^2 do
|
||||
S.board[i]=rem(L,rnd(#L))
|
||||
end
|
||||
end
|
||||
local function tapBoard(x,y)
|
||||
local S=sceneTemp
|
||||
if x>320 and x<960 and y>40 and y<680 then
|
||||
if S.state==0 then
|
||||
newBoard()
|
||||
S.state=1
|
||||
S.startTime=Timer()
|
||||
S.target=1
|
||||
elseif S.state==1 then
|
||||
x=S.rank*(int((y-40)/640*S.rank))+int((x-320)/640*S.rank)+1
|
||||
if S.board[x]==S.target then
|
||||
S.target=S.target+1
|
||||
if S.target<=S.rank^2 then
|
||||
SFX.play("lock")
|
||||
else
|
||||
S.time=Timer()-S.startTime+S.error
|
||||
S.state=2
|
||||
SFX.play("reach")
|
||||
end
|
||||
else
|
||||
SFX.play("finesseError")
|
||||
S.error=S.error+1
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function mouseDown.schulte_G(x,y,k)
|
||||
tapBoard(x,y)
|
||||
end
|
||||
function touchDown.schulte_G(id,x,y)
|
||||
tapBoard(x,y)
|
||||
end
|
||||
function keyDown.schulte_G(key)
|
||||
local S=sceneTemp
|
||||
if key=="space"or key=="r"then
|
||||
if sceneTemp.state>0 then
|
||||
S.board={}
|
||||
S.time=0
|
||||
S.error=0
|
||||
S.state=0
|
||||
S.target=0
|
||||
end
|
||||
elseif key=="z"or key=="x"then
|
||||
tapBoard(ms.getPosition())
|
||||
elseif key=="b"then
|
||||
if S.state==0 then
|
||||
S.blind=not S.blind
|
||||
end
|
||||
elseif key=="d"then
|
||||
if S.state==0 then
|
||||
S.disappear=not S.disappear
|
||||
end
|
||||
elseif key=="3"or key=="4"or key=="5"or key=="6"then
|
||||
if S.state==0 then
|
||||
S.rank=tonumber(key)
|
||||
end
|
||||
elseif key=="escape"then
|
||||
SCN.back()
|
||||
end
|
||||
end
|
||||
|
||||
function Tmr.schulte_G()
|
||||
local S=sceneTemp
|
||||
if S.state==1 then
|
||||
S.time=Timer()-S.startTime+S.error
|
||||
end
|
||||
end
|
||||
|
||||
local fontSize={nil,nil,120,100,80,60}
|
||||
function Pnt.schulte_G()
|
||||
local S=sceneTemp
|
||||
|
||||
setFont(40)
|
||||
gc.setColor(1,1,1)
|
||||
gc.print(format("%.3f",S.time),1026,80)
|
||||
gc.print(S.error,1026,150)
|
||||
|
||||
setFont(70)
|
||||
mStr(S.state==1 and S.target or S.state==0 and"Ready"or S.state==2 and"Win",1130,300)
|
||||
|
||||
if S.state==1 then gc.setColor(.9,.9,.9) --game
|
||||
elseif S.state==0 then gc.setColor(.2,.8,.2)--ready
|
||||
elseif S.state==2 then gc.setColor(.9,.9,0) --win
|
||||
end
|
||||
gc.setLineWidth(10)
|
||||
gc.rectangle("line",310,30,660,660)
|
||||
|
||||
local rank=S.rank
|
||||
local width=640/rank
|
||||
local blind=S.state==0 or S.blind and(S.state==2 or S.target>1)
|
||||
gc.setLineWidth(4)
|
||||
local f=fontSize[rank]
|
||||
setFont(f)
|
||||
for i=1,rank do
|
||||
for j=1,rank do
|
||||
local N=S.board[rank*(i-1)+j]
|
||||
if not(S.state==1 and S.disappear and N<S.target)then
|
||||
gc.setColor(.6,.4,.4)
|
||||
gc.rectangle("fill",320+(j-1)*width,(i-1)*width+40,width,width)
|
||||
gc.setColor(1,1,1)
|
||||
gc.rectangle("line",320+(j-1)*width,(i-1)*width+40,width,width)
|
||||
if not blind then
|
||||
local x,y=320+(j-.5)*width,40+(i-.5)*width-f*.67
|
||||
gc.setColor(.1,.1,.1)
|
||||
mStr(N,x-3,y-1)
|
||||
mStr(N,x-1,y-3)
|
||||
gc.setColor(1,1,1)
|
||||
mStr(N,x,y)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
do--load
|
||||
function sceneInit.load()
|
||||
sceneTemp={
|
||||
@@ -574,7 +727,7 @@ do--intro
|
||||
elseif newVersionLaunch then
|
||||
SCN.push("main","fade")
|
||||
SCN.swapTo("history","fade")
|
||||
TEXT.show(text.newVersion,640,200,30,"fly",.3)
|
||||
LOG.print(text.newVersion,"warn",color.lBlue)
|
||||
else
|
||||
SCN.go("main")
|
||||
end
|
||||
@@ -784,10 +937,10 @@ do--mode
|
||||
if mapCam.sel=="custom_clear"or mapCam.sel=="custom_puzzle"then
|
||||
if customSel[11]>1 then
|
||||
if customSel[7]==5 then
|
||||
TEXT.show(text.ai_fixed,640,360,50,"appear")
|
||||
LOG.print(text.ai_fixed,"warn",color.red)
|
||||
return
|
||||
elseif #preBag>0 then
|
||||
TEXT.show(text.ai_prebag,640,360,50,"appear")
|
||||
LOG.print(text.ai_prebag,"warn",color.red)
|
||||
return
|
||||
end
|
||||
end
|
||||
@@ -1038,9 +1191,9 @@ do--music
|
||||
end
|
||||
function keyDown.music(key)
|
||||
if key=="down"then
|
||||
sceneTemp=sceneTemp%BGM.len+1
|
||||
sceneTemp=min(sceneTemp+1,BGM.len)
|
||||
elseif key=="up"then
|
||||
sceneTemp=(sceneTemp-2)%BGM.len+1
|
||||
sceneTemp=max(sceneTemp-1,1)
|
||||
elseif key=="return"or key=="space"then
|
||||
if BGM.nowPlay~=BGM.list[sceneTemp]then
|
||||
SFX.play("click")
|
||||
@@ -1054,24 +1207,32 @@ do--music
|
||||
end
|
||||
|
||||
function Pnt.music()
|
||||
gc.setColor(1,1,1,.3+sin(Timer()*5)*.2)
|
||||
gc.rectangle("fill",45,98+30*sceneTemp,250,30)
|
||||
gc.setColor(.7,.7,.7)gc.draw(drawableText.musicRoom,20,20)
|
||||
gc.setColor(1,1,1)gc.draw(drawableText.musicRoom,22,23)
|
||||
gc.draw(drawableText.nowPlaying,490,390)
|
||||
gc.setColor(.7,.7,.7)
|
||||
gc.draw(drawableText.musicRoom,20,20)
|
||||
gc.setColor(1,1,1)
|
||||
gc.draw(drawableText.musicRoom,22,23)
|
||||
|
||||
setFont(55)
|
||||
gc.printf(BGM.list[sceneTemp],500,300,500,"right")
|
||||
setFont(30)
|
||||
for i=1,BGM.len do
|
||||
gc.print(BGM.list[i],50,90+30*i)
|
||||
if sceneTemp>1 then
|
||||
gc.printf(BGM.list[sceneTemp-1],500,270,500,"right")
|
||||
end
|
||||
gc.draw(IMG.title,640,310,nil,1.5,nil,206,35)
|
||||
if sceneTemp<BGM.len then
|
||||
gc.printf(BGM.list[sceneTemp+1],500,370,500,"right")
|
||||
end
|
||||
|
||||
gc.draw(IMG.title,500,610,nil,1.5,nil,206,35)
|
||||
if BGM.nowPlay then
|
||||
setFont(45)
|
||||
gc.draw(drawableText.nowPlaying,490-drawableText.nowPlaying:getWidth(),450)
|
||||
setFont(60)
|
||||
gc.setColor(sin(Timer()*.5)*.2+.8,sin(Timer()*.7)*.2+.8,sin(Timer())*.2+.8)
|
||||
mStr(BGM.nowPlay,630,460)
|
||||
gc.print(BGM.nowPlay,500,450)
|
||||
|
||||
local t=-Timer()%2.3/2
|
||||
if t<1 then
|
||||
gc.setColor(1,1,1,t)
|
||||
gc.draw(IMG.title_color,640,310,nil,1.5+.1-.1*t,1.5+.3-.3*t,206,35)
|
||||
gc.draw(IMG.title_color,500,610,nil,1.5+.1-.1*t,1.5+.3-.3*t,206,35)
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1171,14 +1332,14 @@ do--sequence
|
||||
elseif key=="c"and kb.isDown("lctrl","rctrl")or key=="cC"then
|
||||
if #preBag>0 then
|
||||
sys.setClipboardText("Techmino SEQ:"..copySequence())
|
||||
TEXT.show(text.copySuccess,640,225,50,"appear",.5)
|
||||
LOG.print(text.copySuccess,color.green)
|
||||
end
|
||||
elseif key=="v"and kb.isDown("lctrl","rctrl")or key=="cV"then
|
||||
local str=sys.getClipboardText()
|
||||
local p=string.find(str,":")--ptr*
|
||||
if p then str=string.sub(str,p+1)end
|
||||
if not pasteSequence(str)then
|
||||
TEXT.show(text.dataCorrupted,640,225,45,"flicker",.5)
|
||||
LOG.print(text.dataCorrupted,color.red)
|
||||
end
|
||||
elseif #key==1 then
|
||||
local i=(kb.isDown("lshift","lalt","rshift","ralt")and minoKey2 or minoKey)[key]
|
||||
@@ -1339,15 +1500,37 @@ do--draw
|
||||
SCN.swapTo("custom","swipe")
|
||||
elseif key=="escape"then
|
||||
SCN.back()
|
||||
elseif key=="k"then
|
||||
ins(preField,1,{14,14,14,14,14,14,14,14,14,14})
|
||||
preField[21]=nil
|
||||
SFX.play("blip")
|
||||
elseif key=="l"then
|
||||
local F=preField
|
||||
for i=20,1,-1 do
|
||||
for j=1,10 do
|
||||
if F[i][j]<=0 then goto L end
|
||||
end
|
||||
sysFX.newShade(.3,1,1,1,200,660-30*i,300,30)
|
||||
sysFX.newRectRipple(.3,200,660-30*i,300,30)
|
||||
rem(F,i)
|
||||
::L::
|
||||
end
|
||||
if #F~=20 then
|
||||
repeat
|
||||
F[#F+1]={0,0,0,0,0,0,0,0,0,0}
|
||||
until#F==20
|
||||
SFX.play("clear_4",.8)
|
||||
SFX.play("fall",.8)
|
||||
end
|
||||
elseif key=="c"and kb.isDown("lctrl","rctrl")or key=="cC"then
|
||||
sys.setClipboardText("Techmino Field:"..copyBoard())
|
||||
TEXT.show(text.copySuccess,350,360,40,"appear",.5)
|
||||
LOG.print(text.copySuccess,color.green)
|
||||
elseif key=="v"and kb.isDown("lctrl","rctrl")or key=="cV"then
|
||||
local str=sys.getClipboardText()
|
||||
local p=string.find(str,":")--ptr*
|
||||
if p then str=string.sub(str,p+1)end
|
||||
if not pasteBoard(str)then
|
||||
TEXT.show(text.dataCorrupted,350,360,35,"flicker",.5)
|
||||
LOG.print(text.dataCorrupted,color.red)
|
||||
end
|
||||
else
|
||||
pen=penKey[key]or pen
|
||||
@@ -1401,7 +1584,7 @@ do--draw
|
||||
--Confirm reset
|
||||
if sceneTemp.sure>0 then
|
||||
gc.setColor(1,1,1,sceneTemp.sure*.02)
|
||||
gc.draw(drawableText.question,1040,430)
|
||||
gc.draw(drawableText.question,1180,290)
|
||||
end
|
||||
|
||||
--Block name
|
||||
@@ -1751,7 +1934,7 @@ do--play
|
||||
gc.origin()
|
||||
if restartCount>0 then
|
||||
gc.setColor(0,0,0,restartCount*.05)
|
||||
gc.rectangle("fill",0,0,scr.W,scr.H)
|
||||
gc.rectangle("fill",0,0,scr.w,scr.h)
|
||||
end
|
||||
if game.warnLVL>0 then
|
||||
gc.setColor(0,0,0,0)
|
||||
@@ -1886,7 +2069,7 @@ do--pause
|
||||
gc.setColor(.15,.15,.15,_)
|
||||
gc.push("transform")
|
||||
gc.origin()
|
||||
gc.rectangle("fill",0,0,scr.W,scr.H)
|
||||
gc.rectangle("fill",0,0,scr.w,scr.h)
|
||||
gc.pop()
|
||||
|
||||
--Pause Info
|
||||
|
||||
@@ -19,7 +19,7 @@ local S=[=[
|
||||
吃水榴莲 诗情画意 星姐阿夸双推Man暗炎 [*炎]
|
||||
[*Y] aaa222 [**城] cnDD 红桃老给
|
||||
昭庭玲秋 旋树墩 火花工作室 Cosine 沁音的芝麻王
|
||||
SuperJH 天上_飞 *莲 uiro 宇酱
|
||||
SuperJH 天上_飞 uiro 宇酱
|
||||
|
||||
Thanks!!!
|
||||
|
||||
@@ -52,6 +52,11 @@ Future outlook:
|
||||
2048 (with next/deadly mode)
|
||||
mine sweeper
|
||||
tank battle
|
||||
find difference
|
||||
soduku
|
||||
link-link
|
||||
画图智能画笔
|
||||
超高时场地上移
|
||||
改连击攻击
|
||||
场地序列一起复制
|
||||
自定义消行要求(可复制)
|
||||
@@ -67,6 +72,31 @@ Future outlook:
|
||||
task-Z(新AI)
|
||||
更多画面效果 & 一些3D小玩意
|
||||
|
||||
0.10.9: 舒尔特方格 Schulte Grid
|
||||
新内容:
|
||||
舒尔特方格
|
||||
15p可关闭滑动轨迹显示
|
||||
隐型模式回放时方块不会完全隐藏
|
||||
画图界面新增顶起一行和消除满行功能
|
||||
把音乐室装修得更好看了
|
||||
新BGM: Down
|
||||
修改BGM: Rockblock
|
||||
改动:
|
||||
优化15p开关排版和机制
|
||||
不允许使用瞬移操作的模式虚拟按键也不显示
|
||||
单挑评分标准适配三条命
|
||||
调整ai难度
|
||||
部分弹出消息改用LOG.print输出到屏幕左上角
|
||||
缺失字体文件时使用引擎自带字体
|
||||
代码:
|
||||
整理player.lua文件
|
||||
整理scr变量相关代码
|
||||
所有音乐重新转码,BGM文件夹不再追踪
|
||||
LOG.print新增"short"输出方式,仅显示一个时长很短的不重要提示信息
|
||||
修复:
|
||||
CC死后不能正常复活
|
||||
部分背景不能正确显示
|
||||
|
||||
0.10.8: 全局更新 Global Update
|
||||
新内容:
|
||||
单挑模式玩家和电脑各三条生命,剩余生命数显示在场地右下角
|
||||
|
||||
Reference in New Issue
Block a user