Keep coordinate fullscreen mode

General discussion about LÖVE, Lua, game development, puns, and unicorns.
Post Reply
VFBStudio
Prole
Posts: 2
Joined: Wed May 27, 2020 2:46 pm

Keep coordinate fullscreen mode

Post by VFBStudio »

Hello !

My game runs in 720p for desktop

Is it possible to keep the same coordinates if we switch to fullscreen mode? like a panel in a window?

I want the coordinates to start in my panel (x0,y0), like a "letterbox".

I join you 2 screens to illustrate my request

Thank you in advance,
VFB

https://image.noelshack.com/fichiers/20 ... forum1.jpg
https://image.noelshack.com/fichiers/20 ... forum2.png
User avatar
pgimeno
Party member
Posts: 3548
Joined: Sun Oct 18, 2015 2:58 pm

Re: Keep coordinate fullscreen mode

Post by pgimeno »

I'm not sure if I've understood correctly what you're asking, but you can try combining love.graphics.setScissor with love.graphics.translate.

Something like this (use F11 to toggle fullscreen mode):

Code: Select all

-- This is just a demonstrative effect
local circles = {}
local nCircles = 20
local circleRadius = 80


function love.draw()

  -- Here's the gist
  if love.window.getFullscreen() then
    local diffX = love.graphics.getWidth() - 1280
    local diffY = love.graphics.getHeight() - 720
    love.graphics.setScissor(diffX / 2, diffY / 2, 1280, 720)
    love.graphics.translate(diffX / 2, diffY / 2)
  else
    love.graphics.setScissor()
  end

  -- Now draw something for demonstrative purposes
  for i = 1, nCircles do
    love.graphics.setColor(circles[i][5], circles[i][6], circles[i][7])
    love.graphics.circle("fill", circles[i][1], circles[i][2], circleRadius)
  end

end


function love.load()
  love.window.setMode(1280, 720)
  for i = 1, nCircles do
    local direction = math.pi * 2 * love.math.random()
    local speed = love.math.random() * 200 + 50
    local vx = math.cos(direction) * speed
    local vy = math.sin(direction) * speed
    local hue = love.math.random() * 6
    local hue = love.math.random() * 6
    local r = math.min(math.max(math.abs(hue - 3) - 1, 0), 1)
    hue = (hue + 2) % 6
    local g = math.min(math.max(math.abs(hue - 3) - 1, 0), 1)
    hue = (hue + 2) % 6
    local b = math.min(math.max(math.abs(hue - 3) - 1, 0), 1)

    circles[i] = {love.math.random(1, 1280) - 1,
                  love.math.random(1, 720) - 1,
                  vx, vy, r, g, b}
  end
end


function love.update(dt)
  for i = 1, nCircles do
    local circle = circles[i]
    local saveX = circle[1]
    local saveY = circle[2]
    circle[1] = saveX + circle[3] * dt
    circle[2] = saveY + circle[4] * dt
    if circle[1] >= 1280 or circle[1] < 0 then
      circle[3] = -circle[3]
      circle[1] = saveX
    end
    if circle[2] >= 720 or circle[2] < 0 then
      circle[4] = -circle[4]
      circle[2] = saveY
    end
  end
end


function love.keyreleased(k)
  if k == "f11" then
    if love.window.getFullscreen() then
      love.window.setMode(1280, 720)
    else
      love.window.setFullscreen(true)
    end
  end
  return k == "escape" and love.event.quit()
end
(Edited to remove a leftover variable)
Attachments
viewport.love
(857 Bytes) Downloaded 255 times
Last edited by pgimeno on Wed Jun 03, 2020 12:54 pm, edited 1 time in total.
VFBStudio
Prole
Posts: 2
Joined: Wed May 27, 2020 2:46 pm

Re: Keep coordinate fullscreen mode

Post by VFBStudio »

Thanks pgimeno ! it's working :)
Post Reply

Who is online

Users browsing this forum: No registered users and 54 guests