Files
Techmino/parts/scenes/setting_control.lua
2024-09-26 02:29:24 +08:00

116 lines
3.9 KiB
Lua

local gc=love.graphics
local scene={}
local das,arr
local pos,dir,wait
function scene.enter()
das,arr=SETTING.das,SETTING.arr
pos,dir,wait=0,1,30
BG.set('bg1')
DiscordRPC.update("Tweaking control settings")
end
local trigFrame=0
function scene.update(dt)
trigFrame=trigFrame+dt*60
while trigFrame>=1 do
trigFrame=trigFrame-1
if wait>0 then
wait=wait-1
if wait==0 then
pos=pos+(das==0 and 2 or 1)*dir
else
return
end
end
if das>0 then
das=das-1
if das==0 then
if arr==0 then
pos=pos+7*dir
das=SETTING.das+1
arr=SETTING.arr
dir=-dir
wait=26
else
pos=pos+dir
end
end
else
arr=arr-1
if arr==0 then
pos=pos+dir
arr=SETTING.arr
elseif arr==-1 then
pos=dir>0 and 8 or 0
arr=SETTING.arr
end
if pos%8==0 then
dir=-dir
wait=26
das=SETTING.das
end
end
end
end
function scene.draw()
gc.translate(550,600)
-- Testing grid line
gc.setLineWidth(4)
gc.setColor(1,1,1,.4)
gc.line(0,0,400,0)
gc.line(0,40,400,40)
gc.line(0,80,400,80)
for x=40,360,40 do
gc.line(x,-10,x,90)
end
gc.setColor(COLOR.Z)
gc.line(0,-10,0,90)
gc.line(400,-10,400,90)
-- O mino animation
gc.setColor(1,1,1)
local O=SKIN.lib[SETTING.skinSet][SETTING.skin[6]]
gc.draw(O,40*pos,0,nil,40/30)
gc.draw(O,40*pos,40,nil,40/30)
gc.draw(O,40*pos+40,0,nil,40/30)
gc.draw(O,40*pos+40,40,nil,40/30)
gc.translate(-550,-600)
end
local function _sliderShow(S)
S=S.disp()
return S.."F "..math.floor(S*16.67).."ms"
end
scene.widgetList={
WIDGET.newText{name='title', x=100, y=50,lim=626,font=70,align='L'},
WIDGET.newText{name='preview', x=520, y=610,font=40,align='R'},
WIDGET.newSlider{name='das', x=250, y=180,lim=230,w=600,axis={0,20,1},disp=SETval('das'), show=_sliderShow,code=SETsto('das')},
WIDGET.newSlider{name='arr', x=250, y=240,lim=230,w=525,axis={0,15,1},disp=SETval('arr'), show=_sliderShow,code=SETsto('arr')},
WIDGET.newSlider{name='sddas', x=250, y=300,lim=230,w=350,axis={0,10,1},disp=SETval('sddas'), show=_sliderShow,code=SETsto('sddas')},
WIDGET.newSlider{name='sdarr', x=250, y=360,lim=230,w=140,axis={0,4,1}, disp=SETval('sdarr'), show=_sliderShow,code=SETsto('sdarr')},
WIDGET.newSlider{name='dascut', x=250, y=420,lim=230,w=600,axis={0,20,1},disp=SETval('dascut'), show=_sliderShow,code=SETsto('dascut')},
WIDGET.newSlider{name='irscut', x=250, y=480,lim=230,w=600,axis={0,20,1},disp=SETval('irscut'), show=_sliderShow,code=SETsto('irscut')},
WIDGET.newSlider{name='dropcut',x=250, y=540,lim=230,w=300,axis={0,10,1},disp=SETval('dropcut'),show=_sliderShow,code=SETsto('dropcut')},
WIDGET.newSwitch{name='ihs', x=1100, y=240,lim=300, disp=SETval('ihs'), code=SETrev('ihs')},
WIDGET.newSwitch{name='irs', x=1100, y=300,lim=300, disp=SETval('irs'), code=SETrev('irs')},
WIDGET.newSwitch{name='ims', x=1100, y=360,lim=300, disp=SETval('ims'), code=SETrev('ims')},
WIDGET.newButton{name='reset', x=160, y=640,w=200,h=100,color='lR',font=40,
code=function()
local _=SETTING
_.das,_.arr,_.dascut=10,2,0
_.sddas,_.sdarr=0,2
_.ihs,_.irs,_.ims,_.irscut=false,false,false,6
end},
WIDGET.newButton{name='back', x=1140, y=640,w=170,h=80,sound='back',font=60,fText=CHAR.icon.back,code=backScene},
}
return scene