Skip to content

Instantly share code, notes, and snippets.

@daem-on
Created May 2, 2017 19:39
Show Gist options
  • Save daem-on/0fdf7933d8c7905b215543b7aa72b7d6 to your computer and use it in GitHub Desktop.
Save daem-on/0fdf7933d8c7905b215543b7aa72b7d6 to your computer and use it in GitHub Desktop.
Splat: utilities for LÖVE
--SPLAT: utilities for LÖVE
--CLASSES
Classes = {}
function Classes:extend()
o = {}
setmetatable(o, self)
self.__index = self
return o
end
Types = Classes:extend()
function Types:extend()
o = {}
setmetatable(o, self)
self.__index = self
o.exists = 1
o.id = 0
t = {}
o.userData = {}
o.table = t
return o, t
end
--MAP HANDLING
function parseObjects()
for k, object in pairs(map.objects) do
newMapObject(object.name, object.x, object.y, object.width, object.height, object.visible, object.properties)
end
end
--CAMERA
camera = {}
camera.x = 0
camera.y = 0
camera.scaleX = 0.3
camera.scaleY = 0.3
camera.rotation = 0
function camera:set()
love.graphics.push()
love.graphics.rotate(-self.rotation)
love.graphics.scale(1 / self.scaleX, 1 / self.scaleY)
love.graphics.translate(-self.x, -self.y)
end
function camera:unset()
love.graphics.pop()
end
function camera:move(dx, dy)
self.x = self.x + (dx or 0)
self.y = self.y + (dy or 0)
end
function camera:rotate(dr)
self.rotation = self.rotation + dr
end
function camera:scale(sx, sy)
sx = sx or 1
self.scaleX = self.scaleX * sx
self.scaleY = self.scaleY * (sy or sx)
end
function camera:setPosition(x, y)
self.x = x or self.x
self.y = y or self.y
end
function camera:setScale(sx, sy)
self.scaleX = sx or self.scaleX
self.scaleY = sy or self.scaleY
end
function camera:mouseX()
return love.mouse.getX() * self.scaleX + self.x
end
function camera:mouseY()
return love.mouse.getY() * self.scaleY + self.y
end
--OBJECTS UTILS
function drawEach(table)
for i = 1, #table do
if table[i] and table[i].exists then
table[i]:draw()
end
end
end
function collapseTable(t)
local o = {}
for i = 1, #t do
if t[i] and t[i].exists then
o[#o + 1] = t[i]
end
end
return o
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment