diff --git a/data/maps/city_0x-2.tmx b/data/maps/city_0x-2.tmx index 52ef671..d831287 100644 --- a/data/maps/city_0x-2.tmx +++ b/data/maps/city_0x-2.tmx @@ -1,46 +1,28 @@ - + - - - - - - - - - - - - - - - - - - - - + + - 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 - + diff --git a/data/maps/city_outside.tsx b/data/maps/city_outside.tsx new file mode 100644 index 0000000..c2a0ed0 --- /dev/null +++ b/data/maps/city_outside.tsx @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/data/maps/sample1.tmx b/data/maps/sample1.tmx index d0f804d..2f9a867 100644 --- a/data/maps/sample1.tmx +++ b/data/maps/sample1.tmx @@ -1,9 +1,7 @@ - - - + eJzt0aENADAMA8Hsv0U7aXkVHks5cNzy36q6AAAAAABDTmN602ZdD33ym+iS2USb3Ca66LLd/7ku2TQBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAGQ9zDLk7 diff --git a/data/maps/template_forrest.tmx b/data/maps/template_forrest.tmx index 30f74ea..5d2b790 100644 --- a/data/maps/template_forrest.tmx +++ b/data/maps/template_forrest.tmx @@ -1,9 +1,7 @@ - - - + eAHt2zEKACAIAEB7q/3/DfUAxwSDG1wcJOIGBc0VkcIfMMAAAwwwwAADDDDAAAMMMMAAAwwwwAADDDDAAAMMMMAAAwwwwAADDDDAAAMMMMAAAwwwwAADDDDAAAMMXAObAw4YYIABBhhggIHvDVQ9XZVzY+zOmgEGGGCAAQYYYIABBhhggAEGGGCAAQYYYIABBhhggAEGGGCAAQYYYIABBqYYsOPE4hSL3sEiAwwwwAADDDDAAAMMdBswAzPWbUx9xhhggAEGGGCAAQYYYIABBhhggAEGGGCAAQYYYIABBhhggAEGGGCAAQYYYIABBhhggIG3Bg4x3kMn diff --git a/src/sagotmx/tmx_struct.h b/src/sagotmx/tmx_struct.h index 6fc3af3..af9d352 100644 --- a/src/sagotmx/tmx_struct.h +++ b/src/sagotmx/tmx_struct.h @@ -581,7 +581,7 @@ inline void getTextureLocationFromGid(const TileMap& tm, int gid, std::string* i //Follow source links ts = ts->alternativeSource; } - //std::cout << "ts: " << ts->name << ", " << ts->image.source << ", " << ts->image.height << ", " << ts->image.width << "\n"; + //std::cout << "ts: " << ts->name << ", " << ts->image.source << ", " << ts->image.height << ", " << ts->image.width << ", gid: " << gid+ts->firstgid << "\n"; if (imageFile) { *imageFile = ts->image.source; } diff --git a/src/saland/model/World.cpp b/src/saland/model/World.cpp index b085508..f5d34a7 100644 --- a/src/saland/model/World.cpp +++ b/src/saland/model/World.cpp @@ -162,11 +162,12 @@ void World::init(std::shared_ptr& world, const std::string& mapFileName this->physicsWorld = world; std::string tmx_file = sago::GetFileContent(mapFileName); tm = sago::tiled::string2tilemap(tmx_file); + // We run though all the externally referenced tilesets to inject them into the tilemap for (size_t i = 0; i < tm.tileset.size(); ++i) { if (tm.tileset[i].source.length()) { std::string tsx_file = sago::GetFileContent("maps/"+tm.tileset[i].source); - ts = sago::tiled::string2tileset(tsx_file); - tm.tileset[i].alternativeSource = &ts; + ts.push_back(sago::tiled::string2tileset(tsx_file)); + tm.tileset[i].alternativeSource = &ts.back(); } } init_physics(world); diff --git a/src/saland/model/World.hpp b/src/saland/model/World.hpp index 130e7f3..5c1b5a2 100644 --- a/src/saland/model/World.hpp +++ b/src/saland/model/World.hpp @@ -27,6 +27,7 @@ https://github.com/sago007/saland #include "../../sagotmx/tmx_struct.h" #include "../../sago/SagoMisc.hpp" #include +#include class World { public: @@ -37,7 +38,7 @@ public: bool tile_protected(int x, int y) const; bool tile_blocking(int x, int y) const; //private: - sago::tiled::TileSet ts; + std::list ts; //External tilesets. Loaded into a list, so that references to the content does not become invalid sago::tiled::TileMap tm; std::shared_ptr physicsWorld; std::vector managed_bodies;