231 lines
7.1 KiB
Lua
231 lines
7.1 KiB
Lua
local scene={}
|
|
|
|
local verName=("%s %s %s"):format(SYSTEM,VERSION.string,VERSION.name)
|
|
local tipLength=760
|
|
local tip=GC.newText(getFont(30),"")
|
|
local scrollX-- Tip scroll position
|
|
local flash=0
|
|
|
|
local widgetX0={
|
|
-10,-10,-10,-10,
|
|
1290,1290,1290,1290,
|
|
}
|
|
local enterConsole=coroutine.wrap(function()
|
|
while true do
|
|
Snd('bell',.6,'A4',.7,'E5',1,MATH.coin('A5','B5'))coroutine.yield()
|
|
Snd('bell',.6,'A4',.7,'F5',1,MATH.coin('C6','D6'))coroutine.yield()
|
|
Snd('bell',.6,'A4',.7,'G5',1,MATH.coin('E6','G6'))coroutine.yield()
|
|
Snd('bell',.6,'A4',.7,'A5',1,'A6')SFX.play('ren_mega')SCN.go('app_console')coroutine.yield()
|
|
end
|
|
end)
|
|
function scene.enter()
|
|
if THEME.cur=='halloween' then
|
|
TASK.new(function()
|
|
TEST.yieldT(.26)
|
|
while SCN.cur=='main' do
|
|
flash=.355
|
|
SFX.play('clear_'..math.random(4,6),1,math.random()*2-1,-9-math.random()*3)
|
|
TEST.yieldT(.626+math.random()*6.26)
|
|
end
|
|
end)
|
|
end
|
|
BG.set()
|
|
|
|
-- Set tip
|
|
tip:set(text.getTip())
|
|
scrollX=tipLength
|
|
|
|
-- Set quick-play-button text
|
|
scene.resize()
|
|
|
|
-- Create demo player
|
|
destroyPlayers()
|
|
GAME.modeEnv=NONE
|
|
GAME.setting={}
|
|
PLY.newDemoPlayer(1)
|
|
PLAYERS[1]:setPosition(520,140,.8)
|
|
|
|
DiscordRPC.update("In Main Menu")
|
|
end
|
|
|
|
function scene.resize()
|
|
local qpModeName=text.modes[STAT.lastPlay] and text.modes[STAT.lastPlay][1] or "["..STAT.lastPlay.."]"
|
|
scene.widgetList[2]:setObject(text.WidgetText.main.qplay..qpModeName)
|
|
end
|
|
|
|
function scene.mouseDown(x,y)
|
|
if x>=400 and x<=880 and y>=10 and y<=110 then
|
|
enterConsole()
|
|
end
|
|
end
|
|
scene.touchDown=scene.mouseDown
|
|
local function _testButton(n)
|
|
if WIDGET.isFocus(scene.widgetList[n]) then
|
|
return true
|
|
else
|
|
WIDGET.focus(scene.widgetList[n])
|
|
end
|
|
end
|
|
function scene.keyDown(key,isRep)
|
|
if isRep then return true end
|
|
if key=='1' then
|
|
if _testButton(1) then
|
|
SCN.go('mode')
|
|
end
|
|
elseif key=='q' then
|
|
if _testButton(2) then
|
|
loadGame(STAT.lastPlay,true)
|
|
end
|
|
elseif key=='a' then
|
|
if _testButton(3) then
|
|
NET.login(true)
|
|
end
|
|
elseif key=='z' then
|
|
if _testButton(4) then
|
|
SCN.go('customGame')
|
|
end
|
|
elseif key=='-' then
|
|
if _testButton(5) then
|
|
SCN.go('setting_game')
|
|
end
|
|
elseif key=='p' then
|
|
if _testButton(6) then
|
|
SCN.go('stat')
|
|
end
|
|
elseif key=='l' then
|
|
if _testButton(7) then
|
|
SCN.go('dict')
|
|
end
|
|
elseif key==',' then
|
|
if _testButton(8) then
|
|
SCN.go('replays')
|
|
end
|
|
elseif key=='2' then
|
|
if _testButton(9) then
|
|
SCN.go('music')
|
|
end
|
|
elseif key=='3' then
|
|
if _testButton(10) then
|
|
NET.getNotice()
|
|
end
|
|
elseif key=='4' then
|
|
if _testButton(11) then
|
|
SCN.go('lang')
|
|
end
|
|
elseif key=='x' then
|
|
if _testButton(12) then
|
|
SCN.go('about')
|
|
end
|
|
elseif key=='m' then
|
|
if _testButton(13) then
|
|
SCN.go('textReader',nil,FILE.load('parts/language/manual_'..(SETTING.locale:find'zh' and 'zh' or SETTING.locale:find'ja' and 'ja' or SETTING.locale:find'vi' and 'vi' or 'en')..'.txt','-string'):split('\n'),15,'cubes')
|
|
end
|
|
elseif key=='c' then
|
|
enterConsole()
|
|
elseif key=='escape' then
|
|
if tryBack() then
|
|
VOC.play('bye')
|
|
SCN.back()
|
|
end
|
|
else
|
|
return true
|
|
end
|
|
end
|
|
|
|
function scene.update(dt)
|
|
if dt>.26 then return end
|
|
if flash>0 then flash=flash-dt*.6 end
|
|
PLAYERS[1]:update(dt)
|
|
scrollX=scrollX-162*dt
|
|
if scrollX<-tip:getWidth() then
|
|
scrollX=tipLength
|
|
tip:set(text.getTip())
|
|
end
|
|
local L=scene.widgetList
|
|
for i=1,8 do
|
|
L[i].x=MATH.expApproach(L[i].x,(widgetX0[i]-400+(WIDGET.isFocus(L[i]) and (i<5 and 100 or -100) or 0)),dt*9)
|
|
end
|
|
end
|
|
|
|
local function _tipStencil()
|
|
GC.rectangle('fill',0,0,tipLength,42)
|
|
end
|
|
function scene.draw()
|
|
-- Version
|
|
setFont(20)
|
|
GC.setColor(.6,.6,.6)
|
|
GC.mStr(verName,640,110)
|
|
|
|
-- Title
|
|
GC.setColor(1,1,1)
|
|
mDraw(TEXTURE.title_color,640,60,nil,.43)
|
|
|
|
-- Tip
|
|
GC.setColor(COLOR.Z)
|
|
GC.push('transform')
|
|
GC.translate(260,650)
|
|
GC.setLineWidth(2)
|
|
GC.rectangle('line',0,0,tipLength,42,3)
|
|
GC.stencil(_tipStencil)
|
|
GC.setStencilTest('equal',1)
|
|
GC.draw(tip,0+scrollX,0)
|
|
GC.setColor(1,1,1,.2)
|
|
GC.setStencilTest()
|
|
GC.pop()
|
|
|
|
if THEME.cur=='halloween' then
|
|
GC.setColor(1,1,1)
|
|
GC.mDraw(TEXTURE.spiderweb,480,50,.26,1.26)
|
|
GC.mDraw(TEXTURE.spiderweb,816,94.2,.62)
|
|
|
|
GC.setColor(COLOR.O)
|
|
GC.mDraw(TEXTURE.miniBlock[1],1126,90,-.16,40)
|
|
GC.setColor(COLOR.lO)
|
|
GC.setLineWidth(12)
|
|
GC.line(1037,25,1032,101)
|
|
GC.line(1099,16,1082,93)
|
|
GC.line(1151,16,1113,169)
|
|
GC.line(1196,83,1184,159)
|
|
GC.line(1244,101,1235,150)
|
|
GC.push('transform')
|
|
GC.translate(1126,90)
|
|
GC.setColor(.1,.5,.1)
|
|
GC.setLineWidth(16)
|
|
GC.line(20,-30,48,-60,70,-65)
|
|
GC.rotate(.162)
|
|
GC.setColor(COLOR.D)
|
|
FONT.set(20)
|
|
GC.mStr(text.pumpkin,0,-13)
|
|
GC.pop()
|
|
end
|
|
|
|
-- Player
|
|
PLAYERS[1]:draw()
|
|
|
|
if flash>0 then
|
|
GC.replaceTransform(SCR.origin)
|
|
GC.setColor(1,1,1,flash)
|
|
GC.rectangle('fill',0,0,SCR.w,SCR.h)
|
|
GC.replaceTransform(SCR.xOy)
|
|
end
|
|
end
|
|
|
|
scene.widgetList={
|
|
WIDGET.newButton{name='offline',x=-1200,y=210,w=800,h=100,color='lR',font=45,align='R',edge=30,code=pressKey'1'},
|
|
WIDGET.newButton{name='qplay', x=-1200,y=330,w=800,h=100,color='lM',font=40,align='R',edge=30,code=pressKey'q'},
|
|
WIDGET.newButton{name='online', x=-1200,y=450,w=800,h=100,color='lV',font=45,align='R',edge=30,code=pressKey'a'},
|
|
WIDGET.newButton{name='custom', x=-1200,y=570,w=800,h=100,color='lS',font=45,align='R',edge=30,code=pressKey'z'},
|
|
|
|
WIDGET.newButton{name='setting',x=2480,y=210,w=800,h=100, color='lO',font=40,align='L',edge=30,code=pressKey'-'},
|
|
WIDGET.newButton{name='stat', x=2480,y=330,w=800,h=100, color='lL',font=40,align='L',edge=30,code=pressKey'p'},
|
|
WIDGET.newButton{name='dict', x=2480,y=450,w=800,h=100, color='lG',font=40,align='L',edge=30,code=pressKey'l'},
|
|
WIDGET.newButton{name='replays',x=2480,y=570,w=800,h=100, color='lC',font=40,align='L',edge=30,code=pressKey','},
|
|
|
|
WIDGET.newButton{name='music', x=90,y=80,w=100, color='lY',code=pressKey'2',font=70,fText=CHAR.icon.music},
|
|
WIDGET.newButton{name='notice', x=210,y=80,w=100, color='lG',code=pressKey'3',font=70,fText=CHAR.key.winMenu},
|
|
WIDGET.newButton{name='lang', x=330,y=80,w=100, color='lN',code=pressKey'4',font=70,fText=CHAR.icon.language},
|
|
WIDGET.newButton{name='about', x=-110,y=670,w=600,h=70, color='lB',align='R',edge=20,code=pressKey'x',font=50,fText=CHAR.icon.info},
|
|
WIDGET.newButton{name='manual', x=1390,y=670,w=600,h=70, color='lR',align='L',edge=20,code=pressKey'm',font=50,fText=CHAR.icon.help},
|
|
}
|
|
return scene
|