2014-10-18 11:23:10 +00:00
|
|
|
Class = require 'hump.class'
|
2014-10-18 12:14:51 +00:00
|
|
|
require 'entities/rectangle'
|
2014-10-18 12:49:39 +00:00
|
|
|
require 'entities/plane'
|
2014-10-18 11:23:10 +00:00
|
|
|
require 'settings'
|
|
|
|
|
|
|
|
-- A level manages the level datastructure containing static blocks and level
|
|
|
|
-- specific data like global physics
|
|
|
|
|
|
|
|
-- Reset color to this before drawing each object
|
|
|
|
draw_base_color = {255, 255, 255, 255}
|
|
|
|
|
|
|
|
Level = Class{
|
|
|
|
init = function(self)
|
|
|
|
self.name = 'Default'
|
|
|
|
self.entity_list = {}
|
|
|
|
|
|
|
|
self.world = love.physics.newWorld(GRAVITY_X, GRAVITY_Y, true)
|
2014-10-18 15:31:00 +00:00
|
|
|
|
|
|
|
-- Draw background to canvas so we don't redraw it every time
|
|
|
|
self.background = love.graphics.newImage('resources/graphics/sky.png')
|
|
|
|
self.bgCanvas = love.graphics.newCanvas()
|
|
|
|
love.graphics.setCanvas(self.bgCanvas)
|
|
|
|
love.graphics.draw(self.background)
|
|
|
|
love.graphics.setCanvas()
|
2014-10-18 12:14:51 +00:00
|
|
|
|
2014-10-18 16:44:52 +00:00
|
|
|
self.planes = { [1] = Plane(100, 100, self) }
|
2014-10-18 12:14:51 +00:00
|
|
|
Rectangle(70, 250, self, "static", 0.1, 50, 50, 1, love.graphics.newImage("resources/graphics/box-50x50.png"))
|
2014-10-18 12:59:39 +00:00
|
|
|
self:insertGround()
|
2014-10-18 11:23:10 +00:00
|
|
|
end;
|
|
|
|
|
2014-10-18 16:44:52 +00:00
|
|
|
getPlane = function(self, player)
|
|
|
|
return self.planes[player]
|
|
|
|
end;
|
|
|
|
|
2014-10-18 11:23:10 +00:00
|
|
|
delete = function(self)
|
|
|
|
for key, entity in pairs(self.entity_list) do
|
|
|
|
entity:delete()
|
|
|
|
end
|
|
|
|
self.entity_list = nil
|
|
|
|
end;
|
|
|
|
|
|
|
|
activate = function(self)
|
|
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
drawEntities = function(self)
|
2014-10-18 15:31:00 +00:00
|
|
|
love.graphics.draw(self.bgCanvas)
|
|
|
|
|
2014-10-18 11:23:10 +00:00
|
|
|
for key, entity in pairs(self.entity_list) do
|
|
|
|
love.graphics.setColor(draw_base_color)
|
|
|
|
entity:draw()
|
|
|
|
end
|
|
|
|
love.graphics.setColor(draw_base_color)
|
|
|
|
end;
|
|
|
|
|
|
|
|
updateEntities = function(self, dt)
|
|
|
|
self.world:update(dt)
|
|
|
|
|
|
|
|
for key, entity in pairs(self.entity_list) do
|
2014-10-18 22:03:42 +00:00
|
|
|
|
|
|
|
while entity.body:getX() > love.window.getWidth() + 200 do
|
|
|
|
entity.body:setX(entity.body:getX() - love.window.getWidth() - 300)
|
|
|
|
end
|
|
|
|
while entity.body:getX() < -200 do
|
|
|
|
entity.body:setX(entity.body:getX() + love.window.getWidth() + 300)
|
|
|
|
end
|
|
|
|
|
2014-10-18 11:23:10 +00:00
|
|
|
entity:update(dt)
|
|
|
|
end
|
|
|
|
end;
|
2014-10-18 12:59:39 +00:00
|
|
|
|
|
|
|
insertGround = function(self)
|
|
|
|
groundImg = love.graphics.newImage('tiles/grasstop.png')
|
|
|
|
|
2014-10-18 13:05:34 +00:00
|
|
|
for i = 0, love.window.getWidth() / 16 + 1, 1 do
|
|
|
|
Rectangle(i * 16, love.window.getHeight(), self, "static", 0, 16, 16, 0, groundImg)
|
2014-10-18 12:59:39 +00:00
|
|
|
end
|
|
|
|
end;
|
2014-10-18 11:23:10 +00:00
|
|
|
}
|