local platform = { isNative = true, mouse = {} } local screenWidth = 320 local screenHeight = 200 local screenScale = 2 local canvas function platform.init() love.graphics.setDefaultFilter("nearest") love.graphics.setCanvas() -- Reset the canvas to avoid any bugs love.window.setMode(screenWidth * screenScale, screenHeight * screenScale, { resizable = false, vsync = true }) canvas = love.graphics.newCanvas(screenWidth, screenHeight) love.handlers.mousemoved = function(x, y, dx, dy, t) if love.mousemoved then return love.mousemoved(x / screenScale, y / screenScale, dx / screenScale, dy / screenScale, t) end end love.handlers.mousepressed = function(x, y, b, t, c) if love.mousepressed then return love.mousepressed(x / screenScale, y / screenScale, b, t, c) end end love.handlers.mousereleased = function(x, y, b, t, c) if love.mousereleased then return love.mousereleased(x / screenScale, y / screenScale, b, t, c) end end end function platform.drawStart() love.graphics.setCanvas(canvas) end function platform.drawEnd() love.graphics.setCanvas() love.graphics.draw(canvas, 0, 0, 0, screenScale, screenScale) end local mouseGetX = function() return platform.mouse._ogMouseGetX() / screenScale end if mouseGetX ~= love.mouse.getX then platform.mouse._ogMouseGetX = love.mouse.getX love.mouse.getX = mouseGetX end local mouseGetY = function() return platform.mouse._ogMouseGetY() / screenScale end if mouseGetY ~= love.mouse.getY then platform.mouse._ogMouseGetY = love.mouse.getY love.mouse.getY = mouseGetY end local mouseGetPosition = function() local x, y = platform.mouse._ogMouseGetPosition() return x / screenScale, y / screenScale end if mouseGetPosition ~= love.mouse.getPosition then platform.mouse._ogMouseGetPosition = love.mouse.getPosition love.mouse.getPosition = mouseGetPosition end return platform