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

Merge branch 'TMXloadfix' into 'master'

Static RoomLoader entity list fix

Fixes a bug where the .__loaded_files table for zone entity list table could erroeously be updated when loading static room maps.

See merge request !344
parents 90d4b72f ee4a53a2
No related branches found
No related tags found
1 merge request!344Static RoomLoader entity list fix
Pipeline #
......@@ -75,20 +75,24 @@ function _M:getLoader(t)
trap_class = self.zone.trap_class,
npc_class = self.zone.npc_class,
object_class = self.zone.object_class,
specialList = function(kind, files, add_zone_lists) -- specify entity lists to use (add_zone_lists == add to current list)
specialList = function(kind, files, add_zone_lists) -- specify entity lists to use (add_zone_lists == include current list)
local elist
if kind == "terrain" then
if add_zone_lists then elist = table.clone(self.zone.grid_list) end
self.grid_list = self.zone.grid_class:loadList(files, nil, elist, nil, elist and elist.__loaded_files)
self.grid_list = self.zone.grid_class:loadList(files, nil, elist, nil, elist and table.clone(elist.__loaded_files))
-- self.grid_list = self.zone.grid_class:loadList(files, nil, elist, nil, elist and elist.__loaded_files)
elseif kind == "trap" then
if add_zone_lists then elist = table.clone(self.zone.trap_list) end
self.trap_list = self.zone.trap_class:loadList(files, nil, elist, nil, elist and elist.__loaded_files)
self.trap_list = self.zone.trap_class:loadList(files, nil, elist, nil, elist and table.clone(elist.__loaded_files))
-- self.trap_list = self.zone.trap_class:loadList(files, nil, elist, nil, elist and elist.__loaded_files)
elseif kind == "object" then
if add_zone_lists then elist = table.clone(self.zone.object_list) end
self.object_list = self.zone.object_class:loadList(files, nil, elist, nil, elist and elist.__loaded_files)
self.object_list = self.zone.object_class:loadList(files, nil, elist, nil, elist and table.clone(elist.__loaded_files))
-- self.object_list = self.zone.object_class:loadList(files, nil, elist, nil, elist and elist.__loaded_files)
elseif kind == "actor" then
if add_zone_lists then elist = table.clone(self.zone.npc_list) end
self.npc_list = self.zone.npc_class:loadList(files, nil, elist, nil, elist and elist.__loaded_files)
self.npc_list = self.zone.npc_class:loadList(files, nil, elist, nil, elist and table.clone(elist.__loaded_files))
-- self.npc_list = self.zone.npc_class:loadList(files, nil, elist, nil, elist and elist.__loaded_files)
else
error("kind unsupported")
end
......@@ -200,19 +204,19 @@ function _M:tmxLoad(file)
if name == "load_terrains" then
local list = self:loadLuaInEnv(g, nil, "return "..value) or {}
elist = table.clone(self.zone.grid_list, false)
self.grid_list = self.zone.grid_class:loadList(list, nil, elist, nil, elist and elist.__loaded_files)
self.grid_list = self.zone.grid_class:loadList(list, nil, elist, nil, elist and table.clone(elist.__loaded_files))
elseif name == "load_traps" then
local list = self:loadLuaInEnv(g, nil, "return "..value) or {}
elist = table.clone(self.zone.trap_list, false)
self.trap_list = self.zone.trap_class:loadList(list, nil, elist, nil, elist and elist.__loaded_files)
self.trap_list = self.zone.trap_class:loadList(list, nil, elist, nil, elist and table.clone(elist.__loaded_files))
elseif name == "load_objects" then
local list = self:loadLuaInEnv(g, nil, "return "..value) or {}
elist = table.clone(self.zone.object_list, false)
self.object_list = self.zone.object_class:loadList(list, nil, elist, nil, elist and elist.__loaded_files)
self.object_list = self.zone.object_class:loadList(list, nil, elist, nil, elist and table.clone(elist.__loaded_files))
elseif name == "load_actors" then
local list = self:loadLuaInEnv(g, nil, "return "..value) or {}
elist = table.clone(self.zone.npc_list, false)
self.npc_list = self.zone.npc_class:loadList(list, nil, elist, nil, elist and elist.__loaded_files)
self.npc_list = self.zone.npc_class:loadList(list, nil, elist, nil, elist and table.clone(elist.__loaded_files))
end
end end
......
......@@ -125,7 +125,7 @@
<tileset firstgid="101" name="Trees" tilewidth="64" tileheight="64" tilecount="100">
<properties>
<property name="load_terrains" value="{&quot;/data/general/grids/forest.lua&quot;, &quot;/data/general/grids/autumn_forest.lua&quot;, &quot;/data/general/grids/snowy_forest.lua&quot;, &quot;/data/general/grids/lava.lua&quot;, add_zone_lists=true}"/>
<property name="load_actors" value="{&quot;/data/general/npcs/cold-drake.lua&quot;, &quot;/data/general/npcs/vampire.lua&quot;, add_zone_lists=false}"/>
<property name="load_actors" value="{&quot;/data/general/npcs/cold-drake.lua&quot;, &quot;/data/general/npcs/vampire.lua&quot;}"/>
</properties>
<image source="../../../../../../tiled-maps/gfx/vault_trees.png" width="640" height="640"/>
<tile id="0">
......
......@@ -80,8 +80,9 @@ return {
nb_rooms = 10,
edge_entrances = {4,6},
rooms = {"forest_clearing"},
-- required_rooms = {"greater_vault"}, -- triggers level generation failure
greater_vaults_list = {"portal-vault"},
required_rooms = {"greater_vault", "greater_vault", "greater_vault"}, -- triggers level generation failure
-- greater_vaults_list = {"portal-vault"},
greater_vaults_list = {"test2", "test"},
['.'] = {"GRASS"},
['#'] = "TREE",
up = "GRASS_UP4",
......
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