scenes/levels: fuse entities and world controller's files
This commit is contained in:
parent
136ae0e128
commit
80f5faae9e
|
@ -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
|
|
@ -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()
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue