diff --git a/src/saland/Game.cpp b/src/saland/Game.cpp index 1ebc756..9e3eb10 100644 --- a/src/saland/Game.cpp +++ b/src/saland/Game.cpp @@ -649,6 +649,14 @@ void Game::Update() { std::system(command.c_str()); ResetWorldNoSave(data->gameRegion.GetRegionX(), data->gameRegion.GetRegionY(), false); } + for (const sago::tiled::TileSet& ts : data->gameRegion.world.tm.tileset) { + if (ts.source.length()) { + std::string source_filename = std::string("/maps/") + ts.source; + std::string dest_filename = std::string("worlds/") + data->worldName + "/maps/" + ts.source; + std::string tsxFile = sago::GetFileContent(source_filename); + sago::WriteFileContent(dest_filename.c_str(), tsxFile); + } + } if (reset_region) { ResetWorld(data->gameRegion.GetRegionX(), data->gameRegion.GetRegionY(), true); reset_region = false; diff --git a/src/saland/model/World.cpp b/src/saland/model/World.cpp index e791918..ad3ed2c 100644 --- a/src/saland/model/World.cpp +++ b/src/saland/model/World.cpp @@ -188,6 +188,9 @@ static void object_group_add_group_if_not_exist(sago::tiled::TileMap& tm, const object_groups.push_back(tog); } +/** + * find the layer "layer" and move it up until it is after "layer_to_place_after" + * */ static void bubble_layer_after(sago::tiled::TileMap& tm, const char* layer, const char* layer_to_place_after) { bool bubbeling = false; for (size_t i = 0; i < tm.layers.size(); ++i) { @@ -246,6 +249,7 @@ static void init_tilemap(sago::tiled::TileMap& tm, int& blockingLayer, int& bloc bubble_layer_after(tm, "prefab_blocking_2", "blocking"); bubble_layer_after(tm, "blocking_overlay_1", "prefab_blocking_2"); bubble_layer_after(tm, "prefab_overlay_1", "blocking_overlay_1"); + bubble_layer_after(tm, "overlay_1", "prefab_overlay_1"); } void World::init(std::shared_ptr& world, const std::string& mapFileName) {