Exemplo n.º 1
0
        static void Main(String[] args)
        {
            Console.Clear();
            Console.Title = "Wowhead Ripper";
            List <String> files = new List <String>();

            DBC.LoadDBCs();
            DB2.LoadDB2s();

            foreach (String fileName in args)
            {
                if (!File.Exists(fileName))
                {
                    Console.WriteLine("File {0} doesnt exist, skipping", fileName);
                    continue;
                }
                if (File.ReadAllLines(fileName).Length == 0)
                {
                    Console.WriteLine("File {0} is empty, skipping", fileName);
                    continue;
                }
                files.Add(fileName);
            }

            foreach (String fileName in files)
            {
                Console.WriteLine("Loading file {0}...", fileName);
                StreamReader file = new StreamReader(fileName);

                while (file.Peek() >= 0)
                {
                    String      Line     = file.ReadLine();
                    List <uint> lineData = Def.GetAllNumbersOfString(Line);

                    if (lineData.Count != 3)
                    {
                        Console.WriteLine("Incorrect format for line \"{0}\"", Line);
                        continue;
                    }

                    UInt32 typeId        = lineData.ToArray()[0];
                    Int32  subTypeIdFlag = (int)lineData.ToArray()[1];
                    UInt32 entry         = lineData.ToArray()[2];

                    if (typeId >= Def.GetMaxTypeId())
                    {
                        Console.WriteLine("Incorrect typeId for line \"{0}\"", Line);
                        continue;
                    }

                    if (subTypeIdFlag >= (1 << (int)Def.GetMaxTypeId()))
                    {
                        Console.WriteLine("Incorrect flags for line \"{0}\"", Line);
                        continue;
                    }

                    if (!commandList.Keys.Contains(new KeyValuePair <uint, uint>(typeId, entry)))
                    {
                        commandList.Add(new KeyValuePair <uint, uint>(typeId, entry), subTypeIdFlag);
                    }
                    else
                    {
                        commandList[new KeyValuePair <uint, uint>(typeId, entry)] |= subTypeIdFlag;
                    }
                }
            }

            Console.WriteLine("Got {0} records to parse", commandList.Count);
            Console.WriteLine("Starting Parsing, please stand by");

            if (configFileName != "")
            {
                stream           = new StreamWriter(configFileName, true);
                count            = commandList.Count;
                stream.AutoFlush = true;
            }

            foreach (KeyValuePair <uint, uint> key in commandList.Keys)
            {
                new Thread(new ThreadStart(delegate { ParseData(key.Key, commandList[key], key.Value); })).Start();
                if (usePreCached)
                {
                    Thread.Sleep(20);
                }
                else
                {
                    Thread.Sleep(700); // Needs to be done because Wowhead will think that you are a bot
                }
            }

            while (count != datad)
            {
            }

            if (configFileName != "")
            {
                stream.Flush();
                stream.Close();
            }

            Console.Beep();
            Console.WriteLine("Parsing done!");
            Console.WriteLine("Press any key to continue...");
            Console.ReadKey();
        }