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