114 lines
2.8 KiB
Lua
114 lines
2.8 KiB
Lua
------------------------------------------------------------------------------
|
|
-- Imports
|
|
------------------------------------------------------------------------------
|
|
|
|
local love = require 'love'
|
|
local make_class = require 'src.classes'
|
|
local GameState = require 'src.gstate'
|
|
local Fader = require 'src.fader'
|
|
|
|
|
|
------------------------------------------------------------------------------
|
|
-- Class definitions
|
|
------------------------------------------------------------------------------
|
|
|
|
local Intro = make_class(GameState)
|
|
|
|
|
|
------------------------------------------------------------------------------
|
|
-- Class methods
|
|
------------------------------------------------------------------------------
|
|
|
|
function Intro:_init(name, index)
|
|
GameState._init(self, name, index)
|
|
self.skip = false
|
|
self.fade = Fader()
|
|
self.stage = 0
|
|
self.timer = 0
|
|
end
|
|
|
|
|
|
function Intro:load()
|
|
self.splash = love.graphics.newImage('imgs/splash.png')
|
|
self.author = love.graphics.newImage('imgs/wally.png')
|
|
self.title = love.graphics.newImage('imgs/title.png')
|
|
self.splash_snd = love.audio.newSource('snd/jachiev.wav')
|
|
self.author_snd = love.audio.newSource('snd/alang.wav')
|
|
self.title_snd = love.audio.newSource('snd/ablhole.wav')
|
|
self.valid = true
|
|
|
|
self.splash_snd:play()
|
|
end
|
|
|
|
|
|
function Intro:update(dt)
|
|
local total_time
|
|
|
|
if self.stage == 0 then
|
|
total_time = 4.5
|
|
elseif self.stage == 1 then
|
|
total_time = 3.0
|
|
else
|
|
total_time = 8.0
|
|
end
|
|
|
|
if self.fade.done then
|
|
self.timer = self.timer + dt
|
|
end
|
|
|
|
if self.timer >= total_time then
|
|
self.fade:fade_out(
|
|
function ()
|
|
self.stage = self.stage + 1
|
|
|
|
if self.stage == 1 then
|
|
self.author_snd:play()
|
|
elseif self.stage == 2 then
|
|
self.title_snd:play()
|
|
end
|
|
|
|
self.fade:fade_in()
|
|
end
|
|
)
|
|
self.timer = 0.0
|
|
end
|
|
|
|
self.fade:update(dt)
|
|
|
|
if not self.skip and self.stage < 3 then return self.index else return 2 end
|
|
end
|
|
|
|
|
|
function Intro:draw()
|
|
if self.valid then
|
|
if self.stage == 0 then love.graphics.draw(self.splash, 0, 0)
|
|
elseif self.stage == 1 then love.graphics.draw(self.author, 0, 0)
|
|
elseif self.stage == 2 then love.graphics.draw(self.title, 0, 0) end
|
|
end
|
|
|
|
self.fade:draw()
|
|
end
|
|
|
|
|
|
function Intro:unload()
|
|
self.splash = nil
|
|
self.author = nil
|
|
self.title = nil
|
|
self.splash_snd = nil
|
|
self.author_snd = nil
|
|
self.title_snd = nil
|
|
self.valid = false
|
|
end
|
|
|
|
|
|
function Intro:keypressed(_)
|
|
self.skip = true
|
|
end
|
|
|
|
|
|
------------------------------------------------------------------------------
|
|
-- Module return
|
|
------------------------------------------------------------------------------
|
|
|
|
return Intro
|