diff --git a/src/doc/tileset_io.cpp b/src/doc/tileset_io.cpp index 3474d7c6e..86edf52c3 100644 --- a/src/doc/tileset_io.cpp +++ b/src/doc/tileset_io.cpp @@ -1,5 +1,5 @@ // Aseprite Document Library -// Copyright (C) 2019-2022 Igara Studio S.A. +// Copyright (C) 2019-2023 Igara Studio S.A. // // This file is released under the terms of the MIT license. // Read LICENSE.txt for more information. @@ -14,6 +14,7 @@ #include "doc/cancel_io.h" #include "doc/grid_io.h" #include "doc/image_io.h" +#include "doc/string_io.h" #include "doc/subobjects_io.h" #include "doc/tileset.h" #include "doc/user_data_io.h" @@ -28,6 +29,9 @@ // Tileset has UserData now #define TILESET_VER2 2 +// Tileset name (was missing originally) +#define TILESET_VER3 3 + namespace doc { using namespace base::serialization; @@ -48,8 +52,9 @@ bool write_tileset(std::ostream& os, write_image(os, tileset->get(ti).get(), cancel); } - write8(os, TILESET_VER2); + write8(os, TILESET_VER3); write_user_data(os, tileset->userData()); + write_string(os, tileset->name()); return true; } @@ -72,16 +77,18 @@ Tileset* read_tileset(std::istream& is, // Read extra version byte after tiles uint32_t ver = read8(is); - if (ver == TILESET_VER1 || - ver == TILESET_VER2) { + if (ver >= TILESET_VER1) { if (isOldVersion) *isOldVersion = false; tileset->setBaseIndex(1); - if (ver == TILESET_VER2) { + if (ver >= TILESET_VER2) { UserData userData = read_user_data(is); tileset->setUserData(userData); + + if (ver >= TILESET_VER3) + tileset->setName(read_string(is)); } } // Old tileset used in internal versions (this was added to recover diff --git a/tests/scripts/tileset.lua b/tests/scripts/tileset.lua index d1ee5a763..f0ec10308 100644 --- a/tests/scripts/tileset.lua +++ b/tests/scripts/tileset.lua @@ -67,12 +67,13 @@ do -- Create a tileset passing a grid local tileset2 = spr:newTileset(Grid{0, 0 ,32, 32}) + tileset2.name = "Tileset 2" assert(#tileset2 == 1) assert(tileset2.grid.origin.x == 0) assert(tileset2.grid.origin.y == 0) assert(tileset2.grid.tileSize.width == 32) assert(tileset2.grid.tileSize.height == 32) - assert(tileset2.name == "") + assert(tileset2.name == "Tileset 2") assert(#spr.tilesets == 2) -- Create a tileset passing a table and a number of tiles @@ -114,7 +115,7 @@ do assert(tileset2.grid.origin.y == 0) assert(tileset2.grid.tileSize.width == 32) assert(tileset2.grid.tileSize.height == 32) - assert(tileset2.name == "") + assert(tileset2.name == "Tileset 2") end do