sprite renderer and parallax drifting thing renderer
This commit is contained in:
parent
bf6fa03374
commit
79d6321891
63
vacation.p8
63
vacation.p8
@ -1485,9 +1485,72 @@ function spark:draw()
|
|||||||
spr(48+self.f\2, self.x, self.y)
|
spr(48+self.f\2, self.x, self.y)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- other fields: level, item
|
||||||
|
-- level must provide:
|
||||||
|
-- function :pdone(item)
|
||||||
|
-- field .pdx (scrolling parallax dx)
|
||||||
|
-- item must provide:
|
||||||
|
-- drawable api
|
||||||
|
-- .x readwrite (draw coord)
|
||||||
|
-- .w (width)
|
||||||
|
parallax = {
|
||||||
|
dx=0,
|
||||||
|
z=1,
|
||||||
|
}
|
||||||
|
mknew(parallax)
|
||||||
|
|
||||||
|
function parallax:u()
|
||||||
|
local item = self.item
|
||||||
|
if item:u() then
|
||||||
|
self.level:pdone(self)
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
item.x += self.dx
|
||||||
|
item.x += self.level.pdx * self.z
|
||||||
|
|
||||||
|
if item.x > 256 or item.x + item.w < -128 then
|
||||||
|
self.level:pdone(self)
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function parallax:draw()
|
||||||
|
self.item:draw()
|
||||||
|
end
|
||||||
|
|
||||||
|
spritem = {
|
||||||
|
s = {0},
|
||||||
|
sw = 1,
|
||||||
|
sh = 1,
|
||||||
|
i = 1,
|
||||||
|
xf = -1,
|
||||||
|
f = 4,
|
||||||
|
x = 0,
|
||||||
|
y = 0,
|
||||||
|
}
|
||||||
|
mknew(spritem, function(self)
|
||||||
|
self.w = (self.sw or spritem.sw) << 3
|
||||||
|
self.h = (self.sh or spritem.sh) << 3
|
||||||
|
end)
|
||||||
|
|
||||||
|
function spritem:u()
|
||||||
|
self.xf += 1
|
||||||
|
if self.xf > self.f then
|
||||||
|
self.i += 1
|
||||||
|
if (self.i > #self.s) self.i = 1
|
||||||
|
self.xf = 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function spritem:draw()
|
||||||
|
spr(self.s[self.i], self.x, self.y, self.sw, self.sh, self.flipx, self.flipy)
|
||||||
|
end
|
||||||
|
|
||||||
arcade_level = {
|
arcade_level = {
|
||||||
score=0,
|
score=0,
|
||||||
wordwait = 90,
|
wordwait = 90,
|
||||||
|
pdx=0,
|
||||||
}
|
}
|
||||||
mknew(arcade_level, function(x)
|
mknew(arcade_level, function(x)
|
||||||
x.phin = toyphin.new{
|
x.phin = toyphin.new{
|
||||||
|
Loading…
Reference in New Issue
Block a user