mirror of
https://github.com/aseprite/aseprite.git
synced 2024-12-28 06:21:25 +00:00
Fix bug undoing tileset deletion wasn't restoring its name correctly
Actually it looks like a long-standing bug in the write/read_tileset() functions where tileset names aren't saved (so another bug fixed with this change is that restoring a tileset from a crashes session/file, will restore the tileset name correctly).
This commit is contained in:
parent
705cc3af50
commit
11a3e634b1
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user