1mushroom = class:new() 2 3function mushroom:init(x, y) 4 --PHYSICS STUFF 5 self.x = x-6/16 6 self.y = y-11/16 7 self.speedy = 0 8 self.speedx = 0 9 self.width = 12/16 10 self.height = 12/16 11 self.static = true 12 self.active = true 13 self.category = 6 14 self.mask = { true, 15 false, false, true, true, true, 16 false, true, false, true, true, 17 false, true, true, false, true, 18 true, true, false, true, true, 19 false, true, true, false, false, 20 true, false, true, true, true} 21 self.destroy = false 22 self.autodelete = true 23 24 --IMAGE STUFF 25 self.drawable = false 26 self.graphic = entitiesimg 27 self.quad = entityquads[2].quad 28 self.offsetX = 7 29 self.offsetY = 3 30 self.quadcenterX = 9 31 self.quadcenterY = 8 32 33 self.rotation = 0 --for portals 34 self.uptimer = 0 35 36 self.falling = false 37end 38 39function mushroom:update(dt) 40 --rotate back to 0 (portals) 41 self.rotation = math.mod(self.rotation, math.pi*2) 42 if self.rotation > 0 then 43 self.rotation = self.rotation - portalrotationalignmentspeed*dt 44 if self.rotation < 0 then 45 self.rotation = 0 46 end 47 elseif self.rotation < 0 then 48 self.rotation = self.rotation + portalrotationalignmentspeed*dt 49 if self.rotation > 0 then 50 self.rotation = 0 51 end 52 end 53 54 if self.uptimer < mushroomtime then 55 self.uptimer = self.uptimer + dt 56 self.y = self.y - dt*(1/mushroomtime) 57 self.speedx = mushroomspeed 58 59 else 60 if self.static == true then 61 self.static = false 62 self.active = true 63 self.drawable = true 64 end 65 end 66 67 if self.destroy then 68 return true 69 else 70 return false 71 end 72end 73 74function mushroom:draw() 75 if self.uptimer < mushroomtime and not self.destroy then 76 --Draw it coming out of the block. 77 love.graphics.drawq(entitiesimg, entityquads[2].quad, math.floor(((self.x-xscroll)*16+self.offsetX)*scale), math.floor((self.y*16-self.offsetY)*scale), 0, scale, scale, self.quadcenterX, self.quadcenterY) 78 end 79end 80 81function mushroom:leftcollide(a, b) 82 self.speedx = mushroomspeed 83 84 if a == "player" then 85 b:grow() 86 self.active = false 87 self.destroy = true 88 self.drawable = false 89 end 90 91 return false 92end 93 94function mushroom:rightcollide(a, b) 95 self.speedx = -mushroomspeed 96 97 if a == "player" then 98 b:grow() 99 self.active = false 100 self.destroy = true 101 self.drawable = false 102 end 103 104 return false 105end 106 107function mushroom:floorcollide(a, b) 108 if a == "player" then 109 b:grow() 110 self.active = false 111 self.destroy = true 112 self.drawable = false 113 end 114end 115 116function mushroom:ceilcollide(a, b) 117 if a == "player" then 118 b:grow() 119 self.active = false 120 self.destroy = true 121 self.drawable = false 122 end 123end 124 125function mushroom:jump(x) 126 self.falling = true 127 self.speedy = -mushroomjumpforce 128 if self.x+self.width/2 < x-0.5 then 129 self.speedx = -mushroomspeed 130 elseif self.x+self.width/2 > x-0.5 then 131 self.speedx = mushroomspeed 132 end 133end