Exemplo n.º 1
0
        bool WritePage(WrapBGW bgw, int currentPage, int currentProgress, int x2phase, Parser parser)
        {
            try
            {
                var res = parser.GetResources();
                var links = parser.GetLinks();
                var text = parser.GetText();

                if (bgw != null)
                    bgw.ReportProgress(currentProgress, "Page " + currentPage + ": " + text.title);

                if (text.narr == null)
                {
                    if (bgw != null)
                        bgw.ReportProgress(currentProgress, text.promptType);
                    for (int i = 0; i < text.lines.Count(); ++i)
                    {
                        if (!text.lines[i].isImg)
                        {
                            if (bgw != null)
                                bgw.ReportProgress(currentProgress, (text.lines[i].subTexts != null ? text.lines[i].subTexts.Count() : 0) + " special subtexts, Colour: " + text.lines[i].hexColour + ": " + text.lines[i].text);
                        }
                        else
                            if (bgw != null)
                                bgw.ReportProgress(currentProgress, "Imageline");
                    }
                }
                else if(bgw != null)
                    bgw.ReportProgress(currentProgress, "Narrative: " + text.narr.text);

                if(bgw != null)
                    for (int i = 0; i < links.Count(); ++i)
                        bgw.ReportProgress(currentProgress, "\"" + links[i].originalText + "\" links to " + links[i].pageNumber);
                for (int i = 0; i < res.Count(); ++i)
                {
                    var fileSize = res[i].data.Count();
                    totalMegabytesDownloaded += (float)fileSize / (1024.0f * 1024.0f);
                    if (bgw != null)
                        bgw.ReportProgress(currentProgress, res[i].originalFileName + ": " + fileSize / 1024 + "KB");
                }
                if (bgw != null)
                    bgw.ReportProgress(currentProgress, "Total Data Downloaded: " + (int)totalMegabytesDownloaded + "MB");

                if (bgw != null && x2phase != 1)
                    bgw.ReportProgress(currentProgress, "");

                var p = new Page(currentPage, text, res, links);
                p.x2 = x2phase == 2;
                WritePageToDB(p);
                if (x2phase != 1)
                {
                    archivedPages.Add(currentPage);
                }

            }
            catch
            {
                Debugger.Break();
                if (bgw != null)
                    bgw.ReportProgress(currentProgress, "Error in archiving page: " + currentPage);
                return false;

            }
            return true;
        }
Exemplo n.º 2
0
 protected void Parsex2Header()
 {
     if (!x2HeaderParsed())
     {
         using (var parser = new Parser())
         {
             parser.GetX2Header();
             WriteResource(parser.GetResources(), (int)SpecialResources.X2_HEADER);
         }
     }
 }
Exemplo n.º 3
0
 protected void ParseTerezi()
 {
     if (!TereziParsed())
     {
         using (var parser = new Parser())
         {
             parser.GetTerezi();
             WriteResource(parser.GetResources(), (int)SpecialResources.TEREZI_PASSWORD);
         }
     }
 }
Exemplo n.º 4
0
 protected void ParseTrickster()
 {
     if (!TricksterParsed())
     {
         if (!wl.TestAndSet())
         {
             using (var parser = new Parser())
             {
                 parser.LoadTricksterResources();
                 WriteResource(parser.GetResources(), (int)SpecialResources.TRICKSTER_HEADER);
             }
         }
     }
 }
Exemplo n.º 5
0
        public bool Initialize(System.ComponentModel.BackgroundWorker bgw)
        {
            if (ReadLastIndexedOrCreateDatabase(bgw))
            {
                using (var parser = new Parser())
                {
                    bgw.ReportProgress(0, "Checking MSPA for latest page...");
                    lastPage = parser.GetLatestPage();
                    if (lastPage == 0)
                    {
                        lastPage = archivedPages.FindHighestPage();
                        if (lastPage == 0)
                        {
                            MessageBox.Show("The database is empty. Cannot read MSPA.");
                            return false;
                        }
                    }
                    else if (lastPage != (int)StoryBoundaries.HS_END)
                    {
                        var pg = archivedPages.Prune();
                        if (pg != 0)
                        {
                            bgw.ReportProgress(0, "Reparsing last page... The may take a while if you stopped on a big page");
                            Prune(pg);
                            SavePage(pg);
                        }
                    }

                    if (!IconsAreParsed())
                    {
                        bgw.ReportProgress(0, "Downloading header icons...");
                        try
                        {
                            parser.LoadIcons();
                            WriteResource(parser.GetResources(), (int)SpecialResources.CANDYCORNS);
                        }
                        catch
                        {
                            MessageBox.Show("Unable to load icons above pages! Parsing failure!");
                            return false;
                        }
                    }
                }
                return true;
            }
            MessageBox.Show("Error creating the database!");
            return false;
        }