Beispiel #1
0
        public static bool ExtractWDTFiles(out Dictionary <DBCMap, string> wdtFiles)
        {
            wdtFiles = new Dictionary <DBCMap, string>();

            try
            {
                Logger.Notice("Extracting WDT files...");
                // Clean up output directory if neccesary.
                if (Directory.Exists(OutputDirectory))
                {
                    Directory.Delete(OutputDirectory, true);
                }
                Directory.CreateDirectory(OutputDirectory);

                if (!Directory.Exists(Paths.InputMapsPath))
                {
                    Logger.Error($"Unable to locate {Paths.InputMapsPath}, please check Config.txt and set a proper installation path.");
                    return(false);
                }

                foreach (var dir in Directory.EnumerateDirectories(Paths.InputMapsPath))
                {
                    var folderMapName = Path.GetFileName(dir);
                    if (DBCStorage.TryGetMapByName(folderMapName, out DBCMap map))
                    {
                        foreach (var file in Directory.EnumerateFiles(dir))
                        {
                            if (file.Contains("wdt"))
                            {
                                var filePath = Paths.Combine(dir, Path.GetFileName(file));
                                if (ExtractWDT(filePath, out string outputWdtPath))
                                {
                                    wdtFiles.Add(map, outputWdtPath);
                                }
                            }
                        }
                    }
                    else
                    {
                        Logger.Warning($"Unable to locate DBC map for: {folderMapName}");
                    }
                }

                return(true);
            }
            catch (Exception ex)
            {
                Logger.Error(ex.Message);
            }

            return(false);
        }