Add NineSlice and draw in main
This commit is contained in:
parent
6f4b3b50e4
commit
e731fc4c38
16
main.lua
16
main.lua
|
@ -3,6 +3,7 @@ local Animator = require "animator"
|
||||||
local Atlas = require "atlas"
|
local Atlas = require "atlas"
|
||||||
local Font = require "font"
|
local Font = require "font"
|
||||||
local MultiMenu = require "multimenu"
|
local MultiMenu = require "multimenu"
|
||||||
|
local NineSlice = require "nine_slice"
|
||||||
local Units = require "units"
|
local Units = require "units"
|
||||||
local push = require "lib/push"
|
local push = require "lib/push"
|
||||||
|
|
||||||
|
@ -30,6 +31,20 @@ function love.load()
|
||||||
|
|
||||||
BlockyFont = Font(blockyFont, 8, 8, blockFontChars)
|
BlockyFont = Font(blockyFont, 8, 8, blockFontChars)
|
||||||
|
|
||||||
|
local uiAtlas = Atlas(love.graphics.newImage("assets/flat-ui.png"), 32, 32)
|
||||||
|
|
||||||
|
Window = NineSlice(uiAtlas, {
|
||||||
|
tl = 26,
|
||||||
|
top = 27,
|
||||||
|
tr = 28,
|
||||||
|
left = 50,
|
||||||
|
center = 51,
|
||||||
|
right = 52,
|
||||||
|
bl = 74,
|
||||||
|
bottom = 75,
|
||||||
|
br = 76,
|
||||||
|
})
|
||||||
|
|
||||||
local options = {}
|
local options = {}
|
||||||
|
|
||||||
for idx, unit in ipairs(Units) do
|
for idx, unit in ipairs(Units) do
|
||||||
|
@ -55,6 +70,7 @@ end
|
||||||
function love.draw()
|
function love.draw()
|
||||||
push:start()
|
push:start()
|
||||||
|
|
||||||
|
Window:draw(100, 100, 5, 5)
|
||||||
BlockyFont:draw("Hello, world!")
|
BlockyFont:draw("Hello, world!")
|
||||||
ActiveUnit:draw()
|
ActiveUnit:draw()
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,74 @@
|
||||||
|
local Object = require "lib/classic"
|
||||||
|
|
||||||
|
local NineSlice = Object:extend()
|
||||||
|
|
||||||
|
function NineSlice:new(atlas, sprites)
|
||||||
|
self.atlas = atlas
|
||||||
|
self.sprites = sprites
|
||||||
|
end
|
||||||
|
|
||||||
|
function NineSlice:draw(x, y, width, height)
|
||||||
|
local function draw(sprite, tx, ty)
|
||||||
|
local atlas = self.atlas
|
||||||
|
local sw = atlas.sw
|
||||||
|
local sh = atlas.sh
|
||||||
|
local gx = x + tx * sw
|
||||||
|
local gy = y + ty * sh
|
||||||
|
|
||||||
|
if sprite then
|
||||||
|
love.graphics.draw(atlas.meshes[sprite], gx, gy)
|
||||||
|
else
|
||||||
|
love.graphics.rectangle("fill", gx, gy, sw, sh)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
--common variables
|
||||||
|
local right = width - 1
|
||||||
|
local bottom = height - 1
|
||||||
|
local sprites = self.sprites
|
||||||
|
|
||||||
|
if width == 1 and height == 1 then
|
||||||
|
draw(sprites.only_center, 0, 0)
|
||||||
|
elseif width == 1 then
|
||||||
|
draw(sprites.vert_top, 0, 0)
|
||||||
|
draw(sprites.vert_bottom, 0, bottom)
|
||||||
|
|
||||||
|
for cy = 1, bottom - 1 do
|
||||||
|
draw(sprites.vert_center, 0, cy)
|
||||||
|
end
|
||||||
|
elseif height == 1 then
|
||||||
|
draw(sprites.hori_left, 0, 0)
|
||||||
|
draw(sprites.hori_right, right, 0)
|
||||||
|
|
||||||
|
for cx = 1, right - 1 do
|
||||||
|
draw(sprites.hori_center, cx, 0)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
--draw corners
|
||||||
|
draw(sprites.tl, 0, 0)
|
||||||
|
draw(sprites.tr, right, 0)
|
||||||
|
draw(sprites.bl, 0, bottom)
|
||||||
|
draw(sprites.br, right, bottom)
|
||||||
|
|
||||||
|
--horizontal edges
|
||||||
|
for cx = 1, right - 1 do
|
||||||
|
draw(sprites.top, cx, 0)
|
||||||
|
draw(sprites.bottom, cx, bottom)
|
||||||
|
end
|
||||||
|
|
||||||
|
--vertical edges
|
||||||
|
for cy = 1, bottom - 1 do
|
||||||
|
draw(sprites.left, 0, cy)
|
||||||
|
draw(sprites.right, right, cy)
|
||||||
|
end
|
||||||
|
|
||||||
|
--draw center
|
||||||
|
for cx = 1, right - 1 do
|
||||||
|
for cy = 1, bottom - 1 do
|
||||||
|
draw(sprites.center, cx, cy)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return NineSlice
|
Loading…
Reference in New Issue