214 lines
4.3 KiB
Lua
214 lines
4.3 KiB
Lua
local gc=love.graphics
|
|
local tc=love.touch
|
|
local Timer=love.timer.getTime
|
|
|
|
local max,min,sin=math.max,math.min,math.sin
|
|
|
|
function sceneInit.load()
|
|
sceneTemp={
|
|
time=0,--Animation timer
|
|
phase=1,--Loading stage
|
|
cur=1,--Loading timer
|
|
tar=#VOC.name,--Current Loading bar length
|
|
list={
|
|
#VOC.name,
|
|
#BGM.list,
|
|
#SFX.list,
|
|
IMG.getCount(),
|
|
17,--Fontsize 20~100
|
|
SKIN.getCount(),
|
|
#MODES,
|
|
1,
|
|
1,
|
|
},
|
|
skip=false,--If skipped
|
|
|
|
text=gc.newText(getFont(80),"26F Studio"),
|
|
}
|
|
end
|
|
function sceneBack.load()
|
|
love.event.quit()
|
|
end
|
|
|
|
function keyDown.load(k)
|
|
if k=="a"then
|
|
sceneTemp.skip=true
|
|
elseif k=="s"then
|
|
sceneTemp.skip,MARKING=true
|
|
elseif k=="space"then
|
|
sceneTemp.time=max(sceneTemp.time-5,0)
|
|
elseif k=="escape"then
|
|
SCN.back()
|
|
end
|
|
end
|
|
function touchDown.load()
|
|
if #tc.getTouches()==2 then
|
|
sceneTemp.skip=true
|
|
end
|
|
end
|
|
|
|
function Tmr.load()
|
|
local S=sceneTemp
|
|
if S.time==400 then return end
|
|
repeat
|
|
if S.phase==1 then
|
|
VOC.loadOne(S.cur)
|
|
elseif S.phase==2 then
|
|
BGM.loadOne(S.cur)
|
|
elseif S.phase==3 then
|
|
SFX.loadOne(S.cur)
|
|
elseif S.phase==4 then
|
|
IMG.loadOne(S.cur)
|
|
elseif S.phase==5 then
|
|
getFont(15+5*S.cur)
|
|
elseif S.phase==6 then
|
|
SKIN.loadOne(S.cur)
|
|
elseif S.phase==7 then
|
|
local m=MODES[S.cur]--Mode template
|
|
local M=require("parts/modes/"..m.name)--Mode file
|
|
MODES[m.name],MODES[S.cur]=M
|
|
for k,v in next,m do
|
|
M[k]=v
|
|
end
|
|
M.records=FILE.load(m.name)or M.score and{}
|
|
if M.score then
|
|
if RANKS[M.name]==6 then
|
|
RANKS[M.name]=0
|
|
end
|
|
else
|
|
RANKS[M.name]=6
|
|
end
|
|
-- M.icon=gc.newImage("media/image/modeIcon/"..m.icon..".png")
|
|
-- M.icon=gc.newImage("media/image/modeIcon/custom.png")
|
|
elseif S.phase==8 then
|
|
local function C(x,y)
|
|
local _=gc.newCanvas(x,y)
|
|
gc.setCanvas(_)
|
|
return _
|
|
end
|
|
|
|
puzzleMark={}
|
|
gc.setLineWidth(3)
|
|
for i=1,17 do
|
|
puzzleMark[i]=C(30,30)
|
|
local _=SKIN.libColor[i]
|
|
gc.setColor(_[1],_[2],_[3],.6)
|
|
gc.rectangle("line",5,5,20,20)
|
|
gc.rectangle("line",10,10,10,10)
|
|
end
|
|
for i=18,24 do
|
|
puzzleMark[i]=C(30,30)
|
|
gc.setColor(SKIN.libColor[i])
|
|
gc.rectangle("line",7,7,16,16)
|
|
end
|
|
local _=C(30,30)
|
|
gc.setColor(1,1,1)
|
|
gc.line(5,5,25,25)
|
|
gc.line(5,25,25,5)
|
|
puzzleMark[-1]=C(30,30)
|
|
gc.setColor(1,1,1,.9)
|
|
gc.draw(_)
|
|
_:release()
|
|
gc.setCanvas()
|
|
elseif S.phase==9 then
|
|
SKIN.change(SETTING.skinSet)
|
|
STAT.run=STAT.run+1
|
|
LOADED=true
|
|
SFX.play("welcome_sfx")
|
|
VOC.play("welcome_voc")
|
|
httpRequest(TICK.httpREQ_launch,"/tech/api/v1/app/info")
|
|
if ACCOUNT.auth_token then
|
|
local success,data=json.encode({
|
|
email=ACCOUNT.email,
|
|
auth_token=ACCOUNT.auth_token,
|
|
})
|
|
if not success then
|
|
LOG.print(text.jsonError,"warn")
|
|
else
|
|
httpRequest(
|
|
TICK.httpREQ_autoLogin,
|
|
"/tech/api/v1/users",
|
|
"GET",
|
|
{["Content-Type"]="application/json"},
|
|
data
|
|
)
|
|
end
|
|
end
|
|
end
|
|
if S.tar then
|
|
S.cur=S.cur+1
|
|
if S.cur>S.tar then
|
|
S.phase=S.phase+1
|
|
S.cur=1
|
|
S.tar=S.list[S.phase]
|
|
end
|
|
end
|
|
S.time=S.time+1
|
|
if S.time==400 then
|
|
SCN.swapTo("intro")
|
|
return
|
|
end
|
|
until not S.skip
|
|
end
|
|
|
|
function Pnt.load()
|
|
local S=sceneTemp
|
|
|
|
gc.push("transform")
|
|
gc.translate(640,360)
|
|
gc.scale(2)
|
|
|
|
local Y=3250*(sin(-1.5708+min(S.time,260)/260*3.1416)+1)+200
|
|
|
|
--Draw 26F Studio logo
|
|
if S.time>200 then
|
|
gc.push("transform")
|
|
gc.translate(-220,Y-6840)
|
|
|
|
gc.setColor(.4,.4,.4)
|
|
gc.rectangle("fill",0,0,440,260)
|
|
|
|
local T=Timer()
|
|
gc.setColor(COLOR.dCyan)
|
|
mDraw(S.text,220,Y*.2-1204)
|
|
mDraw(S.text,220,-Y*.2+1476)
|
|
|
|
gc.setColor(COLOR.cyan)
|
|
mDraw(S.text,220+4*sin(T*10),136+4*sin(T*6))
|
|
mDraw(S.text,220+4*sin(T*12),136+4*sin(T*8))
|
|
|
|
gc.setColor(COLOR.dCyan)
|
|
mDraw(S.text,219,137)
|
|
mDraw(S.text,219,135)
|
|
mDraw(S.text,221,137)
|
|
mDraw(S.text,221,135)
|
|
|
|
gc.setColor(.2,.2,.2)
|
|
mDraw(S.text,220,136)
|
|
|
|
gc.pop()
|
|
end
|
|
|
|
--Draw floors
|
|
setFont(50)
|
|
gc.setLineWidth(4)
|
|
for i=1,27 do
|
|
if i<26 then
|
|
local r,g,b=COLOR.rainbow(i+3.5)
|
|
gc.setColor(r*.26,g*.26,b*.26)
|
|
gc.rectangle("fill",-220,Y-260*i-80,440,260)
|
|
gc.setColor(r*1.6,g*1.6,b*1.6)
|
|
gc.printf(i.."F",100,Y-260*i-70,100,"right")
|
|
gc.setColor(1,1,1)
|
|
gc.rectangle("line",-160,Y-260*i,80,50)
|
|
end
|
|
gc.line(-220,Y-260*i+180,220,Y-260*i+180)
|
|
end
|
|
|
|
--Draw side line
|
|
gc.setColor(1,1,1)
|
|
gc.line(-220,Y-80,-220,Y-6840)
|
|
gc.line(220,Y-80,220,Y-6840)
|
|
|
|
gc.pop()
|
|
end |