scenes/levels: fuse entities and world controller's files

This commit is contained in:
Kazhnuz 2019-03-01 18:46:45 +01:00
parent 136ae0e128
commit 80f5faae9e
3 changed files with 47 additions and 68 deletions

View File

@ -1,45 +0,0 @@
function Level:loadEntities()
for k, objectlayer in pairs(self.map.layers) do
if (self:isEntityLayer(objectlayer.name)) then
for k, object in pairs(objectlayer.objects) do
self:addEntityByNameOnGrid( objectlayer.name, object.x, object.y,
object.width, object.height )
end
self.map:removeLayer(objectlayer.name)
end
end
end
function Level:addEntityByNameOnGrid(name, x, y, w, h)
local layerdata = datas.entities
local objWidth, objHeight = layerdata[name].w, layerdata[name].h
local cellHor = math.ceil(w / objWidth)
local cellVert = math.ceil(h / objHeight)
for i=1, cellHor do
for j=1, cellVert do
self:addEntityByName(name, x + (i-1)*objWidth, y + (j-1)*objHeight)
end
end
end
function Level:addEntityByName(name, x, y)
if name == "coin" then
Loot(self, "coin", 1, x, y)
end
if name == "block" then
Block(self, 0, x, y)
end
end
function Level:isEntityLayer(layername)
local layerdata = datas.entities
local isEntityLayer = false
if not (layerdata[layername] == nil) then
isEntityLayer = true
end
return isEntityLayer
end

View File

@ -5,32 +5,10 @@ require "scenes.levels.controller.virtualpad"
require "scenes.levels.controller.world"
require "scenes.levels.controller.camera"
require "scenes.levels.controller.players"
require "scenes.levels.controller.entities"
require "scenes.levels.controller.debug"
function Level:new()
self.levelRealm = ""
self.levelName = ""
self.missionName = ""
self.missionDesc = ""
self.mapfile = "level1"
self.gravity = 0
self.autorun = 1
self.objectiveID = 0
self.startx = 32
self.starty = 420/2
self.pause = false
self.map = nil
self.backcolor = {0, 0, 0}
self.itemList = {}
self.score = 0
self.gold = 0
self:resetPlayers()
self:resetPads()
self:setDebugMode(true)
self:reset()
end
function Level:reset()

View File

@ -11,6 +11,52 @@ function Level:initWorld()
self:getStartPosition()
end
function Level:loadEntities()
for k, objectlayer in pairs(self.map.layers) do
if (self:isEntityLayer(objectlayer.name)) then
for k, object in pairs(objectlayer.objects) do
self:addEntityByNameOnGrid( objectlayer.name, object.x, object.y,
object.width, object.height )
end
self.map:removeLayer(objectlayer.name)
end
end
end
function Level:addEntityByNameOnGrid(name, x, y, w, h)
local layerdata = datas.entities
local objWidth, objHeight = layerdata[name].w, layerdata[name].h
local cellHor = math.ceil(w / objWidth)
local cellVert = math.ceil(h / objHeight)
for i=1, cellHor do
for j=1, cellVert do
self:addEntityByName(name, x + (i-1)*objWidth, y + (j-1)*objHeight)
end
end
end
function Level:addEntityByName(name, x, y)
if name == "coin" then
Loot(self, "coin", 1, x, y)
end
if name == "block" then
Block(self, 0, x, y)
end
end
function Level:isEntityLayer(layername)
local layerdata = datas.entities
local isEntityLayer = false
if not (layerdata[layername] == nil) then
isEntityLayer = true
end
return isEntityLayer
end
function Level:getStartPosition()
for k, objectlayer in pairs(self.map.layers) do
if objectlayer.name == "playerstart" then