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)
|
||||
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 = {
|
||||
score=0,
|
||||
wordwait = 90,
|
||||
pdx=0,
|
||||
}
|
||||
mknew(arcade_level, function(x)
|
||||
x.phin = toyphin.new{
|
||||
|
Loading…
Reference in New Issue
Block a user