1star = class:new() 2 3function star: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.gravity = 40 23 self.autodelete = true 24 25 --IMAGE STUFF 26 self.drawable = false 27 self.graphic = starimg 28 self.quad = starquad[1] 29 self.offsetX = 7 30 self.offsetY = 3 31 self.quadcenterX = 9 32 self.quadcenterY = 8 33 34 self.rotation = 0 --for portals 35 self.uptimer = 0 36 self.timer = 0 37 self.quadi = 1 38 39 self.falling = false 40end 41 42function star:update(dt) 43 --rotate back to 0 (portals) 44 self.rotation = math.mod(self.rotation, math.pi*2) 45 if self.rotation > 0 then 46 self.rotation = self.rotation - portalrotationalignmentspeed*dt 47 if self.rotation < 0 then 48 self.rotation = 0 49 end 50 elseif self.rotation < 0 then 51 self.rotation = self.rotation + portalrotationalignmentspeed*dt 52 if self.rotation > 0 then 53 self.rotation = 0 54 end 55 end 56 57 if self.uptimer < mushroomtime then 58 self.uptimer = self.uptimer + dt 59 self.y = self.y - dt*(1/mushroomtime) 60 self.speedx = mushroomspeed 61 else 62 if self.static == true then 63 self.static = false 64 self.active = true 65 self.drawable = true 66 self.speedy = -starjumpforce/2 67 end 68 end 69 70 --animate 71 self.timer = self.timer + dt 72 while self.timer > staranimationdelay do 73 self.quadi = self.quadi + 1 74 if self.quadi == 5 then 75 self.quadi = 1 76 end 77 self.quad = starquad[self.quadi] 78 self.timer = self.timer - staranimationdelay 79 end 80 81 if self.destroy then 82 return true 83 else 84 return false 85 end 86end 87 88function star:draw() 89 if self.drawable == false then 90 --Draw it coming out of the block. 91 love.graphics.drawq(self.graphic, self.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) 92 end 93end 94 95function star:leftcollide(a, b) 96 self.speedx = mushroomspeed 97 98 if a == "player" then 99 b:star() 100 self.destroy = true 101 end 102 103 return false 104end 105 106function star:rightcollide(a, b) 107 self.speedx = -mushroomspeed 108 109 if a == "player" then 110 b:star() 111 self.destroy = true 112 end 113 114 return false 115end 116 117function star:floorcollide(a, b) 118 if self.active and a == "player" then 119 b:star() 120 self.destroy = true 121 end 122 123 self.speedy = -starjumpforce 124 return false 125end 126 127function star:ceilcollide(a, b) 128 if self.active and a == "player" then 129 b:star() 130 self.destroy = true 131 end 132end 133 134function star:jump(x) 135 self.falling = true 136 self.speedy = -mushroomjumpforce 137 if self.x+self.width/2 < x-0.5 then 138 self.speedx = -mushroomspeed 139 elseif self.x+self.width/2 > x-0.5 then 140 self.speedx = mushroomspeed 141 end 142end