/// <summary> /// Loads a <code>Sprite</code> from a file. /// </summary> /// <param name="sender">The Canvas Controller for the game canvas.</param> /// <param name="pack">The <code>Package</code> creating the <code>Sprite</code>.</param> /// <param name="map">The <code>DataMap</code> with the properties of the desired <code>Sprite</code>.</param> /// <returns>The <code>Sprite</code> outlined by the given <code>DataMap</code>.</returns> /// <seealso cref="LoadSprite(ICanvasAnimatedControl, Struct.Package, string)"/> /// <seealso cref="Render.Sprite"/> public static async Task <Render.Sprite> LoadSprite(ICanvasAnimatedControl sender, Struct.Package pack, IO.DataMap map) { bool d = map.Has("directional") && (bool)map["directional"].Data; string ft = (string)map["path"].Data; byte l = (byte)map["length"].Data; CanvasBitmap[] f; f = new CanvasBitmap[l]; /* So, we start doing some weird stuff here; since there's so much * potential variability in the way Sprite images can be loaded, * we put the loaded images into the DataMap as properties. This is * a void property in a DataMap so it won't be able to be converted * into a plaintext Property, but that's not a big deal. That said, * I don't know what the use case for such an operation might be for * extensions in the game, but it is possible through this method to * pass higher level data to an object through DataMaps via this method. */ for (int n = 0; n < l; n++) { map.Add(new IO.RawProperty("frame" + n, typeof(void), await CanvasBitmap.LoadAsync(sender, AppDataPath(ft + n + ".png")))); } if (d) { for (int n = 0; n < l; n++) { map.Add(new IO.RawProperty("rframe" + n, typeof(void), await CanvasBitmap.LoadAsync(sender, AppDataPath(ft + n + "L.png")))); } } string key = (string)map["key"].Data; Render.Sprite output = Render.Sprite.FromDataMap(map); if (Core.AddSprite(pack, key, output)) { return(output); } else { return(null); } }
public static async Task <Render.Texture> LoadTexture(ICanvasAnimatedControl sender, Struct.Package pack, string path, string key) { WriteLine(path + " ; " + AppDataPath(path)); var img = await CanvasBitmap.LoadAsync(sender, AppDataPath(path)); var output = new Render.Texture(img); if (Core.AddTexture(pack, key, output)) { return(output); } else { return(null); } }
/// <summary> /// Loads a <code>Sprite</code> from a file. /// </summary> /// <param name="sender">The Canvas Controller for the game canvas.</param> /// <param name="pack">The <code>Package</code> creating the <code>Sprite</code>.</param> /// <param name="path">The path to the <code>Sprite</code>'s <code>DataMap</code>.</param> /// <returns>The <code>Sprite</code> at the given path.</returns> /// <seealso cref="LoadSprite(ICanvasAnimatedControl, Struct.Package, DataMap)"/> /// <seealso cref="Render.Sprite"/> public static async Task <Render.Sprite> LoadSprite(ICanvasAnimatedControl sender, Struct.Package pack, string path) { return(await LoadSprite(sender, pack, new IO.DataMap(pack, new IO.AppDataFile(path)))); }