summaryrefslogtreecommitdiffhomepage
path: root/not/MenuBackground.lua
blob: 83b409cbb34e38a22cc2b5ffb10c03329e311d20 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
--- `MenuBackground`
-- Represented as space background with blinking stars and moving asteroids.
-- It might be too specific, but whatever. It is still better than hardcoded background in `Menu` class.
MenuBackground = require "not.Element":extends()

MenuBackground.BASE_STARS_DELAY = .8
MenuBackground.QUAD_STARS = {
	love.graphics.newQuad(  0, 0, 320, 200, 640,200),
	love.graphics.newQuad(320, 0, 320, 200, 640,200)
}

function MenuBackground:new (parent)
	MenuBackground.__super.new(parent)
	self.starsFrame = 1
	self.starsDelay = self.BASE_STARS_DELAY
	self.asteroidsBounce = 0
	-- Load statically.
	if MenuBackground.IMAGE_BACKGROUND == nil then
		MenuBackground.IMAGE_BACKGROUND = love.graphics.newImage("assets/backgrounds/menu.png")
		MenuBackground.IMAGE_ASTEROIDS = love.graphics.newImage("assets/asteroids.png")
		MenuBackground.IMAGE_STARS = love.graphics.newImage("assets/stars.png")
	end
end

function MenuBackground:update (dt)
	self.asteroidsBounce = self.asteroidsBounce + dt*0.1
	if self.asteroidsBounce > 2 then
		self.asteroidsBounce = self.asteroidsBounce - 2
	end
	self.starsDelay = self.starsDelay - dt
	if self.starsDelay < 0 then
		self.starsDelay = self.starsDelay + self.BASE_STARS_DELAY
		if self.starsFrame == 2 then
			self.starsFrame = 1
		else
			self.starsFrame = 2
		end
	end
end

function MenuBackground:draw ()
	local scale = self.scale
	local scaler = getRealScale()
	love.graphics.draw(self.IMAGE_BACKGROUND, 0, 0, 0, scaler, scaler)
	love.graphics.draw(self.IMAGE_STARS, self.QUAD_STARS[self.starsFrame], 0, 0, 0, scaler, scaler)
	love.graphics.draw(self.IMAGE_ASTEROIDS, 0, math.floor(64+math.sin(self.asteroidsBounce*math.pi)*4)*scaler, 0, scaler, scaler)
end

return MenuBackground