Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 12 additions & 2 deletions docs/scripting-doc/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2696,8 +2696,14 @@ interface ScriptedMapFormat {
read?(fileName: string): TileMap;

/**
* A function that writes a map to the given
* file. Can use {@link TextFile} or {@link BinaryFile} to write the file. * When a non-empty string is returned, it is shown as error message.
* A function that writes a map to the given file.
*
* Can use {@link TextFile} or {@link BinaryFile} to write the file.
*
* The passed map can be modified and any changes only apply to this write.
* The original asset remains unchanged.
*
* When a non-empty string is returned, it is shown as error message.
*/
write?(map: TileMap, fileName: string): string | undefined;

Expand Down Expand Up @@ -4337,6 +4343,10 @@ interface ScriptedTilesetFormat {
* A function that writes a tileset to the given file.
*
* Can use {@link TextFile} or {@link BinaryFile} to write the file.
*
* The passed tileset can be modified and any changes only apply to this
* write. The original asset remains unchanged.
*
* When a non-empty string is returned, it is shown as error message.
*/
write?(tileset: Tileset, fileName: string): string | undefined;
Expand Down
6 changes: 6 additions & 0 deletions src/tiled/editabletileset.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,12 @@ EditableTileset::EditableTileset(const Tileset *tileset, QObject *parent)
{
}

EditableTileset::EditableTileset(const SharedTileset &tileset, QObject *parent)
: EditableAsset(tileset.data(), parent)
, mTileset(tileset)
{
}

EditableTileset::EditableTileset(TilesetDocument *tilesetDocument,
QObject *parent)
: EditableAsset(tilesetDocument->tileset().data(), parent)
Expand Down
1 change: 1 addition & 0 deletions src/tiled/editabletileset.h
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,7 @@ class EditableTileset final : public EditableAsset
Q_INVOKABLE explicit EditableTileset(const QString &name = QString(),
QObject *parent = nullptr);
explicit EditableTileset(const Tileset *tileset, QObject *parent = nullptr);
explicit EditableTileset(const SharedTileset &tileset, QObject *parent = nullptr);
explicit EditableTileset(TilesetDocument *tilesetDocument,
QObject *parent = nullptr);
~EditableTileset() override;
Expand Down
6 changes: 4 additions & 2 deletions src/tiled/scriptedfileformat.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,8 @@ std::unique_ptr<Map> ScriptedMapFormat::read(const QString &fileName)

bool ScriptedMapFormat::write(const Map *map, const QString &fileName, Options options)
{
EditableMap editable(map);
auto editableMap = map->clone();
EditableMap editable(std::move(editableMap));
return mFormat.write(&editable, fileName, options, mError);
}

Expand Down Expand Up @@ -248,7 +249,8 @@ SharedTileset ScriptedTilesetFormat::read(const QString &fileName)

bool ScriptedTilesetFormat::write(const Tileset &tileset, const QString &fileName, FileFormat::Options options)
{
EditableTileset editable(&tileset);
const auto editableTileset = tileset.clone();
EditableTileset editable(editableTileset);
return mFormat.write(&editable, fileName, options, mError);
}

Expand Down
Loading