1seesawplatform = class:new() 2 3function seesawplatform:init(x, y, size, callback, side) 4 --PHYSICS STUFF 5 self.size = size or 2 6 self.startx = x-self.size 7 self.starty = y 8 self.x = x-self.size/2-0.5 9 self.y = y-17/16 10 self.speedx = 0 --! 11 self.speedy = 0 12 self.width = self.size 13 self.height = 8/16 14 self.static = true 15 self.active = true 16 self.category = 15 17 self.mask = {true} 18 self.gravity = 0 19 20 self.callback = callback 21 self.side = side 22 23 --IMAGE STUFF 24 self.drawable = false 25 26 self.rotation = 0 27 28 self.speedy = 0 29end 30 31function seesawplatform:update(dt) 32 local previousX = self.x 33 local previousY = self.y 34 35 local checktable = {} 36 for i, v in pairs(enemies) do 37 if objects[v] then 38 table.insert(checktable, v) 39 end 40 end 41 table.insert(checktable, "player") 42 43 local numberofobjects = 0 44 45 for i, v in pairs(checktable) do 46 for j, w in pairs(objects[v]) do 47 if not w.jumping and inrange(w.x, self.x-w.width, self.x+self.width) then 48 if inrange(w.y, self.y - w.height - 0.1, self.y - w.height + 0.1) then 49 numberofobjects = numberofobjects + 1 50 w.y = self.y - w.height + self.speedy*dt 51 end 52 end 53 end 54 end 55 56 self.y = self.y + self.speedy*dt 57 58 --report back on number of objects 59 if self.side == "left" then 60 self.callback:callbackleft(numberofobjects) 61 else 62 self.callback:callbackright(numberofobjects) 63 end 64 65 if self.y > 16 then 66 return true 67 end 68 69 return false 70end 71 72function seesawplatform:draw() 73 for i = 1, self.size do 74 if self.dir ~= "justright" then 75 love.graphics.draw(platformimg, math.floor((self.x+i-1-xscroll)*16*scale), math.floor((self.y-8/16)*16*scale), 0, scale, scale) 76 else 77 love.graphics.draw(platformbonusimg, math.floor((self.x+i-1-xscroll)*16*scale), math.floor((self.y-8/16)*16*scale), 0, scale, scale) 78 end 79 end 80 81 if math.ceil(self.size) ~= self.size then --draw 1 more on the rightest 82 love.graphics.draw(platformimg, math.floor((self.x+self.size-1-xscroll)*16*scale), math.floor((self.y-8/16)*16*scale), 0, scale, scale) 83 end 84end 85 86function seesawplatform:rightcollide(a, b) 87 return false 88end 89 90function seesawplatform:leftcollide(a, b) 91 return false 92end 93 94function seesawplatform:ceilcollide(a, b) 95 return false 96end 97 98function seesawplatform:floorcollide(a, b) 99 return false 100end