2022-04-28 00:21:10 +02:00
|
|
|
require "common.class"
|
|
|
|
local Dim = require "common.dimensions"
|
|
|
|
local Lang = require "language.call"
|
|
|
|
local AudioSample = require "api.audiosample"
|
|
|
|
local Animation = require "api.animation"
|
|
|
|
local Page = require "api.page.page"
|
|
|
|
|
2022-05-04 03:34:37 +02:00
|
|
|
local Background = require "components.background"
|
2022-04-28 00:21:10 +02:00
|
|
|
local Footer = require "components.footer"
|
|
|
|
local Header = require "components.headers.modeSelectHeader"
|
|
|
|
|
|
|
|
local crew = game.GetSkinSetting("single_idol")
|
|
|
|
|
|
|
|
---@class ModeSelectPage: Page
|
|
|
|
---@field _idolAnimationState AnimationState
|
|
|
|
local ModeSelectPage = {
|
2022-05-04 03:34:37 +02:00
|
|
|
__tostring = function () return "ModeSelectPage" end,
|
2022-04-28 00:21:10 +02:00
|
|
|
images = {
|
|
|
|
selectorBgImage = gfx.CreateSkinImage("titlescreen/selector_bg.png", 0),
|
|
|
|
selectorArrowsImage = gfx.CreateSkinImage("titlescreen/selector_arrows.png", 0),
|
|
|
|
unselectedButtonImage = gfx.CreateSkinImage("titlescreen/unselected_button.png", 0),
|
|
|
|
selectedButtonBgImage = gfx.CreateSkinImage("titlescreen/selected_button_bg.png", 0),
|
|
|
|
selectedButtonOverImage = gfx.CreateSkinImage("titlescreen/selected_button_over.png", 0)
|
|
|
|
},
|
|
|
|
anims = {
|
|
|
|
idolAnimation = Animation.new("crew/anim/" .. crew, {
|
|
|
|
fps = 30, loop = true,
|
|
|
|
centered = true, x = Dim.design.width / 2, y = Dim.design.height / 2,
|
|
|
|
width = Dim.design.width, height = Dim.design.height,
|
|
|
|
})
|
|
|
|
},
|
|
|
|
audiosamples = {
|
|
|
|
bgm = AudioSample.new{path = "titlescreen/bgm.wav", exclusive = true, loop = true},
|
|
|
|
cursorChange = AudioSample.new{path = "titlescreen/cursor_change.wav"},
|
|
|
|
cursorSelect = AudioSample.new{path = "titlescreen/cursor_select.wav"}
|
|
|
|
},
|
|
|
|
labels = {
|
|
|
|
selectorDescriptionLabel = gfx.CreateLabel(Lang.Start.desc, 22, 0),
|
|
|
|
selectorLegendScrollLabel = gfx.CreateLabel(Lang.Start.sc, 20, 0),
|
|
|
|
selectorLegendSelectLabel = gfx.CreateLabel(Lang.Start.st3, 20, 0)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function ModeSelectPage.new(o)
|
2022-05-04 03:34:37 +02:00
|
|
|
local self = CreateInstance(ModeSelectPage, o, Page)
|
2022-04-28 00:21:10 +02:00
|
|
|
|
2022-05-04 03:34:37 +02:00
|
|
|
return self
|
|
|
|
end
|
2022-04-28 00:21:10 +02:00
|
|
|
|
2022-05-04 03:34:37 +02:00
|
|
|
function ModeSelectPage:init()
|
|
|
|
self._idolAnimationState = self.anims.idolAnimation:start()
|
|
|
|
self.audiosamples.bgm:play()
|
2022-04-28 00:21:10 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
function ModeSelectPage:drawBackground(deltaTime)
|
2022-05-04 03:34:37 +02:00
|
|
|
Background.draw(deltaTime)
|
2022-04-28 00:21:10 +02:00
|
|
|
self._idolAnimationState:render(deltaTime)
|
|
|
|
end
|
|
|
|
|
|
|
|
function ModeSelectPage:drawForeground(deltaTime)
|
|
|
|
Header.draw()
|
|
|
|
Footer.draw(deltaTime)
|
|
|
|
end
|
|
|
|
|
|
|
|
return ModeSelectPage
|