Draw MultiMenu with Font
This commit is contained in:
parent
4bbdb426ea
commit
eb159db4b5
1
font.lua
1
font.lua
|
@ -1,5 +1,6 @@
|
||||||
local Atlas = require "atlas"
|
local Atlas = require "atlas"
|
||||||
|
|
||||||
|
---@class Font
|
||||||
---A set of character sprites that can be drawn as strings.
|
---A set of character sprites that can be drawn as strings.
|
||||||
local Font = Atlas:extend()
|
local Font = Atlas:extend()
|
||||||
|
|
||||||
|
|
3
main.lua
3
main.lua
|
@ -14,8 +14,6 @@ local pushOpts = {
|
||||||
push:setupScreen(gameWidth, gameHeight, windowWidth, windowHeight, pushOpts)
|
push:setupScreen(gameWidth, gameHeight, windowWidth, windowHeight, pushOpts)
|
||||||
|
|
||||||
function love.load()
|
function love.load()
|
||||||
Menu = MultiMenu({ "Fight", "Use", "Pkmn", "Flee" })
|
|
||||||
|
|
||||||
local blockyFont = love.graphics.newImage("assets/small-blocky-font.png")
|
local blockyFont = love.graphics.newImage("assets/small-blocky-font.png")
|
||||||
|
|
||||||
local blockFontChars = {
|
local blockFontChars = {
|
||||||
|
@ -28,6 +26,7 @@ function love.load()
|
||||||
}
|
}
|
||||||
|
|
||||||
BlockyFont = Font(blockyFont, 8, 8, blockFontChars)
|
BlockyFont = Font(blockyFont, 8, 8, blockFontChars)
|
||||||
|
Menu = MultiMenu(BlockyFont, { "Fight", "Use", "Pkmn", "Flee" })
|
||||||
|
|
||||||
local leafRanger = love.graphics.newImage("assets/leaf-ranger.png")
|
local leafRanger = love.graphics.newImage("assets/leaf-ranger.png")
|
||||||
|
|
||||||
|
|
|
@ -3,32 +3,37 @@ local Object = require "lib/classic"
|
||||||
---@class MultiMenu
|
---@class MultiMenu
|
||||||
local MultiMenu = Object:extend()
|
local MultiMenu = Object:extend()
|
||||||
|
|
||||||
function MultiMenu:new(options)
|
---Creates a new multimenu.
|
||||||
|
---@param font Font
|
||||||
|
---@param options table
|
||||||
|
function MultiMenu:new(font, options)
|
||||||
|
self.font = font
|
||||||
self.options = options
|
self.options = options
|
||||||
self.selected = 1
|
self.selected = 1
|
||||||
end
|
end
|
||||||
|
|
||||||
function MultiMenu:draw()
|
function MultiMenu:draw()
|
||||||
-- option drawing constants
|
-- option drawing constants
|
||||||
local x = 400
|
local x = 20
|
||||||
local y_anchor = 200
|
local y_anchor = 50
|
||||||
local spacing = 50
|
local spacing = 10
|
||||||
y_anchor = y_anchor - spacing
|
y_anchor = y_anchor - spacing
|
||||||
|
|
||||||
-- draw all the options
|
-- draw all the options
|
||||||
for idx, option in ipairs(self.options) do
|
for idx, option in ipairs(self.options) do
|
||||||
local y = y_anchor + idx * spacing
|
local y = y_anchor + idx * spacing
|
||||||
love.graphics.print(option, x, y)
|
self.font:draw(option, x, y)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- cursor metric constants
|
-- cursor metric constants
|
||||||
local cursor_width = 10
|
local cursor_width = 4
|
||||||
local cursor_depth = 20
|
local cursor_depth = 8
|
||||||
local cursor_spacing = 20
|
local cursor_spacing = 8
|
||||||
|
local cursor_offset = 4
|
||||||
|
|
||||||
-- calculate the cursor's position
|
-- calculate the cursor's position
|
||||||
local cursor_x = x - cursor_spacing
|
local cursor_x = x - cursor_spacing
|
||||||
local cursor_y = y_anchor + spacing * self.selected
|
local cursor_y = y_anchor + cursor_offset + spacing * self.selected
|
||||||
|
|
||||||
-- draw the cursor
|
-- draw the cursor
|
||||||
love.graphics.polygon("fill",
|
love.graphics.polygon("fill",
|
||||||
|
|
Loading…
Reference in New Issue