scene/mainmenu: prerender banner and borders

This commit is contained in:
Kazhnuz 2019-02-25 19:12:13 +01:00
parent 9fe9865878
commit 5c8886df92
3 changed files with 50 additions and 19 deletions

View File

@ -30,6 +30,8 @@ local Inventory = require "game.inventory"
local binser = require "libs.binser"
Game.gui = require "game.modules.gui"
function Game:new()
self.slot = -1
self.gametime = 0

View File

@ -1,3 +1,27 @@
local gui = {}
function gui.newBorder(id, width, height)
local filename = "assets/sprites/gui/hborder.png"
local texture = love.graphics.newImage(filename)
local w, h = texture:getDimensions()
local quad = love.graphics.newQuad(0, id*32, 48, 32, w, h)
local back = love.graphics.newQuad(0, id*32, 24, 32, w, h)
local canvas = love.graphics.newCanvas(width, height)
local xstart = w - 48
love.graphics.setCanvas( canvas )
for i=1, math.ceil(height / 32) do
love.graphics.draw(texture, quad, xstart, (i-1)*32)
for j=1, math.ceil(height / 32) do
love.graphics.draw(texture, back, xstart - ((j)*24), (i-1)*32)
end
end
love.graphics.setCanvas( )
return canvas
end
return gui

View File

@ -20,12 +20,9 @@ function MainMenu:new()
self.assets:setMusic("assets/music/options.ogg")
self.assets:playMusic()
assets:clearSprites()
assets:addSprite("banner", 480, 34, "gui/")
assets.sprites["banner"]:newAnimation(1, 1, 0.08)
assets:addSprite("hborder", 48, 32, "gui/")
assets.sprites["hborder"]:newAnimation(1, 1, 0.08)
assets.sprites["hborder"]:newAnimation(1, 2, 0.08)
self:createBanner()
self.leftborder = game.gui.newBorder(0, 64+24, 424)
self.rightborder = game.gui.newBorder(1, 64+24, 424)
assets:clearTextBox()
assets:addTextBox("bluetextbox")
@ -51,6 +48,22 @@ function MainMenu:createBackground( filename, emblem_filename )
love.graphics.setCanvas( )
end
function MainMenu:createBanner()
local Banner = love.graphics.newImage( "assets/sprites/gui/banner.png" )
local BannerFont = love.graphics.newImageFont("assets/fonts/large.png", " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ", 1)
local w, h = Banner:getDimensions()
self.banner = love.graphics.newCanvas(w, h)
love.graphics.setCanvas( self.banner )
love.graphics.draw(Banner, 0, 0)
love.graphics.setFont(BannerFont)
love.graphics.printf("IMPERIUM PORCORUM", 0, 6, 480, "center")
love.graphics.setCanvas( )
end
function MainMenu:update(dt)
MainMenu.super.update(self, dt)
lovebird.update()
@ -71,22 +84,14 @@ function MainMenu:mousepressed( x, y, button, istouch )
end
function MainMenu:draw()
love.graphics.draw(self.background)
for i=1,12 do
assets.sprites["hborder"]:draw(1, 16, (i*32)-64+bannerAnim)
assets.sprites["hborder"]:draw(2, 480-16, (i*32)-64-bannerAnim, 0, -1, 1)
end
love.graphics.setColor(170, 0, 0)
love.graphics.rectangle("fill", 0, 0, 16, 272)
love.graphics.setColor(0, 170, 0)
love.graphics.rectangle("fill", 480-16, 0, 16, 272)
utils.graphics.resetColor()
assets.fonts["large"]:set()
assets.sprites["banner"]:draw(1, 0, 8)
love.graphics.printf(self.debugmenu.label, 0, 14, 480, "center")
love.graphics.draw(self.background)
love.graphics.draw(self.leftborder, 0, -32+bannerAnim, 0, 1, 1)
love.graphics.draw(self.rightborder, 424, -bannerAnim, 0, -1, 1)
love.graphics.draw(self.banner, 212, 8, 0, 1, 1, 480/2)
menus:draw()