Added text buttons and button groups.
This commit is contained in:
@@ -9,7 +9,9 @@ local GameState = require 'src.gstates.gstate'
|
||||
local Fader = require 'src.graphics.fader'
|
||||
local Sprite = require 'src.graphics.sprite'
|
||||
local Cursor = require 'src.ui.cursor'
|
||||
local Font = require 'src.ui.font'
|
||||
local SoundEffect = require 'src.sound.sfx'
|
||||
local ButtonGroup = require 'src.ui.btngrp'
|
||||
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
@@ -25,11 +27,20 @@ local MainMenu = make_class(GameState)
|
||||
|
||||
function MainMenu:_init(name, index)
|
||||
GameState._init(self, name, index)
|
||||
self.skip = false
|
||||
self.fade = Fader()
|
||||
self.next_state = self.index
|
||||
self.fade = Fader()
|
||||
|
||||
-- Create sprites and buttons.
|
||||
self.background = Sprite('imgs/cpu.png')
|
||||
self.background = Sprite('imgs/concb03.png')
|
||||
self.btn_font = Font('fonts/Concrete.ttf')
|
||||
|
||||
-- Create UI elements.
|
||||
self.btns = ButtonGroup(15, 15)
|
||||
self.btns:add_text_button('New Game', self.btn_font)
|
||||
self.btns:add_text_button('Load Game', self.btn_font)
|
||||
self.btns:add_text_button('Options', self.btn_font)
|
||||
self.btns:add_text_button('Help & Story', self.btn_font)
|
||||
self.btns:add_text_button('Quit', self.btn_font, function() self.next_state = -1 end)
|
||||
|
||||
-- Create a mouse cursor object at the current mouse position.
|
||||
local mx, my = love.mouse.getPosition()
|
||||
@@ -39,9 +50,11 @@ function MainMenu:_init(name, index)
|
||||
self.bgm = SoundEffect('bgm/eskisky.wav')
|
||||
|
||||
-- Register all assets.
|
||||
assets:register(self.name, self.btn_font)
|
||||
assets:register(self.name, self.background)
|
||||
assets:register(self.name, self.cursor)
|
||||
assets:register(self.name, self.bgm)
|
||||
assets:register(self.name, self.btns)
|
||||
end
|
||||
|
||||
|
||||
@@ -51,18 +64,18 @@ function MainMenu:update(dt)
|
||||
|
||||
-- Update the fader.
|
||||
self.fade:update(dt)
|
||||
|
||||
-- Move on to the next game state if the user skipped the intro or all stages are complete.
|
||||
if not self.skip then return self.index else return -1 end
|
||||
else
|
||||
assets:update(self.name)
|
||||
end
|
||||
|
||||
return self.next_state
|
||||
end
|
||||
|
||||
|
||||
function MainMenu:draw()
|
||||
if assets:done(self.name) then
|
||||
self.background:draw()
|
||||
self.btns:draw()
|
||||
self.cursor:draw()
|
||||
self.fade:draw()
|
||||
else
|
||||
@@ -71,19 +84,26 @@ function MainMenu:draw()
|
||||
end
|
||||
|
||||
|
||||
function MainMenu:keypressed(key)
|
||||
-- Skip the intro on any key press.
|
||||
if key == "escape" then
|
||||
self.skip = true
|
||||
end
|
||||
function MainMenu:keypressed(_)
|
||||
end
|
||||
|
||||
|
||||
function MainMenu:mousemoved(x, y, dx, dy)
|
||||
self.btns:mousemoved(x, y, dx, dy)
|
||||
self.cursor:mousemoved(x, y, dx, dy)
|
||||
end
|
||||
|
||||
|
||||
function MainMenu:mousepressed(x, y, btn)
|
||||
self.btns:mousepressed(x, y, btn)
|
||||
end
|
||||
|
||||
|
||||
function MainMenu:mousereleased(x, y, btn)
|
||||
self.btns:mousereleased(x, y, btn)
|
||||
end
|
||||
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
-- Module return
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user