1oneup = class:new() 2 3function oneup: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 = false 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[3].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 oneup: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 66 --check if offscreen 67 if self.x < xscroll - width+3 or self.y > 18 then 68 return true 69 end 70 71 if self.destroy then 72 return true 73 else 74 return false 75 end 76 end 77end 78 79function oneup:draw() 80 if self.drawable == false then 81 --Draw it coming out of the block. 82 love.graphics.drawq(entitiesimg, entityquads[3].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) 83 end 84end 85 86function oneup:leftcollide(a, b) 87 self.speedx = mushroomspeed 88 89 if a == "player" then 90 givelive(b.playernumber, self) 91 end 92 93 return false 94end 95 96function oneup:rightcollide(a, b) 97 self.speedx = -mushroomspeed 98 99 if a == "player" then 100 givelive(b.playernumber, self) 101 end 102 103 return false 104end 105 106function oneup:floorcollide(a, b) 107 if a == "player" then 108 givelive(b.playernumber, self) 109 end 110end 111 112function oneup:ceilcollide(a, b) 113 if a == "player" then 114 givelive(b.playernumber, self) 115 end 116end 117 118function givelive(id, t) 119 if mariolivecount ~= false then 120 for i = 1, players do 121 mariolives[i] = mariolives[i]+1 122 respawnplayers() 123 end 124 end 125 t.destroy = true 126 t.active = false 127 table.insert(scrollingscores, scrollingscore:new("1up", t.x, t.y)) 128 playsound(oneupsound) 129end 130 131function oneup:jump(x) 132 self.falling = true 133 self.speedy = -mushroomjumpforce 134 if self.x+self.width/2 < x-0.5 then 135 self.speedx = -mushroomspeed 136 elseif self.x+self.width/2 > x-0.5 then 137 self.speedx = mushroomspeed 138 end 139end