diff --git a/main.lua b/main.lua index 6d2f966..bc91918 100644 --- a/main.lua +++ b/main.lua @@ -33,6 +33,10 @@ GameObject = require 'obj/GameObject' function love.load() -- slowmo var slow_amnt = 1 + + -- global timer + timer = Timer() + -- table of color palette COLORS = { default = {1,1,1,1}, @@ -116,6 +120,7 @@ function love.update(dt) for k, v in pairs(counts) do print(k, v) end print("-------------------------------------") end + timer:update(dt*slow_amnt) camera:update(dt*slow_amnt) end @@ -168,10 +173,17 @@ function gotoRoom(room_type, ...) error("room '"..room_type.."' is not callable (got "..type(Class)..", does room return itself?)") end if current_room and current_room.destroy then current_room:destroy() end - if slow_amnt ~= 1 then slow_amnt = 1 end current_room = _G[room_type](...) end +---Slows down gameplay +---@param amount number percentage to which game will slow down +---@param duration number duration in seconds of slow down +function slow(amount, duration) + slow_amnt = amount + timer:tween(duration, _G, {slow_amnt = 1}, 'in-out-cubic') +end + ---Generates and returns random UUID string ---@return string function UUID() diff --git a/obj/Area.lua b/obj/Area.lua index aec63e3..708fae1 100644 --- a/obj/Area.lua +++ b/obj/Area.lua @@ -11,7 +11,6 @@ function Area:new(room) self.room = room self.game_objects = {} self.world = nil - self.timer = Timer() end ---Updates area @@ -26,7 +25,6 @@ function Area:update(dt) table.remove(self.game_objects, i) end end - self.timer:update(dt) end ---Draws area @@ -68,12 +66,4 @@ function Area:addCollisionManager(cell_size) self.world = HC(cell_size or 100) end ----Slows down gameplay ----@param amount number percentage to which game will slow down ----@param duration number duration in seconds of slow down -function Area:slow(amount, duration) - slow_amnt = amount - self.timer:tween(duration, _G, {slow_amnt = 1}, 'in-out-cubic') -end - return Area diff --git a/obj/Room.lua b/obj/Room.lua index 9265d24..7c52d5d 100644 --- a/obj/Room.lua +++ b/obj/Room.lua @@ -52,10 +52,6 @@ end ---Destroys room function Room:destroy() - if self.timer then - self.timer:clear() -- cancel all tweens/after/every - self.timer = nil - end self.area:destroy() self.area = nil end diff --git a/obj/game/Player.lua b/obj/game/Player.lua index 2ed3705..c474c61 100644 --- a/obj/game/Player.lua +++ b/obj/game/Player.lua @@ -87,7 +87,7 @@ function Player:kill() for i=1, random(8,12) do self.area:addGameObject('ExplodeParticle', self.x, self.y) end - self.area:slow(.15, 1) + slow(.15, 1) camera:shake(6, 60, .4) end