public bool TryParseSprite(Stream stream, string filename, out ISpriteFrame[] frames, out TypeDictionary metadata) { if (!filename.EndsWith(".mapd")) { metadata = null; frames = null; return(false); } frames = new Mapd(stream as SegmentStream).Layers.Select(layer => new MapdSpriteFrame(layer)).ToArray(); metadata = null; return(true); }
public bool TryParseSprite(Stream stream, string filename, out ISpriteFrame[]?frames, out TypeDictionary?metadata) { metadata = null; if (!filename.EndsWith(".mapd") || stream is not SegmentStream segmentStream) { frames = null; return(false); } // This is damn ugly, but MAPD uses offsets from LVL start. segmentStream.BaseStream.Position = segmentStream.BaseOffset; frames = new Mapd(segmentStream.BaseStream).Layers.Select(layer => new MapdSpriteFrame(layer) as ISpriteFrame).ToArray(); return(true); }