summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAki <nthirtyone@gmail.com>2017-09-08 15:59:39 +0200
committerAki <nthirtyone@gmail.com>2017-09-08 15:59:39 +0200
commit5ef20afaf6a9aca1999faf8904594d94fcfaaa66 (patch)
treea41526816a95d4f1ae35c714cd9a462fb6ee4d68
parentcff3a516083df2e43f6936812baba56a622d804a (diff)
downloadroflnauts-5ef20afaf6a9aca1999faf8904594d94fcfaaa66.zip
roflnauts-5ef20afaf6a9aca1999faf8904594d94fcfaaa66.tar.gz
roflnauts-5ef20afaf6a9aca1999faf8904594d94fcfaaa66.tar.bz2
Created Layer class
-rw-r--r--not/Layer.lua27
-rw-r--r--not/World.lua32
2 files changed, 42 insertions, 17 deletions
diff --git a/not/Layer.lua b/not/Layer.lua
new file mode 100644
index 0000000..db16175
--- /dev/null
+++ b/not/Layer.lua
@@ -0,0 +1,27 @@
+--- A little bit more than just a Canvas.
+Layer = require "not.Object":extends()
+
+function Layer:new (width, height)
+ self.canvas = love.graphics.newCanvas(width, height)
+end
+
+--- Sets this layer as current canvas for drawing with love.graphics functions.
+-- @return old canvas used by love
+function Layer:setAsCanvas ()
+ local c = love.graphics.getCanvas()
+ love.graphics.setCanvas(self.canvas)
+ return c
+end
+
+function Layer:clear ()
+ local c = self:setAsCanvas()
+ love.graphics.clear()
+ love.graphics.setCanvas(c)
+end
+
+function Layer:draw ()
+ love.graphics.setColor(255, 255, 255, 255)
+ love.graphics.draw(self.canvas)
+end
+
+return Layer
diff --git a/not/World.lua b/not/World.lua
index e1f2d59..e8b847a 100644
--- a/not/World.lua
+++ b/not/World.lua
@@ -10,6 +10,7 @@ require "not.Decoration"
require "not.Ray"
require "not.Cloud"
require "not.CloudGenerator"
+require "not.Layer"
--- ZA WARUDO!
-- TODO: Missing documentation on most of World's methods.
@@ -24,12 +25,12 @@ function World:new (map, nauts)
self.entities = {}
local width, height = love.graphics.getDimensions()
self.layers = {
- love.graphics.newCanvas(width, height), -- back
- love.graphics.newCanvas(width, height), -- cloud
- love.graphics.newCanvas(width, height), -- deco
- love.graphics.newCanvas(width, height), -- nauts
- love.graphics.newCanvas(width, height), -- plats
- love.graphics.newCanvas(width, height), -- front
+ Layer(width, height), -- back
+ Layer(width, height), -- cloud
+ Layer(width, height), -- deco
+ Layer(width, height), -- nauts
+ Layer(width, height), -- plats
+ Layer(width, height), -- front
}
self.map = map
@@ -225,33 +226,30 @@ function World:draw ()
for _,entity in pairs(self.entities) do
if entity:is(Decoration) then
if entity.layer == 1 then
- love.graphics.setCanvas(self.layers[1])
+ self.layers[1]:setAsCanvas()
else
- love.graphics.setCanvas(self.layers[3])
+ self.layers[3]:setAsCanvas()
end
end
if entity:is(Cloud) then
- love.graphics.setCanvas(self.layers[2])
+ self.layers[2]:setAsCanvas()
end
if entity:is(Player) then
- love.graphics.setCanvas(self.layers[4])
+ self.layers[4]:setAsCanvas()
end
if entity:is(Platform) or entity:is(Effect) then
- love.graphics.setCanvas(self.layers[5])
+ self.layers[5]:setAsCanvas()
end
if entity:is(Ray) then
- love.graphics.setCanvas(self.layers[6])
+ self.layers[6]:setAsCanvas()
end
entity:draw(offset_x, offset_y, scale, debug)
end
love.graphics.setCanvas()
for _,layer in ipairs(self.layers) do
- love.graphics.setColor(255, 255, 255, 255)
- love.graphics.draw(layer)
- love.graphics.setCanvas(layer)
- love.graphics.clear()
- love.graphics.setCanvas()
+ layer:draw()
+ layer:clear()
end
if debug then