using System; using System.Collections.Generic; using System.Text; using System.Drawing; using BluntDirectX.Direct3D; using OpenRa.FileFormats; namespace OpenRa.Game { static class CoreSheetBuilder { static TileSheetBuilder builder; static Size pageSize = new Size(512,512); public static void Initialize(GraphicsDevice device) { Provider sheetProvider = delegate { return new Sheet(pageSize, device); }; builder = new TileSheetBuilder(pageSize, sheetProvider); } public static SheetRectangle Add(byte[] src, Size size) { SheetRectangle rect = builder.AddImage(size); Util.CopyIntoChannel(rect, src); return rect; } } static class SpriteSheetBuilder { static Dictionary> sprites = new Dictionary>(); public static SheetRectangle LoadSprite(Package package, string filename) { SheetRectangle value; if (!sprites.TryGetValue(filename, out value)) { ShpReader shp = new ShpReader(package.GetContent(filename)); sprites.Add(filename, value = CoreSheetBuilder.Add(shp[0].Image, shp.Size)); } return value; } } }