87 lines
2.4 KiB
Lua
87 lines
2.4 KiB
Lua
local Element = require "lib.simple_ui.element"
|
|
local Rect = require "lib.simple_ui.rect"
|
|
local Color = require "lib.simple_ui.color"
|
|
local Bar = require "lib.simple_ui.level.bar"
|
|
|
|
--- @class BottomBars : UIElement
|
|
--- @field hpBar BarElement
|
|
--- @field manaBar BarElement
|
|
local bottomBars = setmetatable({}, Element)
|
|
bottomBars.__index = bottomBars;
|
|
|
|
--- @param cid Id
|
|
function bottomBars.new(cid)
|
|
local t = setmetatable({}, bottomBars)
|
|
|
|
t.hpBar =
|
|
Bar {
|
|
getter = function()
|
|
local char = Tree.level.characters[cid]
|
|
return char:try(Tree.behaviors.stats, function(stats)
|
|
return stats.hp or 0
|
|
end)
|
|
end,
|
|
color = Color { r = 130 / 255, g = 8 / 255, b = 8 / 255 },
|
|
drawText = true,
|
|
maxValue = 20
|
|
}
|
|
|
|
t.manaBar =
|
|
Bar {
|
|
getter = function()
|
|
local char = Tree.level.characters[cid]
|
|
return char:try(Tree.behaviors.stats, function(stats)
|
|
return stats.mana or 0
|
|
end)
|
|
end,
|
|
color = Color { r = 51 / 255, g = 105 / 255, b = 30 / 255 },
|
|
useDividers = true,
|
|
maxValue = 10
|
|
}
|
|
|
|
|
|
return t
|
|
end
|
|
|
|
function bottomBars:update(dt)
|
|
local height = 16
|
|
local margin = 2
|
|
|
|
self.bounds.height = height
|
|
self.bounds.y = self.bounds.y - height
|
|
|
|
self.hpBar.bounds = Rect {
|
|
width = -2 * margin + self.bounds.width / 2,
|
|
height = height - margin,
|
|
x = self.bounds.x + margin,
|
|
y = self.bounds.y + margin
|
|
}
|
|
|
|
self.manaBar.bounds = Rect {
|
|
width = -2 * margin + self.bounds.width / 2,
|
|
height = height - margin,
|
|
x = self.bounds.x + margin + self.bounds.width / 2,
|
|
y = self.bounds.y + margin
|
|
}
|
|
|
|
self.hpBar:update(dt)
|
|
self.manaBar:update(dt)
|
|
end
|
|
|
|
function bottomBars:draw()
|
|
-- шум
|
|
love.graphics.setShader(Tree.assets.files.shaders.soft_uniform_noise)
|
|
love.graphics.rectangle("fill", self.bounds.x, self.bounds.y, self.bounds.width, self.bounds.height)
|
|
love.graphics.setShader()
|
|
|
|
love.graphics.setColor(38 / 255, 50 / 255, 56 / 255)
|
|
love.graphics.setBlendMode("multiply", "premultiplied")
|
|
love.graphics.rectangle("fill", self.bounds.x, self.bounds.y, self.bounds.width, self.bounds.height)
|
|
love.graphics.setBlendMode("alpha")
|
|
|
|
self.hpBar:draw()
|
|
self.manaBar:draw()
|
|
end
|
|
|
|
return bottomBars.new
|