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" local Background = require "components.background" 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 = { __name = "ModeSelectPage", 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(params) local self = CreateInstance(ModeSelectPage, params, Page) return self end function ModeSelectPage:init() self._idolAnimationState = self.anims.idolAnimation:start() self.audiosamples.bgm:play() end function ModeSelectPage:drawBackground(deltaTime) Background.draw(deltaTime) self._idolAnimationState:render(deltaTime) end function ModeSelectPage:drawForeground(deltaTime) Header.draw() Footer.draw(deltaTime) end return ModeSelectPage