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; }
protected void Parsex2Header() { if (!x2HeaderParsed()) { using (var parser = new Parser()) { parser.GetX2Header(); WriteResource(parser.GetResources(), (int)SpecialResources.X2_HEADER); } } }
protected void ParseTerezi() { if (!TereziParsed()) { using (var parser = new Parser()) { parser.GetTerezi(); WriteResource(parser.GetResources(), (int)SpecialResources.TEREZI_PASSWORD); } } }
protected void ParseTrickster() { if (!TricksterParsed()) { if (!wl.TestAndSet()) { using (var parser = new Parser()) { parser.LoadTricksterResources(); WriteResource(parser.GetResources(), (int)SpecialResources.TRICKSTER_HEADER); } } } }
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; }