Advertisement
Guest User

objects.lua

a guest
Sep 9th, 2012
187
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.84 KB | None | 0 0
  1. objects = {}
  2. objects.images = {}
  3. objects.activeObjects = {}
  4. objects.images.default = love.graphics.newImage("defaultObject.png")
  5. function objects:newActiveObject(x, y, width, height)
  6.     local result = {}
  7.     result.id = "defaultObject"
  8.     result.x = x
  9.     result.y = y
  10.     result.image = self.images.default
  11.     result.width = width --result.image:getWidth() returned nil
  12.     result.height = height --result.image:getHeight() returned nil
  13.     result.left = result.x
  14.     result.right = result.x + width
  15.     result.top = result.y
  16.     result.bottom = result.y + height
  17.     result.collidingObjects = {}
  18.     function result:collidesWith(obj)
  19.         if self.bottom < obj.top then
  20.             return false
  21.         elseif self.top > obj.bottom then
  22.             return false
  23.         elseif self.right < obj.left then
  24.             return false
  25.         elseif self.left > obj.right then
  26.             return false
  27.         else
  28.             return true
  29.         end
  30.     end
  31.     function result:act() end
  32.     function result:create() end
  33.     function result:destroy()
  34.         self.remove = true
  35.     end
  36.     function result:collide(other) end
  37.     return result
  38. end
  39. function objects:drawActiveObjects()
  40.     for k, v in pairs(self.activeObjects) do
  41.         love.graphics.draw(v.image, v.x, v.y)
  42.     end
  43. end
  44. function objects:calculateCollisions()
  45.     for k0, v0 in pairs(self.activeObjects) do
  46.         v0.collidingObjects = {}
  47.         for k1, v1 in pairs(self.activeObjects) do
  48.             if (not k0 == k1) and v0:collidesWith(v1) then
  49.                 table.insert(v0.collidingObjects, v1)
  50.             end
  51.         end
  52.     end
  53.     for k0, v0 in pairs(self.activeObjects) do
  54.         for k1, v1 in pairs(v0.collidingObjects) do
  55.             v0:collide(v1)
  56.         end
  57.     end
  58. end
  59. function objects:actObjects()
  60.     for k, v in pairs(self.activeObjects) do
  61.         v:act()
  62.     end
  63.     for k, v in pairs(self.activeObjects) do
  64.         if v.remove then table.remove(self.activeObjects, k) end
  65.     end
  66. end
  67. function objects:addActiveObject(object)
  68.     table.insert(self.activeObjects, object)
  69.     object:create()
  70. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement