ExperimentalGear/scripts/titlescreen/pages/modeselect/modeselectpage.lua

61 lines
2.1 KiB
Lua

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 Footer = require "components.footer"
local Header = require "components.headers.modeSelectHeader"
local crew = game.GetSkinSetting("single_idol")
---@class ModeSelectPage: Page
---@field _idolAnimationState AnimationState
local 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(o)
local this = CreateInstance(ModeSelectPage, o, Page)
this._idolAnimationState = this.anims.idolAnimation:start()
this.audiosamples.bgm:play()
return this
end
function ModeSelectPage:drawBackground(deltaTime)
self._idolAnimationState:render(deltaTime)
end
function ModeSelectPage:drawForeground(deltaTime)
Header.draw()
Footer.draw(deltaTime)
end
return ModeSelectPage