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
9 changes: 9 additions & 0 deletions source/AsepriteDotNet/Aseprite/Types/AsepriteTileset.cs
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,9 @@ public sealed class AsepriteTileset
/// </summary>
public ReadOnlySpan<Rgba32> Pixels => _pixels;

public AsepriteUserData UserData { get; }
public AsepriteUserData[] TileUserDatas { get; }

internal AsepriteTileset(AsepriteTilesetProperties tilesetProperties, string name, Rgba32[] pixels)
{
ID = (int)tilesetProperties.Id;
Expand All @@ -57,5 +60,11 @@ internal AsepriteTileset(AsepriteTilesetProperties tilesetProperties, string nam
TileSize = new Size(tilesetProperties.TileWidth, tilesetProperties.TileHeight);
Name = name;
_pixels = pixels;
UserData = new AsepriteUserData();
TileUserDatas = new AsepriteUserData[TileCount];
for(var i=0;i<TileUserDatas.Length;i++)
{
TileUserDatas[i] = new AsepriteUserData();
}
}
}
21 changes: 19 additions & 2 deletions source/AsepriteDotNet/IO/AsepriteFileLoader.cs
Original file line number Diff line number Diff line change
Expand Up @@ -277,6 +277,8 @@ private static AsepriteFile LoadFile(string fileName, AsepriteBinaryReader reade
List<AsepriteTag> tags = new List<AsepriteTag>();
List<AsepriteSlice> slices = new List<AsepriteSlice>();
List<AsepriteTileset> tilesets = new List<AsepriteTileset>();
int tilesetUserDataIndex = 0;

AsepriteUserData spriteUserData = new AsepriteUserData();

// Read frame-by-frame until all frames are read.
Expand Down Expand Up @@ -508,8 +510,22 @@ private static AsepriteFile LoadFile(string fileName, AsepriteBinaryReader reade
{
color = reader.ReadUnsafe<Rgba32>(Rgba32.StructSize);
}

if (currentUserData is null && paletteRead)
if (lastReadChunkType == ASE_CHUNK_TILESET)
{
var lasttileset = tilesets.Last();
if (tilesetUserDataIndex == -1)
{
lasttileset.UserData.Text = text;
lasttileset.UserData.Color = color;
}
else
{
lasttileset.TileUserDatas[tilesetUserDataIndex].Text = text;
lasttileset.TileUserDatas[tilesetUserDataIndex].Color = color;
}
tilesetUserDataIndex++;
}
else if (currentUserData is null && paletteRead)
{
spriteUserData.Text = text;
spriteUserData.Color = color;
Expand Down Expand Up @@ -603,6 +619,7 @@ private static AsepriteFile LoadFile(string fileName, AsepriteBinaryReader reade
AsepriteTileset tileset = new AsepriteTileset(properties, tilesetName, pixels);
tilesets.Add(tileset);
lastReadChunkType = chunkHeader.ChunkType;
tilesetUserDataIndex = -1;
}
break;

Expand Down