From 057e9d3d419d72f25ca9e0e4fa614ff93dae1c17 Mon Sep 17 00:00:00 2001 From: jill Date: Mon, 25 Jan 2021 21:34:38 +0300 Subject: [PATCH] wip pause screen --- main.lua | 13 +++++++++++++ scenes/gameplay/draw/header.lua | 18 ++++++++++++++---- scenes/gameplay/main.lua | 25 +++++++++++++++++++++---- 3 files changed, 48 insertions(+), 8 deletions(-) diff --git a/main.lua b/main.lua index ca3143a..1797186 100644 --- a/main.lua +++ b/main.lua @@ -91,6 +91,17 @@ function love.draw() love.graphics.setColor(1, 1, 1, 1) love.graphics.print('FPS: ' .. 1 / love.timer.getDelta(), 0, sh - 16) + if paused then + love.graphics.setBlendMode('subtract') + love.graphics.setColor(1, 1, 1, 0.1) + love.graphics.rectangle('fill', 0, 0, sw, sh) + love.graphics.setBlendMode('alpha') + love.graphics.setColor(0, 0, 0, 0.6) + love.graphics.rectangle('fill', 0, 0, sw, sh) + love.graphics.setColor(1, 1, 1) + love.graphics.print('paused, space to unpause', 20, 20) + end + if debug then bench.renderBenchmark() end bench.stopBenchmark('render') end @@ -106,5 +117,7 @@ end function love.keypressed(key) if key == 'f3' then debug = not debug + elseif key == 'space' then + paused = false end end \ No newline at end of file diff --git a/scenes/gameplay/draw/header.lua b/scenes/gameplay/draw/header.lua index 972d02c..fc3f3e5 100644 --- a/scenes/gameplay/draw/header.lua +++ b/scenes/gameplay/draw/header.lua @@ -14,7 +14,7 @@ return function(headerheight, fishsprite, headerbuttons, sheets, balance, moneyf 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 hovered = mouseOverBox(x * size, y * size, sprites['header/buttonbg']:getWidth() * size, sprites['header/buttonbg']:getHeight() * size) and not paused local btn = headerbuttons[b] if (btn and not btn.open) or not btn then @@ -35,8 +35,8 @@ return function(headerheight, fishsprite, headerbuttons, sheets, balance, moneyf end tooltipText = btn.tooltipText - tooltipx = x + sprites['header/buttonbg']:getWidth() * size * 0.5 - tooltipText:getWidth()/2 - tooltipy = y + sprites['header/buttonbg']:getWidth() * size + tooltipx = x * size + sprites['header/buttonbg']:getWidth() * size * 0.5 - tooltipText:getWidth()/2 + tooltipy = y * size + sprites['header/buttonbg']:getWidth() * size end if btn then @@ -106,6 +106,16 @@ return function(headerheight, fishsprite, headerbuttons, sheets, balance, moneyf x = x + incr end + -- options text + local s = sprites['header/optionsbutton_hover'] + local hovered = mouseOverBox(sw - 115 * size, size * (HEADER_HEIGHT - 65), s:getWidth() * size, s:getHeight() * size) and not paused + + if hovered and love.mouse.isDown(1) then + love.graphics.draw(sprites['header/optionsbutton_down'], sw - 115 * size, size * (HEADER_HEIGHT - 65), 0, size, size) + elseif hovered then + love.graphics.draw(sprites['header/optionsbutton_hover'], sw - 115 * size, size * (HEADER_HEIGHT - 65), 0, size, size) + 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) @@ -114,7 +124,7 @@ return function(headerheight, fishsprite, headerbuttons, sheets, balance, moneyf love.graphics.printf(balance, round(sw * 0.965 - leftpad), round((HEADER_HEIGHT - 25) * size), leftpad, 'right') -- tooltips - if tooltipText then + if tooltipText and not paused 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) diff --git a/scenes/gameplay/main.lua b/scenes/gameplay/main.lua index c776d49..7a50b4b 100644 --- a/scenes/gameplay/main.lua +++ b/scenes/gameplay/main.lua @@ -91,6 +91,7 @@ local headerbuttons = { } local sheets = {} +paused = false local function fishsprite(size, hungry, anim) -- anim is turn, swim, eat or die @@ -124,6 +125,8 @@ function self.load() end function self.update(dt) + if paused then dt = 0 end + bench.startBenchmark('update_buttons') moneyflashtimer = moneyflashtimer - dt @@ -135,7 +138,7 @@ function self.update(dt) local size = (love.graphics.getWidth()/640) local hovered = mouseOverBox(x * size, y * size, sprites['header/buttonbg']:getWidth() * size, sprites['header/buttonbg']:getHeight() * size) - if btn.open and hovered then + if btn.open and hovered and not paused then setCursor(cursors.hover) end @@ -145,6 +148,13 @@ function self.update(dt) x = x + incr end + local s = sprites['header/optionsbutton_hover'] + local size = love.graphics.getWidth() / 640 + local hovered = mouseOverBox(love.graphics.getWidth() - 115 * size, size * (HEADER_HEIGHT - 65), s:getWidth() * size, s:getHeight() * size) + if hovered and not paused then + setCursor(cursors.hover) + end + bench.stopBenchmark('update_buttons') bench.startBenchmark('update_food') @@ -208,7 +218,14 @@ function self.draw() end function self.mousepressed(x, y, b) - if b == 1 then + if b == 1 and not paused then + local s = sprites['header/optionsbutton_hover'] + local size = love.graphics.getWidth() / 640 + local hovered = mouseOverBox(love.graphics.getWidth() - 115 * size, size * (HEADER_HEIGHT - 65), s:getWidth() * size, s:getHeight() * size) + if hovered then + paused = true + end + for _,m in ipairs(money) do local dist = math.abs(x - m.x * love.graphics.getWidth()) + math.abs(y - m.y * love.graphics.getHeight()) if dist < sheets.coin1.width/2 and not m.collected then @@ -227,7 +244,7 @@ function self.mousepressed(x, y, b) end end - if b == 1 and y > HEADER_HEIGHT then + if b == 1 and y > HEADER_HEIGHT and not paused then if starpotionequipped then table.insert(food, constr.food(x/love.graphics.getWidth(), y/love.graphics.getHeight(), 4)) playSound('dropfood') @@ -249,7 +266,7 @@ function self.mousepressed(x, y, b) local headerheight = HEADER_HEIGHT * love.graphics.getWidth()/640 local size = headerheight / HEADER_HEIGHT - if b == 1 then + if b == 1 and not paused then local x = 19 for i = 1, 7 do local hovered = mouseOverBox(x * size, 3 * size, sprites['header/buttonbg']:getWidth() * size, sprites['header/buttonbg']:getHeight() * size)