Пример #1
0
 /// <summary>
 /// 读取到配置信息;
 /// </summary>
 private AnimatedCursorConfig ReadConfig(IReadOnlyContent content)
 {
     using (var stream = content.GetInputStream(ConfigFileName))
     {
         var config = (AnimatedCursorConfig)xmlSerializer.Deserialize(stream);
         return(config);
     }
 }
Пример #2
0
        /// <summary>
        /// 从资源合集读取到动画光标;
        /// </summary>
        public AnimatedCursor Read(IReadOnlyContent content)
        {
            if (content == null)
            {
                throw new ArgumentNullException(nameof(content));
            }

            AnimatedCursorConfig    config   = ReadConfig(content);
            IEnumerable <Texture2D> textures = ReadTextures(content);

            return(new AnimatedCursor(config, textures));
        }
Пример #3
0
        /// <summary>
        /// 读取到光标;
        /// </summary>
        /// <exception cref="FileNotFoundException"></exception>
        public StaticCursor Read(IReadOnlyContent content)
        {
            if (content == null)
            {
                throw new ArgumentNullException(nameof(content));
            }

            var config  = ReadConfig(content);
            var texture = ReadTexture(content);

            return(new StaticCursor(texture, config));
        }
Пример #4
0
        private Texture2D ReadTexture(IReadOnlyContent content)
        {
            byte[] bytes;

            using (var stream = content.GetInputStream(TextureFileName))
            {
                bytes = new byte[stream.Length];
                stream.Read(bytes, 0, bytes.Length);
            }

            var texture = TextureFactroy.ReadAsCursor(bytes);

            return(texture);
        }
Пример #5
0
        private void ReadTextures(IReadOnlyContent content, SortedList <int, Texture2D> sortedList)
        {
            byte[] bytes;

            foreach (var textureEntry in content.EnumerateEntries("*" + TextureExtensionName, SearchOption.TopDirectoryOnly))
            {
                int number = GetNumberByName(textureEntry.Name);
                using (var stream = content.GetInputStream(textureEntry))
                {
                    bytes = new byte[stream.Length];
                    stream.Read(bytes, 0, bytes.Length);
                }

                var texture = TextureFactroy.ReadAsCursor(bytes);
                sortedList.Add(number, texture);
            }
        }
Пример #6
0
 private static bool TryRead(IReadOnlyContent content, out ICustomCursor cursor)
 {
     try
     {
         cursor = staticCursorFactroy.Read(content);
         return(true);
     }
     catch
     {
         try
         {
             cursor = animatedCursorFactroy.Read(content);
             return(true);
         }
         catch
         {
             cursor = null;
             return(false);
         }
     }
 }
Пример #7
0
 private IEnumerable <Texture2D> ReadTextures(IReadOnlyContent content)
 {
     sortedList.Clear();
     ReadTextures(content, sortedList);
     return(sortedList.Values);
 }