diff --git a/conf.lua b/conf.lua new file mode 100644 index 0000000..d6c8673 --- /dev/null +++ b/conf.lua @@ -0,0 +1,43 @@ +gw = 480 +gh = 270 +sx = 1 +sy = 1 + +function love.conf(t) + t.identity = nil -- The name of the save directory (string) + t.version = "11.5" -- The LÖVE version this game was made for (string) + t.console = false -- Attach a console (boolean, Windows only) + + t.window.title = "BYTEPATH Clone" -- The window title (string) + t.window.icon = nil -- Filepath to an image to use as the window's icon (string) + t.window.width = gw -- The window width (number) + t.window.height = gh -- The window height (number) + t.window.borderless = false -- Remove all border visuals from the window (boolean) + t.window.resizable = true -- Let the window be user-resizable (boolean) + t.window.minwidth = 1 -- Minimum window width if the window is resizable (number) + t.window.minheight = 1 -- Minimum window height if the window is resizable (number) + t.window.fullscreen = false -- Enable fullscreen (boolean) + t.window.fullscreentype = "exclusive" -- Standard fullscreen or desktop fullscreen mode (string) + t.window.vsync = true -- Enable vertical sync (boolean) + t.window.fsaa = 0 -- The number of samples to use with multi-sampled antialiasing (number) + t.window.display = 1 -- Index of the monitor to show the window in (number) + t.window.highdpi = false -- Enable high-dpi mode for the window on a Retina display (boolean) + t.window.srgb = false -- Enable sRGB gamma correction when drawing to the screen (boolean) + t.window.x = nil -- The x-coordinate of the window's position in the specified display (number) + t.window.y = nil -- The y-coordinate of the window's position in the specified display (number) + + t.modules.audio = true -- Enable the audio module (boolean) + t.modules.event = true -- Enable the event module (boolean) + t.modules.graphics = true -- Enable the graphics module (boolean) + t.modules.image = true -- Enable the image module (boolean) + t.modules.joystick = true -- Enable the joystick module (boolean) + t.modules.keyboard = true -- Enable the keyboard module (boolean) + t.modules.math = true -- Enable the math module (boolean) + t.modules.mouse = true -- Enable the mouse module (boolean) + t.modules.physics = true -- Enable the physics module (boolean) + t.modules.sound = true -- Enable the sound module (boolean) + t.modules.system = true -- Enable the system module (boolean) + t.modules.timer = true -- Enable the timer module (boolean), Disabling it will result 0 delta time in love.update + t.modules.window = true -- Enable the window module (boolean) + t.modules.thread = true -- Enable the thread module (boolean) +end diff --git a/obj/Room.lua b/obj/Room.lua index 71ea83f..427ec5c 100644 --- a/obj/Room.lua +++ b/obj/Room.lua @@ -4,12 +4,14 @@ ---@field area Area room area ---@field id string room id ---@field super Room +---@field main_canvas love.Canvas local Room = Object:extend() ---Instantiates room. function Room:new() self.area = Area(self) self.id = UUID() + self.main_canvas = love.graphics.newCanvas(gw, gh) end ---Updates room (see [love.update()](lua://love.update)) @@ -19,7 +21,21 @@ function Room:update(dt) end ---Draws graphics (see [love.draw()](lua://love.draw)) +---**DO NOT OVERRIDE:** use Room:canvasDraw() instead function Room:draw() + love.graphics.setCanvas(self.main_canvas) + love.graphics.clear() + self:canvasDraw() + love.graphics.setCanvas() + + love.graphics.setColor(255, 255, 255, 255) + love.graphics.setBlendMode('alpha', 'premultiplied') + love.graphics.draw(self.main_canvas, 0, 0, 0, sx, sy) + love.graphics.setBlendMode('alpha') +end + +---Draw to the canvas +function Room:canvasDraw() self.area:draw() end diff --git a/rooms/Stage.lua b/rooms/Stage.lua index 7668c01..7f45d3d 100644 --- a/rooms/Stage.lua +++ b/rooms/Stage.lua @@ -6,7 +6,7 @@ function Stage:new() Stage.super.new(self) self.timer = Timer() self.timer:every(2, function() - local latest_object = self.area:addGameObject('Circle', love.math.random(1, 800), love.math.random(1, 600)) + local latest_object = self.area:addGameObject('Circle', love.math.random(1, gw), love.math.random(1, gh)) latest_object.timer:after(love.math.random(2, 4), function() latest_object:kill() end) end) end @@ -15,7 +15,7 @@ function Stage:update(dt) Stage.super.update(self, dt) if input:pressed('action') then - local latest_object = self.area:addGameObject('Circle', love.math.random(1, 800), love.math.random(1, 600)) + local latest_object = self.area:addGameObject('Circle', love.math.random(1, gw), love.math.random(1, gh), {radius = 15}) end if input:pressed('right') then @@ -27,8 +27,8 @@ function Stage:update(dt) self.timer:update(dt) end -function Stage:draw() - Stage.super.draw(self) +function Stage:canvasDraw() + Stage.super.canvasDraw(self) end return Stage