From 5c93295a41ef74158fa97ff9fa3cda3cf110a9c5 Mon Sep 17 00:00:00 2001 From: Kazhnuz Date: Sun, 16 Aug 2020 11:17:13 +0200 Subject: [PATCH] feat: add parallax background to title screen --- .../scenes/menus/titlescreen/init.lua | 35 +++++++++++++++---- 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/sonic-radiance.love/scenes/menus/titlescreen/init.lua b/sonic-radiance.love/scenes/menus/titlescreen/init.lua index 10f8e40..e18040e 100644 --- a/sonic-radiance.love/scenes/menus/titlescreen/init.lua +++ b/sonic-radiance.love/scenes/menus/titlescreen/init.lua @@ -26,28 +26,33 @@ local TitleScreen = Scene:extend() local gui = require "game.modules.gui" local TweenManager = require "game.modules.tweenmanager" +local Background = require "game.modules.drawing.parallaxBackground" + +local zoneList = require("datas.gamedata.maps.shoot.zones") function TitleScreen:new() TitleScreen.super.new(self) self.borders = gui.newBorder(424, 30, 8) - self.assets:addImage("background", "assets/backgrounds/titlescreen.png") self.assets:addImage("sonic", "assets/artworks/titlescreen_sonic.png") self.assets:addImage("logo", "assets/artworks/logo.png") - self.assets:addImage("pressStart", "assets/gui/strings/press_start.png") + self.assets:addImageFont("menu", "assets/gui/fonts/SA2font") self.tweens = TweenManager(self) + self:initBackground() self.borderY = 0 self.logoX = 270 self.sonicX = -180 + self.darkenOpacity = 1 self.flashOpacity = 0 self.canShowPressStart = false self.showPressStart = true self.showPressStartTimer = 0.5 - self.tweens:newTween(0.2, 0.5, {borderY = 25}, "inOutQuart") + self.tweens:newTween(0.2, 0.5, {borderY = 30}, "inOutQuart") + self.tweens:newTween(0.5, 0.4, {darkenOpacity = 0}, "outExpo") self.tweens:newTween(0.7, 0.6, {logoX = 0}, "inOutQuart") self.tweens:newTween(0.7, 0.6, {sonicX = 0}, "inOutQuart") self.tweens:newTween(1.3, 0.03, {flashOpacity = 1}, "inQuart") @@ -56,8 +61,22 @@ function TitleScreen:new() self:register() end +function TitleScreen:initBackground() + local randomZoneList = {} + for k,v in pairs(zoneList) do + table.insert(randomZoneList, k) + end + local id = math.ceil(love.math.random() * #randomZoneList) + self.zone = randomZoneList[id] + + self.background = Background(self, 5, 1, self.zone) + + self.x = 0 +end + function TitleScreen:update(dt) self.tweens:update(dt) + self.x = ((self.x + 45*dt)) if (self.canShowPressStart) then self.showPressStartTimer = self.showPressStartTimer - dt if self.showPressStartTimer < 0 then @@ -69,7 +88,11 @@ end function TitleScreen:draw() utils.graphics.resetColor() - self.assets:drawImage("background", 0, 0) + self.background:drawParallax(self.x, -self.background:getStartY(), 424, 240) + + love.graphics.setColor(0, 0, 0, self.darkenOpacity) + love.graphics.rectangle("fill", 0, 0, 424, 240) + utils.graphics.resetColor( ) love.graphics.draw(self.borders, 0, self.borderY, 0, 1, -1) love.graphics.draw(self.borders, 424, 240 - self.borderY, 0, -1, 1) @@ -78,8 +101,8 @@ function TitleScreen:draw() self.assets:drawImage("logo", 290 + self.logoX, 60, 0, 1, 1, 150, 71) if (self.canShowPressStart) and (self.showPressStart) then - local w, h = self.assets.images["pressStart"]:getDimensions() - self.assets:drawImage("pressStart", 424/1.5, 240/1.5, 0, 1, 1, w/2, h/2) + local w = self.assets.fonts["menu"]:getWidth("PRESS START") + self.assets.fonts["menu"]:print("PRESS START", 424/1.5, 240/1.5, "center", 0, 1, 1) end love.graphics.setColor(1, 1, 1, self.flashOpacity)