199 lines
4.9 KiB
Lua
199 lines
4.9 KiB
Lua
function sysSFX(s,v)
|
|
if setting.sfx then
|
|
local n=1
|
|
while sfx[s][n]:isPlaying()do
|
|
n=n+1
|
|
if not sfx[s][n]then
|
|
sfx[s][n]=sfx[s][n-1]:clone()
|
|
sfx[s][n]:seek(0)
|
|
end
|
|
end
|
|
sfx[s][n]:setVolume(v or 1)
|
|
sfx[s][n]:play()
|
|
end
|
|
end
|
|
function SFX(s,v)
|
|
if setting.sfx and not P.ai then
|
|
local n=1
|
|
while sfx[s][n]:isPlaying()do
|
|
n=n+1
|
|
if not sfx[s][n]then
|
|
sfx[s][n]=sfx[s][n-1]:clone()
|
|
sfx[s][n]:seek(0)
|
|
break
|
|
end
|
|
end
|
|
sfx[s][n]:setVolume(v or 1)
|
|
sfx[s][n]:play()
|
|
end
|
|
end
|
|
function BGM(s)
|
|
if setting.bgm and bgmPlaying~=s then
|
|
for k,v in pairs(bgm)do v:stop()end
|
|
if s then bgm[s]:play()end
|
|
bgmPlaying=s
|
|
end
|
|
end
|
|
function gotoScene(s,style)
|
|
if not sceneSwaping and s~=scene then
|
|
style=style or"deck"
|
|
sceneSwaping={
|
|
tar=s,style=style,
|
|
time=swap[style][1],mid=swap[style][2],
|
|
draw=swap[style].d
|
|
}
|
|
Buttons.sel=nil
|
|
end
|
|
end
|
|
function startGame(mode)
|
|
--rec=""
|
|
gamemode=mode
|
|
gotoScene("play")
|
|
end
|
|
function back()
|
|
local t=prevMenu[scene]
|
|
if type(t)=="string"then
|
|
gotoScene(t)
|
|
else
|
|
t()
|
|
end
|
|
end
|
|
function loadData()
|
|
userData:open("r")
|
|
--local t=string.splitS(love.math.decompress(userdata,"zlib"),"\r\n")
|
|
local t=string.splitS(userData:read(),"\r\n")
|
|
userData:close()
|
|
for i=1,#t do
|
|
local i=t[i]
|
|
if find(i,"=")then
|
|
local t=sub(i,1,find(i,"=")-1)
|
|
local v=sub(i,find(i,"=")+1)
|
|
if t=="run"or t=="game"or t=="gametime"or t=="piece"or t=="row"or t=="atk"or t=="key"or t=="rotate"or t=="hold"or t=="spin"then
|
|
v=toN(v)if not v or v<0 then v=0 end
|
|
stat[t]=v
|
|
end
|
|
end
|
|
end
|
|
end
|
|
function saveData()
|
|
local t=table.concat({
|
|
stringPack("run=",stat.run),
|
|
stringPack("game=",stat.game),
|
|
stringPack("gametime=",stat.gametime),
|
|
stringPack("piece=",stat.piece),
|
|
stringPack("row=",stat.row),
|
|
stringPack("atk=",stat.atk),
|
|
stringPack("key=",stat.key),
|
|
stringPack("rotate=",stat.rotate),
|
|
stringPack("hold=",stat.hold),
|
|
stringPack("spin=",stat.spin),
|
|
},"\r\n")
|
|
--t=love.math.compress(t,"zlib"):getString()
|
|
userData:open("w")
|
|
userData:write(t)
|
|
userData:close()
|
|
end
|
|
function loadSetting()
|
|
userSetting:open("r")
|
|
--local t=string.splitS(love.math.decompress(userdata,"zlib"),"\r\n")
|
|
local t=string.splitS(userSetting:read(),"\r\n")
|
|
userSetting:close()
|
|
for i=1,#t do
|
|
local i=t[i]
|
|
if find(i,"=")then
|
|
local t=sub(i,1,find(i,"=")-1)
|
|
local v=sub(i,find(i,"=")+1)
|
|
if t=="sfx"or t=="bgm"then
|
|
setting[t]=v=="true"
|
|
elseif t=="fullscreen"then
|
|
setting.fullscreen=v=="true"
|
|
love.window.setFullscreen(setting.fullscreen)
|
|
elseif t=="bgblock"then
|
|
setting.bgblock=v=="true"
|
|
elseif t=="keymap"then
|
|
v=string.splitS(v,"/")
|
|
for i=1,16 do
|
|
local v1=string.splitS(v[i],",")
|
|
for j=1,#v1 do
|
|
setting.keyMap[i][j]=v1[j]
|
|
end
|
|
end
|
|
elseif t=="keylib"then
|
|
v=string.splitS(v,"/")
|
|
for i=1,4 do
|
|
local v1=string.splitS(v[i],",")
|
|
for j=1,#v1 do
|
|
setting.keyLib[i][j]=toN(v1[j])
|
|
end
|
|
for j=1,#setting.keyLib[i]do
|
|
local v=setting.keyLib[i][j]
|
|
if int(v)~=v or v>=9 or v<=0 then
|
|
setting.keyLib[i]={i}
|
|
break
|
|
end
|
|
end
|
|
end
|
|
elseif t=="virtualkey"then
|
|
v=string.splitS(v,"/")
|
|
for i=1,9 do
|
|
virtualkey[i]=string.splitS(v[i],",")
|
|
for j=1,4 do
|
|
virtualkey[i][j]=toN(virtualkey[i][j])
|
|
end
|
|
end
|
|
elseif t=="virtualkeyAlpha"then
|
|
setting.virtualkeyAlpha=int(abs(toN(v)))
|
|
elseif t=="virtualkeyIcon"then
|
|
setting.virtualkeyIcon=v=="true"
|
|
elseif t=="virtualkeySwitch"then
|
|
setting.virtualkeySwitch=v=="true"
|
|
elseif t=="frameMul"then
|
|
v=min(max(toN(v)or 100,0),100)
|
|
setting.frameMul=v
|
|
elseif t=="das"or t=="arr"or t=="sddas"or t=="sdarr"then
|
|
v=toN(v)if not v or v<0 then v=0 end
|
|
setting[t]=int(v)
|
|
elseif t=="ghost"or t=="center"then
|
|
setting[t]=v=="true"
|
|
end
|
|
end
|
|
end
|
|
end
|
|
function saveSetting()
|
|
local vk={}
|
|
for i=1,9 do
|
|
for j=1,4 do
|
|
virtualkey[i][j]=int(virtualkey[i][j]+.5)
|
|
end--Saving a integer is better?
|
|
vk[i]=table.concat(virtualkey[i],",")
|
|
end--pre-pack virtualkey setting
|
|
local map={}
|
|
for i=1,16 do
|
|
map[i]=table.concat(setting.keyMap[i],",")
|
|
end
|
|
local lib={}
|
|
for i=1,4 do
|
|
lib[i]=table.concat(setting.keyLib[i],",")
|
|
end
|
|
local t=table.concat({
|
|
stringPack("sfx=",setting.sfx),
|
|
stringPack("bgm=",setting.bgm),
|
|
stringPack("fullscreen=",setting.fullscreen),
|
|
stringPack("bgblock=",setting.bgblock),
|
|
stringPack("das=",setting.das),
|
|
stringPack("arr=",setting.arr),
|
|
stringPack("sddas=",setting.sddas),
|
|
stringPack("sdarr=",setting.sdarr),
|
|
stringPack("keymap=",table.concat(map,"/")),
|
|
stringPack("keylib=",table.concat(lib,"/")),
|
|
stringPack("virtualkey=",table.concat(vk,"/")),
|
|
stringPack("virtualkeyAlpha=",setting.virtualkeyAlpha),
|
|
stringPack("virtualkeyIcon=",setting.virtualkeyIcon),
|
|
stringPack("virtualkeySwitch=",setting.virtualkeySwitch),
|
|
stringPack("frameMul=",setting.frameMul),
|
|
},"\r\n")
|
|
--t=love.math.compress(t,"zlib"):getString()
|
|
userSetting:open("w")
|
|
userSetting:write(t)
|
|
userSetting:close()
|
|
end |