Exemple #1
0
 public static void Main()
 {
     using (var of = new OpenFileDialog()
     {
         Filter = "Collision caches | collision.cache"
     })
     {
         if (of.ShowDialog() == DialogResult.OK)
         {
             var ccf = new CollisionCache(of.FileName);
             var fd  = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "CCTest");
             ccf.Files.ForEach(x => x.Extract(Path.Combine(fd, x.Name)));
             CollisionCache.Write(Directory.GetFiles(fd, "*", SearchOption.AllDirectories).ToList().OrderByDescending(x => new FileInfo(x).CreationTime).ToList(), of.FileName + "_regenerated");
             //IntenseTest(of.FileNames.ToList());
             Console.ReadLine();
         }
     }
 }
Exemple #2
0
 public static string CloneCollisionCache(string old)
 {
     if (Cache.GetCacheTypeOfFile(old) == Cache.Cachetype.Collision)
     {
         var filename   = Path.GetFileName(Path.GetTempFileName());
         var desktop    = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
         var workingdir = desktop + "\\workingdir";
         var clonedir   = desktop + "\\clonedcachedir";
         try
         {
             Directory.GetFiles(clonedir + "\\Collisioncache").ToList().ForEach(x => File.Delete(x));
             Console.WriteLine("Deleted wms and bnks!");
             Directory.GetFiles(workingdir).ToList().ForEach(x => File.Delete(x));
             Console.WriteLine("Deleted soundcache clone!");
         }
         catch { }
         Console.Title = "Reading: " + old + "!";
         Console.WriteLine("-----------------------------------");
         var sc = new CollisionCache(old);
         foreach (var item in sc.Files)
         {
             item.Extract(clonedir + "\\" + item.Name);
             Console.WriteLine("Extracted: " + item.Name);
         }
         var orderedfiles = new List <string>();
         foreach (var oi in sc.Files)
         {
             foreach (var ni in Directory.GetFiles(clonedir + "\\Collisioncache").ToList().OrderBy(x => new FileInfo(x).CreationTime).ToList())
             {
                 if (("Collisioncache\\" + Path.GetFileName(ni)) == oi.Name)
                 {
                     orderedfiles.Add(ni);
                 }
             }
         }
         CollisionCache.Write(orderedfiles, workingdir + "\\" + filename + "_clone.cache");
         Console.WriteLine("-----------------------------------");
         Console.WriteLine("Collision cache clone created!");
         Console.WriteLine();
         return(GetHash(workingdir + "\\" + filename + "_clone.cache"));
     }
     return("Not a Collisioncache");
 }
        /// <summary>
        ///     Load a single collision cache
        /// </summary>
        /// <param name="filename"></param>
        public override void LoadArchive(string filename, bool ispatch = false)
        {
            if (Archives.ContainsKey(filename))
            {
                return;
            }

            var bundle = new CollisionCache(filename);

            foreach (var item in bundle.Files)
            {
                if (!Items.ContainsKey(item.Name))
                {
                    Items.Add(item.Name, new List <IGameFile>());
                }

                Items[item.Name].Add(item);
            }

            Archives.Add(filename, bundle);
        }
        /// <summary>
        ///     Load a single mod collision cache
        /// </summary>
        /// <param name="filename"></param>
        public override void LoadModArchive(string filename)
        {
            if (Archives.ContainsKey(filename))
            {
                return;
            }

            var bundle = new CollisionCache(filename);

            foreach (var item in bundle.Files)
            {
                if (!Items.ContainsKey(GetModFolder(filename) + "\\" + item.Name))
                {
                    Items.Add(GetModFolder(filename) + "\\" + item.Name, new List <IGameFile>());
                }

                Items[GetModFolder(filename) + "\\" + item.Name].Add(item);
            }

            Archives.Add(filename, bundle);
        }
        /// <summary>
        ///     Load a single collision cache
        /// </summary>
        /// <param name="filename"></param>
        public void LoadBundle(string filename)
        {
            if (Archives.ContainsKey(filename))
            {
                return;
            }

            var bundle = new CollisionCache(filename);

            foreach (var item in bundle.Files)
            {
                if (!Items.ContainsKey(item.Name))
                {
                    Items.Add(item.Name, new List <IWitcherFile>());
                }

                Items[item.Name].Add(item);
            }

            Archives.Add(filename, bundle);
        }