feat: add parallax backgrounds
This commit is contained in:
parent
b3d9ed582e
commit
b92f441d40
2 changed files with 40 additions and 1 deletions
|
@ -16,7 +16,6 @@ function RadianceWorld:createMapController()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
function RadianceWorld:loadMapObjects()
|
function RadianceWorld:loadMapObjects()
|
||||||
RadianceWorld.super.loadMapObjects(self)
|
RadianceWorld.super.loadMapObjects(self)
|
||||||
self:addInvisibleWalls()
|
self:addInvisibleWalls()
|
||||||
|
@ -31,4 +30,29 @@ function RadianceWorld:addInvisibleWalls()
|
||||||
self.obj.collisions["invisible"](self, -16, 0, 0, 16, h, 1000)
|
self.obj.collisions["invisible"](self, -16, 0, 0, 16, h, 1000)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function RadianceWorld:draw(dt)
|
||||||
|
self:drawBackgroundColor()
|
||||||
|
local camNumber = self.cameras:getViewNumber()
|
||||||
|
|
||||||
|
if (camNumber == 0) then
|
||||||
|
self:drawMap()
|
||||||
|
self:drawActors()
|
||||||
|
else
|
||||||
|
for i=1, camNumber do
|
||||||
|
self:drawParallax(i)
|
||||||
|
self.cameras:attachView(i)
|
||||||
|
self:drawMap(i)
|
||||||
|
self:drawActors(i)
|
||||||
|
self.cameras:detachView(i)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function RadianceWorld:drawParallax(i)
|
||||||
|
local x, y, w, h = self.cameras:getViewCoordinate(i)
|
||||||
|
if (self.map ~= nil) and (self.maptype ~= "sti") then
|
||||||
|
self.map:drawParallax(x, y, w, h)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
return RadianceWorld
|
return RadianceWorld
|
||||||
|
|
|
@ -4,6 +4,8 @@ local TestMap = BaseMap:extend()
|
||||||
function TestMap:new(world)
|
function TestMap:new(world)
|
||||||
TestMap.super.new(self, world)
|
TestMap.super.new(self, world)
|
||||||
self:setPadding(0, 96, 0, 0)
|
self:setPadding(0, 96, 0, 0)
|
||||||
|
|
||||||
|
self.background = love.graphics.newImage("assets/backgrounds/parallax/test-back.png")
|
||||||
end
|
end
|
||||||
|
|
||||||
function TestMap:loadCollisions()
|
function TestMap:loadCollisions()
|
||||||
|
@ -30,4 +32,17 @@ function TestMap:draw()
|
||||||
-- Empty Placeholder function
|
-- Empty Placeholder function
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function TestMap:drawParallax(x, y, w, h)
|
||||||
|
local imax, jmax = (w/32)+1, (h/32)+1
|
||||||
|
local x, y = x or 0, y or 0
|
||||||
|
local x = math.floor(x/4) % 32
|
||||||
|
local y = math.floor((y+96)/6) % 32
|
||||||
|
|
||||||
|
for i=0, math.ceil(imax) do
|
||||||
|
for j=0, math.ceil(jmax) do
|
||||||
|
love.graphics.draw(self.background, (i-1)*32-x, (j-1)*32-y)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
return TestMap
|
return TestMap
|
||||||
|
|
Loading…
Reference in a new issue