128 lines
No EOL
6 KiB
Lua
128 lines
No EOL
6 KiB
Lua
return function(headerheight, fishsprite, headerbuttons, sheets, balance, moneyflashtimer)
|
|
local sw, sh = love.graphics.getDimensions()
|
|
local base = sprites['header/base']
|
|
local size = headerheight / HEADER_HEIGHT
|
|
love.graphics.setColor(1, 1, 1, 1)
|
|
love.graphics.draw(base, 0, 0, 0, size, size)
|
|
|
|
local tooltip
|
|
local tooltipText
|
|
local tooltipx
|
|
local tooltipy
|
|
|
|
-- the game is making me do this. im sorry
|
|
local x = 19
|
|
local y = 3
|
|
for b = 1, 7 do
|
|
local hovered = mouseOverBox(x * size, y * size, sprites['header/buttonbg']:getWidth() * size, sprites['header/buttonbg']:getHeight() * size)
|
|
local btn = headerbuttons[b]
|
|
|
|
if (btn and not btn.open) or not btn then
|
|
-- draw nothing
|
|
elseif hovered and love.mouse.isDown(1) then
|
|
love.graphics.draw(sprites['header/buttonbg_down'], x * size, y * size, 0, size, size)
|
|
if not tooltip then tooltip = btn.tooltip end
|
|
elseif hovered then
|
|
love.graphics.draw(sprites['header/buttonbg_hover'], x * size, y * size, 0, size, size)
|
|
if not tooltip then tooltip = btn.tooltip end
|
|
else
|
|
love.graphics.draw(sprites['header/buttonbg'], x * size, y * size, 0, size, size)
|
|
end
|
|
|
|
if tooltip and btn and not tooltipText then
|
|
if not btn.tooltipText then
|
|
btn.tooltipText = love.graphics.newText(fonts.pix, tooltip)
|
|
end
|
|
|
|
tooltipText = btn.tooltipText
|
|
tooltipx = x + sprites['header/buttonbg']:getWidth() * size * 0.5 - tooltipText:getWidth()/2
|
|
tooltipy = y + sprites['header/buttonbg']:getWidth() * size
|
|
end
|
|
|
|
if btn then
|
|
if btn.open then
|
|
-- sprite inside
|
|
if btn.sprite == 'guppy' or btn.sprite == 'carnivore' then
|
|
local sheet = fishsprite(btn.sprite == 'carnivore' and 'carnivore' or 'medium', false, 'swim')
|
|
local frame = math.floor((love.timer.getTime() * 2) % 1 * #sheet.quads) + 1
|
|
local scale = (sprites['header/buttonbg']:getWidth() / sheet.width) * 0.9
|
|
if btn.sprite == 'carnivore' then scale = scale * 0.7 end
|
|
local offset = (sprites['header/buttonbg']:getWidth() * size) / 2
|
|
love.graphics.draw(sheet.spriteSheet, sheet.quads[frame], x * size + offset, y * size + offset*0.75, 0, size * scale, size * scale, sheet.width/2, sheet.width/2)
|
|
elseif btn.sprite == 'food' then
|
|
local sheets = {sheets.food2, sheets.food3}
|
|
local sheet = sheets[btn.tier]
|
|
|
|
local scale = (sprites['header/buttonbg']:getWidth() / sheet.width) * 0.65
|
|
local offset = (sprites['header/buttonbg']:getWidth() * size) / 2
|
|
love.graphics.draw(sheet.spriteSheet, sheet.quads[1], x * size + offset, y * size + offset*0.75, 0, size * scale, size * scale, sheet.width/2, sheet.width/2)
|
|
elseif btn.sprite == 'foodcount' then
|
|
love.graphics.setFont(fonts.continuum)
|
|
local offset = (sprites['header/buttonbg']:getWidth() * size) / 2
|
|
|
|
local bordersize = 1
|
|
for _,p in ipairs({{0, 1}, {1, 0}, {1, 1}, {-1, 0}, {0, -1}, {-1, -1}, {1, -1}, {-1, 1}}) do
|
|
love.graphics.setColor(0, 0, 0, 0.5)
|
|
love.graphics.printf(btn.tier + 1, round(x * size) + p[1] * bordersize, round(y * size + offset*0.75 - fonts.continuum:getHeight()/2) + p[2] * bordersize, round(sprites['header/buttonbg']:getWidth() * size), 'center')
|
|
end
|
|
|
|
love.graphics.setColor(0, 1, 0)
|
|
love.graphics.printf(btn.tier + 1, round(x * size), round(y * size + offset*0.75 - fonts.continuum:getHeight()/2), round(sprites['header/buttonbg']:getWidth() * size), 'center')
|
|
elseif btn.sprite == 'starpotion' then
|
|
local sheet = sheets.potion
|
|
|
|
local scale = (sprites['header/buttonbg']:getWidth() / sheet.width) * 0.65
|
|
local offset = (sprites['header/buttonbg']:getWidth() * size) / 2
|
|
love.graphics.draw(sheet.spriteSheet, sheet.quads[1], x * size + offset, y * size + offset*0.75, 0, size * scale, size * scale, sheet.width/2, sheet.width/2)
|
|
end
|
|
|
|
-- price
|
|
love.graphics.setFont(fonts.pix)
|
|
local font = love.graphics.getFont()
|
|
love.graphics.setColor(0, 1, 0)
|
|
love.graphics.printf('$' .. btn.cost, round(x * size), round(y * size + 51 * size - font:getHeight()/2), round(sprites['header/buttonbg']:getWidth() * size), 'center')
|
|
love.graphics.setColor(1, 1, 1)
|
|
love.graphics.setFont(fonts.default)
|
|
|
|
-- reflection
|
|
love.graphics.setBlendMode('add')
|
|
love.graphics.draw(sprites['header/reflection'], x * size, y * size, 0, size, size)
|
|
love.graphics.setBlendMode('alpha')
|
|
end
|
|
|
|
-- open/close anim
|
|
if (btn and btn.openanim < 1) then
|
|
local sheet = sheets.buttonopen
|
|
local anim = 0
|
|
if btn then anim = btn.openanim end
|
|
local frame = math.floor(anim % 1 * #sheet.quads) + 1
|
|
love.graphics.draw(sheet.spriteSheet, sheet.quads[frame], x * size, y * size, 0, size, size)
|
|
end
|
|
end
|
|
|
|
local incr = 69 -- its like button positions but forcefully shoved into a recursive function :D
|
|
if b == 2 then incr = 57 end
|
|
if b >= 3 then incr = 73 end
|
|
x = x + incr
|
|
end
|
|
|
|
-- money count
|
|
if love.timer.getTime() % 0.25 < 0.125 and moneyflashtimer > 0 then love.graphics.draw(sprites['header/moneyflash'], sw * 0.851, (HEADER_HEIGHT - 29) * size, 0, size, size) end
|
|
love.graphics.setFont(fonts.continuum)
|
|
love.graphics.setColor(179/255, 254/255, 89/255)
|
|
local leftpad = 100
|
|
love.graphics.printf(balance, round(sw * 0.965 - leftpad), round((HEADER_HEIGHT - 25) * size), leftpad, 'right')
|
|
|
|
-- tooltips
|
|
if tooltipText then
|
|
love.graphics.setColor(254/255, 254/255, 199/255)
|
|
love.graphics.rectangle('fill', round(tooltipx - 5), round(tooltipy - 5), round(tooltipText:getWidth() + 10), round(tooltipText:getHeight() + 10))
|
|
love.graphics.setColor(2/255, 2/255, 2/255)
|
|
love.graphics.rectangle('line', round(tooltipx - 5), round(tooltipy - 5), round(tooltipText:getWidth() + 10), round(tooltipText:getHeight() + 10))
|
|
|
|
love.graphics.setFont(fonts.pix)
|
|
love.graphics.draw(tooltipText, round(tooltipx), round(tooltipy))
|
|
end
|
|
|
|
love.graphics.setFont(fonts.default)
|
|
end |