Beispiel #1
0
        /// <summary>
        /// Gets the <see cref="IAddGrhDataTask"/>s for animated <see cref="GrhData"/>s.
        /// </summary>
        /// <param name="rootGrhDir">The root grh dir.</param>
        /// <returns>The <see cref="IAddGrhDataTask"/>s for animated <see cref="GrhData"/>s.</returns>
        static IEnumerable <IAddGrhDataTask> GetAnimatedTasks(string rootGrhDir)
        {
            if (log.IsInfoEnabled)
            {
                log.InfoFormat("Searching for automatic animated GrhDatas from root `{0}`.", rootGrhDir);
            }

            var ret = new List <IAddGrhDataTask>();

            // Find all directories that match the needed pattern
            var dirs = GetAnimatedDirectories(rootGrhDir);

            foreach (var dir in dirs)
            {
                // Grab the animation info from the directory
                var animInfo = AutomaticAnimatedGrhData.GetAutomaticAnimationInfo(dir);
                if (animInfo == null)
                {
                    continue;
                }

                // Get the virtual directory (remove the root)
                var partialDir = dir.Substring(rootGrhDir.Length);
                if (partialDir.StartsWith(Path.DirectorySeparatorChar.ToString()) ||
                    partialDir.StartsWith(Path.AltDirectorySeparatorChar.ToString()))
                {
                    partialDir = partialDir.Substring(1);
                }

                // Get the categorization
                var lastDirSep = partialDir.LastIndexOf(Path.DirectorySeparatorChar);
                if (lastDirSep < 0)
                {
                    if (log.IsWarnEnabled)
                    {
                        log.WarnFormat("Animated GrhData found at `{0}`, but could not be created because it has no category.",
                                       dir);
                    }
                    continue;
                }

                var categoryStr = partialDir.Substring(0, lastDirSep);

                var categorization = new SpriteCategorization(new SpriteCategory(categoryStr), new SpriteTitle(animInfo.Title));

                // Ensure the GrhData doesn't already exist
                if (GrhInfo.GetData(categorization) != null)
                {
                    continue;
                }

                // Create the task
                ret.Add(new AddAnimatedGrhDataTask(categorization));
            }

            return(ret);
        }
Beispiel #2
0
        /// <summary>
        /// Makes sure the path could be parsed correctly with the given parameters and works for all path separators.
        /// </summary>
        /// <param name="prefix">The prefix string (to ensure it is properly ignored).</param>
        /// <param name="title">The sprite title.</param>
        /// <param name="speed">The animation speed.</param>
        static void RunValidPathTest(string prefix, string title, string speed)
        {
            foreach (var pathSep in _pathSeps)
            {
                var path = string.Format("{0}{4}{1}{2}{1}frames{1}{3}", prefix, AutomaticAnimatedGrhData.DirectoryNameDelimiter,
                                         title, speed, pathSep);

                var v = AutomaticAnimatedGrhData.GetAutomaticAnimationInfo(path);
                Assert.IsNotNull(v);
                Assert.AreEqual(v.Speed.ToString(), speed, "Path sep: " + pathSep);
                Assert.AreEqual(v.Title, title, "Path sep: " + pathSep);
            }
        }
Beispiel #3
0
 /// <summary>
 /// Gets the directories that are for automatic animations.
 /// </summary>
 /// <param name="rootDir">The root directory.</param>
 /// <returns>The directories that contain textures and are for automatic animations.</returns>
 static IEnumerable <string> GetAnimatedDirectories(string rootDir)
 {
     if (AutomaticAnimatedGrhData.IsAutomaticAnimatedGrhDataDirectory(rootDir))
     {
         yield return(rootDir);
     }
     else
     {
         foreach (var dir in Directory.GetDirectories(rootDir))
         {
             foreach (var dir2 in GetAnimatedDirectories(dir))
             {
                 yield return(dir2);
             }
         }
     }
 }
Beispiel #4
0
        /// <summary>
        /// Gets the directories that are not for automatic animations.
        /// </summary>
        /// <param name="rootDir">The root directory.</param>
        /// <returns>The directories that contain textures that are not for automatic animations.</returns>
        static IEnumerable <string> GetStationaryDirectories(string rootDir)
        {
            yield return(rootDir);

            foreach (var dir in Directory.GetDirectories(rootDir))
            {
                if (AutomaticAnimatedGrhData.IsAutomaticAnimatedGrhDataDirectory(dir))
                {
                    continue;
                }

                foreach (var dir2 in GetStationaryDirectories(dir))
                {
                    yield return(dir2);
                }
            }
        }