Ejemplo n.º 1
0
        /// <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);
            }
        }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 3
0
 /// <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))));
 }