Aseprite loading fix. Draw.Sprite overload

This commit is contained in:
Matt Thorson 2020-06-13 22:01:30 -07:00
parent 67f0bf6e88
commit 8917d7f873
3 changed files with 22 additions and 6 deletions

View File

@ -243,15 +243,18 @@ namespace Strawberry
LoadSpritesDir(path);
}
for (let file in Directory.EnumerateFiles(directory, "*.ase"))
for (let file in Directory.EnumerateFiles(directory, "*.ase*"))
{
let path = scope String();
file.GetFilePath(path);
let sprite = new [Friend]Sprite(path);
path.Remove(0, ContentRoot.Length + 9);
path.RemoveFromEnd(4);
Sprites.Add(new String(path), sprite);
if (path.EndsWith(".ase") || path.EndsWith(".aseprite"))
{
let sprite = new [Friend]Sprite(path);
path.Remove(0, ContentRoot.Length + 9);
path.RemoveFromEnd(path.Length - path.IndexOf('.'));
Sprites.Add(new String(path), sprite);
}
}
}

View File

@ -65,5 +65,13 @@ namespace Strawberry
SDL.Rect dst = Strawberry.Rect(position.X - Camera.X, position.Y - Camera.Y, sprite.Width, sprite.Height);
SDL.RenderCopy(Game.Renderer, sprite[frame].Texture, &src, &dst);
}
static public void Sprite(Sprite sprite, int frame, Point position, Point origin, float rotation)
{
SDL.Point cnt = origin;
SDL.Rect src = Strawberry.Rect(0, 0, sprite.Width, sprite.Height);
SDL.Rect dst = Strawberry.Rect(position.X - Camera.X, position.Y - Camera.Y, sprite.Width, sprite.Height);
SDL.RenderCopyEx(Game.Renderer, sprite[frame].Texture, &src, &dst, rotation, &cnt, .None);
}
}
}

View File

@ -55,6 +55,11 @@ namespace Strawberry
return Point((int)a.X, (int)a.Y);
}
static public implicit operator SDL2.SDL.Point(Point a)
{
return .((int32)a.X, (int32)a.Y);
}
static public bool operator==(Point a, Point b)
{
return a.X == b.X && a.Y == b.Y;