Skip to content
Snippets Groups Projects
Commit a97047c7 authored by DarkGod's avatar DarkGod
Browse files

improved .tmx map files loading

parent 6a6df0df
No related branches found
No related tags found
No related merge requests found
......@@ -1120,7 +1120,7 @@ function _M:loadList(file, no_default, res, mod, loaded)
if type(file) == "table" then
res = res or {}
for i, f in ipairs(file) do
self:loadList(f, no_default, res, mod)
self:loadList(f, no_default, res, mod, loaded)
end
return res
end
......
......@@ -162,6 +162,22 @@ function _M:tmxLoad(file)
local chars = {}
local start_tid, end_tid = nil, nil
for _, tileset in ipairs(map:findAll("tileset")) do
if tileset:findOne("properties") then for name, value in pairs(tileset:findOne("properties"):findAllAttrs("property", "name", "value")) do
if name == "load_terrains" then
local list = self:loadLuaInEnv(g, nil, "return "..value) or {}
self.zone.grid_class:loadList(list, nil, self.grid_list, nil, self.grid_list.__loaded_files)
elseif name == "load_traps" then
local list = self:loadLuaInEnv(g, nil, "return "..value) or {}
self.zone.trap_class:loadList(list, nil, self.trap_list, nil, self.trap_list.__loaded_files)
elseif name == "load_objects" then
local list = self:loadLuaInEnv(g, nil, "return "..value) or {}
self.zone.object_class:loadList(list, nil, self.object_list, nil, self.object_list.__loaded_files)
elseif name == "load_actors" then
local list = self:loadLuaInEnv(g, nil, "return "..value) or {}
self.zone.npc_class:loadList(list, nil, self.npc_list, nil, self.npc_list.__loaded_files)
end
end end
local firstgid = tonumber(tileset.attr.firstgid)
for _, tile in ipairs(tileset:findAll("tile")) do
local tid = tonumber(tile.attr.id + firstgid)
......@@ -188,6 +204,18 @@ function _M:tmxLoad(file)
rotate = self:loadLuaInEnv(g, nil, "return "..mapprops.rotate) or mapprops.rotate
end
if mapprops.status_all then
self.status_all = self:loadLuaInEnv(g, nil, "return "..mapprops.status_all) or {}
end
if mapprops.add_data then
table.merge(self.level.data, self:loadLuaInEnv(g, nil, "return "..mapprops.add_data) or {}, true)
end
if mapprops.lua then
self:loadLuaInEnv(g, nil, "return "..mapprops.lua)
end
local m = { w=w, h=h }
local function populate(i, j, c, tid)
local ii, jj = i, j
......
......@@ -34,15 +34,20 @@ function _M:init(zone, map, level, data)
end
function _M:generate(lev, old_lev)
for i = 0, self.map.w - 1 do for j = 0, self.map.h - 1 do
self.map(i, j, Map.TERRAIN, self:resolve("#"))
end end
self.spots = {}
local room = self:roomGen(self.rooms[1], 1, lev, old_lev)
self:roomPlace(room, 1, 2, 2)
for i = 0, self.map.w - 1 do for j = 0, self.map.h - 1 do
if i < 2 or i >= 2 + room.w or j < 2 or j >= 2 + room.h then
local g
if self.level.data.subvaults_surroundings then g = self:resolve(self.level.data.subvaults_surroundings, nil, true)
else g = self:resolve("#") end
self.map(i, j, Map.TERRAIN, g)
end
end end
local possible_entrances = {}
for i = 2, 2 + room.w do
if self.map:checkEntity(i, 2, Map.TERRAIN, "is_door") then possible_entrances[#possible_entrances+1] = {x=i, y=1} end
......
......@@ -64,7 +64,7 @@ local changer = function(id)
class = "mod.class.generator.map.VaultLevel",
["#"] = walltype,
up = "UP_SUB_VAULT_BACK",
greater_vaults_list = game.level.data.greater_vaults_list or list,
greater_vaults_list = game.level.data.generator.map.greater_vaults_list or list,
},
actor = {
class = "mod.class.generator.actor.Random",
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment