コード例 #1
0
        string generateVdfsEntriesTreeView(string vdfFile)
        {
            var vdf = new VdfsReader(vdfFile);

            var entries = vdf.ReadEntries(false).ToArray();

            return(generateVdfsEntriesTreeView(entries));
        }
コード例 #2
0
ファイル: Test.cs プロジェクト: sebastiansobek/gmbt
        public void DetectIfWorldIsNotExists()
        {
            if (File.Exists(gothic.GetGameFile(Gothic.GameFile.WorldsVdf)) == false)
            {
                Logger.Fatal("Test.Error.RequireReinstall".Translate("Worlds.vdf"));
            }

            var worlds = new VdfsReader(gothic.GetGameFile(Gothic.GameFile.WorldsVdf))
                         .ReadEntries(false)
                         .Where(x => x.Name.EndsWith(".ZEN", StringComparison.OrdinalIgnoreCase))
                         .Select(x => x.Name).ToList();

            if (gothic.Version == Gothic.GameVersion.Gothic2)
            {
                if (File.Exists(gothic.GetGameFile(Gothic.GameFile.WorldsAddonVdf)) == false)
                {
                    Logger.Fatal("Test.Error.RequireReinstall".Translate("Worlds_Addon.vdf"));
                }

                worlds.AddRange(new VdfsReader(gothic.GetGameFile(Gothic.GameFile.WorldsAddonVdf))
                                .ReadEntries(false)
                                .Where(x => x.Name.EndsWith(".ZEN", StringComparison.OrdinalIgnoreCase))
                                .Select(x => x.Name).ToList());
            }

            foreach (var dir in Program.Config.ModFiles.Assets)
            {
                var worldsDir = Path.Combine(dir, "Worlds");

                if (Directory.Exists(worldsDir))
                {
                    worlds.AddRange(Directory.GetFiles(worldsDir, "*.ZEN", SearchOption.AllDirectories).ToList());
                }
            }

            var world = (Program.Options.TestVerb.World ?? Program.Config.ModFiles.DefaultWorld).ToUpper();

            if (worlds.Where(x => Path.GetFileName(x) == Path.GetFileName(world)).Count() < 1)
            {
                Logger.Fatal("Config.Error.FileDidNotFound".Translate(world));
            }
        }
コード例 #3
0
        public void DisableVdfs()
        {
            foreach (var vdf in Directory.GetFiles(GetGameDirectory(Gothic.GameDirectory.Data)))
            {
                var reader = new VdfsReader(vdf);

                var hasAnims = reader
                               .ReadEntries(false)
                               .Where(x => x.Name.Equals("ANIMS", StringComparison.OrdinalIgnoreCase))
                               .Select(x => x.Name).Count() > 0;

                reader.Dispose();

                if (hasAnims)
                {
                    var newPath = PathsUtils.ChangeExtension(vdf, ".disabled");

                    disabledVdfs.Add(newPath);

                    File.Move(vdf, newPath);
                }
            }
        }
コード例 #4
0
        static void Main(string[] args)
        {
            List <string> extra;

            try
            {
                extra = options.Parse(args);
            }
            catch (OptionException e)
            {
                Console.WriteLine(e.Message);

                return;
            }

            if (Options.ShowHelp || extra.Count == 0)
            {
                PrintHelp();
            }
            else
            {
                var filePath = extra[0];

                if (File.Exists(filePath) == false)
                {
                    Console.WriteLine("File `{0}` do not exists!", filePath);

                    return;
                }

                var reader = new VdfsReader(filePath);

                if (Options.ExtractPath != string.Empty)
                {
                    Console.WriteLine("Extracting archive `{0}` to directory `{1}` (with hierarchy: {2}).", filePath, Options.ExtractPath, Options.WithHierarchy);

                    using (var extractor = new VdfsExtractor(reader))
                    {
                        extractor.ExtractFiles(Options.ExtractPath,
                                               (Options.WithHierarchy == true)
                         ? ExtractOption.Hierarchy
                         : ExtractOption.NoHierarchy);

                        Console.WriteLine("Done.");
                    }
                }
                else if (Options.PrintTree || Options.SaveTree != string.Empty)
                {
                    var entries = reader.ReadEntries(false).ToArray();

                    var treeGenerator = new VdfsEntriesTreeGenerator(entries);

                    var tree = treeGenerator.Generate();

                    var treeView = tree.GetTreeView();

                    if (Options.PrintTree)
                    {
                        Console.WriteLine();
                        Console.Write(treeView);
                    }
                    else
                    {
                        File.WriteAllText(Options.SaveTree, treeView);

                        Console.WriteLine("Entries tree saved to file `{0}`", Options.SaveTree);
                    }
                }
                else
                {
                    PrintHelp();
                }
            }

            return;
        }
コード例 #5
0
 public void Init()
 {
     vdfsReader = new VdfsReader("Samples/test.vdf");
 }