private void lstItems_SelectedIndexChanged(object sender, EventArgs e) { if (_blnSkipRefresh) { return; } using (new CursorWait(this)) { if (lstItems.SelectedValue is MasterIndexEntry objEntry) { lblSourceLabel.Visible = true; lblSource.Visible = true; lblSourceClickReminder.Visible = true; lblSource.Text = objEntry.DisplaySource.ToString(); lblSource.ToolTipText = objEntry.DisplaySource.LanguageBookTooltip; if (!_dicCachedNotes.TryGetValue(objEntry, out string strNotes)) { strNotes = CommonFunctions.GetTextFromPdf(objEntry.Source.ToString(), objEntry.EnglishNameOnPage); if (string.IsNullOrEmpty(strNotes) && !GlobalSettings.Language.Equals(GlobalSettings.DefaultLanguage, StringComparison.OrdinalIgnoreCase) && (objEntry.TranslatedNameOnPage != objEntry.EnglishNameOnPage || objEntry.Source.Page != objEntry.DisplaySource.Page)) { // don't check again it is not translated strNotes = CommonFunctions.GetTextFromPdf(objEntry.DisplaySource.ToString(), objEntry.TranslatedNameOnPage); } _dicCachedNotes.TryAdd(objEntry, strNotes); } txtNotes.Text = strNotes; txtNotes.Visible = true; } else { lblSourceLabel.Visible = false; lblSource.Visible = false; lblSourceClickReminder.Visible = false; txtNotes.Visible = false; } } }
/// Create a Martial Art from an XmlNode. /// <param name="objXmlArtNode">XmlNode to create the object from.</param> public void Create(XmlNode objXmlArtNode) { if (!objXmlArtNode.TryGetField("id", Guid.TryParse, out _guiSourceID)) { Log.Warn(new object[] { "Missing id field for xmlnode", objXmlArtNode }); Utils.BreakIfDebug(); } if (objXmlArtNode.TryGetStringFieldQuickly("name", ref _strName)) { _objCachedMyXmlNode = null; } objXmlArtNode.TryGetStringFieldQuickly("source", ref _strSource); objXmlArtNode.TryGetStringFieldQuickly("page", ref _strPage); objXmlArtNode.TryGetInt32FieldQuickly("cost", ref _intKarmaCost); if (!objXmlArtNode.TryGetStringFieldQuickly("altnotes", ref _strNotes)) { objXmlArtNode.TryGetStringFieldQuickly("notes", ref _strNotes); } _blnIsQuality = objXmlArtNode["isquality"]?.InnerText == bool.TrueString; if (objXmlArtNode["bonus"] != null) { ImprovementManager.CreateImprovements(_objCharacter, Improvement.ImprovementSource.MartialArt, InternalId, objXmlArtNode["bonus"], 1, DisplayNameShort(GlobalOptions.Language)); } if (string.IsNullOrEmpty(Notes)) { string strEnglishNameOnPage = Name; string strNameOnPage = string.Empty; // make sure we have something and not just an empty tag if (objXmlArtNode.TryGetStringFieldQuickly("nameonpage", ref strNameOnPage) && !string.IsNullOrEmpty(strNameOnPage)) { strEnglishNameOnPage = strNameOnPage; } string strQualityNotes = CommonFunctions.GetTextFromPdf(Source + ' ' + Page, strEnglishNameOnPage); if (string.IsNullOrEmpty(strQualityNotes) && GlobalOptions.Language != GlobalOptions.DefaultLanguage) { string strTranslatedNameOnPage = CurrentDisplayName; // don't check again it is not translated if (strTranslatedNameOnPage != _strName) { // if we found <altnameonpage>, and is not empty and not the same as english we must use that instead if (objXmlArtNode.TryGetStringFieldQuickly("altnameonpage", ref strNameOnPage) && !string.IsNullOrEmpty(strNameOnPage) && strNameOnPage != strEnglishNameOnPage) { strTranslatedNameOnPage = strNameOnPage; } Notes = CommonFunctions.GetTextFromPdf(Source + ' ' + DisplayPage(GlobalOptions.Language), strTranslatedNameOnPage); } } else { Notes = strQualityNotes; } } }
/// Create a Martial Art Technique from an XmlNode. /// <param name="xmlTechniqueDataNode">XmlNode to create the object from.</param> public void Create(XmlNode xmlTechniqueDataNode) { if (!xmlTechniqueDataNode.TryGetField("id", Guid.TryParse, out _guiSourceID)) { Log.Warn(new object[] { "Missing id field for xmlnode", xmlTechniqueDataNode }); Utils.BreakIfDebug(); } if (xmlTechniqueDataNode.TryGetStringFieldQuickly("name", ref _strName)) { if (!xmlTechniqueDataNode.TryGetStringFieldQuickly("altnotes", ref _strNotes)) { xmlTechniqueDataNode.TryGetStringFieldQuickly("notes", ref _strNotes); } } xmlTechniqueDataNode.TryGetStringFieldQuickly("source", ref _strSource); xmlTechniqueDataNode.TryGetStringFieldQuickly("page", ref _strPage); if (string.IsNullOrEmpty(Notes)) { string strEnglishNameOnPage = Name; string strNameOnPage = string.Empty; // make sure we have something and not just an empty tag if (xmlTechniqueDataNode.TryGetStringFieldQuickly("nameonpage", ref strNameOnPage) && !string.IsNullOrEmpty(strNameOnPage)) { strEnglishNameOnPage = strNameOnPage; } string strQualityNotes = CommonFunctions.GetTextFromPdf(Source + ' ' + Page, strEnglishNameOnPage); if (string.IsNullOrEmpty(strQualityNotes) && GlobalOptions.Language != GlobalOptions.DefaultLanguage) { string strTranslatedNameOnPage = CurrentDisplayName; // don't check again it is not translated if (strTranslatedNameOnPage != _strName) { // if we found <altnameonpage>, and is not empty and not the same as english we must use that instead if (xmlTechniqueDataNode.TryGetStringFieldQuickly("altnameonpage", ref strNameOnPage) && !string.IsNullOrEmpty(strNameOnPage) && strNameOnPage != strEnglishNameOnPage) { strTranslatedNameOnPage = strNameOnPage; } Notes = CommonFunctions.GetTextFromPdf(Source + ' ' + DisplayPage(GlobalOptions.Language), strTranslatedNameOnPage); } } else { Notes = strQualityNotes; } } if (xmlTechniqueDataNode["bonus"] == null) { return; } if (!ImprovementManager.CreateImprovements(_objCharacter, Improvement.ImprovementSource.MartialArtTechnique, _guiID.ToString("D", GlobalOptions.InvariantCultureInfo), xmlTechniqueDataNode["bonus"], 1, CurrentDisplayName)) { _guiID = Guid.Empty; } }