/// Create an Art from an XmlNode. /// <param name="objXmlArtNode">XmlNode to create the object from.</param> /// <param name="objSource">Source of the Improvement.</param> public void Create(XmlNode objXmlArtNode, Improvement.ImprovementSource objSource) { 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; _objCachedMyXPathNode = null; } objXmlArtNode.TryGetStringFieldQuickly("source", ref _strSource); objXmlArtNode.TryGetStringFieldQuickly("page", ref _strPage); _objImprovementSource = objSource; if (!objXmlArtNode.TryGetMultiLineStringFieldQuickly("altnotes", ref _strNotes)) { objXmlArtNode.TryGetMultiLineStringFieldQuickly("notes", ref _strNotes); } string sNotesColor = ColorTranslator.ToHtml(ColorManager.HasNotesColor); objXmlArtNode.TryGetStringFieldQuickly("notesColor", ref sNotesColor); _colNotes = ColorTranslator.FromHtml(sNotesColor); if (string.IsNullOrEmpty(Notes)) { Notes = CommonFunctions.GetBookNotes(objXmlArtNode, Name, CurrentDisplayName, Source, Page, DisplayPage(GlobalSettings.Language), _objCharacter); } objXmlArtNode.TryGetInt32FieldQuickly("grade", ref _intGrade); _nodBonus = objXmlArtNode["bonus"]; if (_nodBonus != null) { if (!ImprovementManager.CreateImprovements(_objCharacter, objSource, _guiID.ToString("D", GlobalSettings.InvariantCultureInfo), _nodBonus, 1, DisplayNameShort(GlobalSettings.Language))) { _guiID = Guid.Empty; return; } if (!string.IsNullOrEmpty(ImprovementManager.SelectedValue)) { _strName += LanguageManager.GetString("String_Space") + '(' + ImprovementManager.SelectedValue + ')'; } } /* * if (string.IsNullOrEmpty(_strNotes)) * { * _strNotes = CommonFunctions.GetTextFromPdf(_strSource + ' ' + _strPage, _strName); * if (string.IsNullOrEmpty(_strNotes)) * { * _strNotes = CommonFunctions.GetTextFromPdf(Source + ' ' + DisplayPage(GlobalSettings.Language), CurrentDisplayName); * } * } */ }
/// Create a Complex Form from an XmlNode. /// <param name="objXmlComplexFormNode">XmlNode to create the object from.</param> /// <param name="strExtra">Value to forcefully select for any ImprovementManager prompts.</param> public void Create(XmlNode objXmlComplexFormNode, string strExtra = "") { if (!objXmlComplexFormNode.TryGetField("id", Guid.TryParse, out _guiSourceID)) { Log.Warn(new object[] { "Missing id field for complex form xmlnode", objXmlComplexFormNode }); Utils.BreakIfDebug(); } objXmlComplexFormNode.TryGetField("id", Guid.TryParse, out _guiSourceID); objXmlComplexFormNode.TryGetStringFieldQuickly("name", ref _strName); objXmlComplexFormNode.TryGetStringFieldQuickly("target", ref _strTarget); objXmlComplexFormNode.TryGetStringFieldQuickly("source", ref _strSource); objXmlComplexFormNode.TryGetStringFieldQuickly("page", ref _strPage); objXmlComplexFormNode.TryGetStringFieldQuickly("duration", ref _strDuration); objXmlComplexFormNode.TryGetStringFieldQuickly("fv", ref _strFv); if (!objXmlComplexFormNode.TryGetMultiLineStringFieldQuickly("altnotes", ref _strNotes)) { objXmlComplexFormNode.TryGetMultiLineStringFieldQuickly("notes", ref _strNotes); } string sNotesColor = ColorTranslator.ToHtml(ColorManager.HasNotesColor); objXmlComplexFormNode.TryGetStringFieldQuickly("notesColor", ref sNotesColor); _colNotes = ColorTranslator.FromHtml(sNotesColor); if (string.IsNullOrEmpty(Notes)) { Notes = CommonFunctions.GetBookNotes(objXmlComplexFormNode, Name, CurrentDisplayName, Source, Page, DisplayPage(GlobalSettings.Language), _objCharacter); } if (objXmlComplexFormNode["bonus"] != null) { ImprovementManager.ForcedValue = strExtra; if (!ImprovementManager.CreateImprovements(_objCharacter, Improvement.ImprovementSource.Spell, _guiID.ToString("D", GlobalSettings.InvariantCultureInfo), objXmlComplexFormNode["bonus"], 1, CurrentDisplayName)) { _guiID = Guid.Empty; return; } if (!string.IsNullOrEmpty(ImprovementManager.SelectedValue)) { _strExtra = ImprovementManager.SelectedValue; } } else { _strExtra = strExtra; } }
/// Create a Program from an XmlNode. /// <param name="objXmlProgramNode">XmlNode to create the object from.</param> /// <param name="strExtra">Value to forcefully select for any ImprovementManager prompts.</param> /// <param name="boolCanDelete">Can this AI program be deleted on its own (set to false for Improvement-granted programs).</param> public void Create(XmlNode objXmlProgramNode, string strExtra = "", bool boolCanDelete = true) { if (!objXmlProgramNode.TryGetField("id", Guid.TryParse, out _guiSourceID)) { Log.Warn(new object[] { "Missing id field for program xmlnode", objXmlProgramNode }); Utils.BreakIfDebug(); } if (objXmlProgramNode.TryGetStringFieldQuickly("name", ref _strName)) { _objCachedMyXmlNode = null; _objCachedMyXPathNode = null; } _strRequiresProgram = LanguageManager.GetString("String_None"); _boolCanDelete = boolCanDelete; objXmlProgramNode.TryGetStringFieldQuickly("require", ref _strRequiresProgram); objXmlProgramNode.TryGetStringFieldQuickly("source", ref _strSource); objXmlProgramNode.TryGetStringFieldQuickly("page", ref _strPage); if (!objXmlProgramNode.TryGetMultiLineStringFieldQuickly("altnotes", ref _strNotes)) { objXmlProgramNode.TryGetMultiLineStringFieldQuickly("notes", ref _strNotes); } string sNotesColor = ColorTranslator.ToHtml(ColorManager.HasNotesColor); objXmlProgramNode.TryGetStringFieldQuickly("notesColor", ref sNotesColor); _colNotes = ColorTranslator.FromHtml(sNotesColor); if (string.IsNullOrEmpty(Notes)) { Notes = CommonFunctions.GetBookNotes(objXmlProgramNode, Name, CurrentDisplayNameShort, Source, Page, DisplayPage(GlobalSettings.Language), _objCharacter); } _strExtra = strExtra; string strCategory = string.Empty; if (objXmlProgramNode.TryGetStringFieldQuickly("category", ref strCategory)) { _boolIsAdvancedProgram = strCategory == "Advanced Programs"; } }
/// 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; _objCachedMyXPathNode = null; } objXmlArtNode.TryGetStringFieldQuickly("source", ref _strSource); objXmlArtNode.TryGetStringFieldQuickly("page", ref _strPage); objXmlArtNode.TryGetInt32FieldQuickly("cost", ref _intKarmaCost); if (!objXmlArtNode.TryGetMultiLineStringFieldQuickly("altnotes", ref _strNotes)) { objXmlArtNode.TryGetMultiLineStringFieldQuickly("notes", ref _strNotes); } string sNotesColor = ColorTranslator.ToHtml(ColorManager.HasNotesColor); objXmlArtNode.TryGetStringFieldQuickly("notesColor", ref sNotesColor); _colNotes = ColorTranslator.FromHtml(sNotesColor); _blnIsQuality = objXmlArtNode["isquality"]?.InnerText == bool.TrueString; if (objXmlArtNode["bonus"] != null) { ImprovementManager.CreateImprovements(_objCharacter, Improvement.ImprovementSource.MartialArt, InternalId, objXmlArtNode["bonus"], 1, DisplayNameShort(GlobalSettings.Language)); } if (string.IsNullOrEmpty(Notes)) { Notes = CommonFunctions.GetBookNotes(objXmlArtNode, Name, CurrentDisplayName, Source, Page, DisplayPage(GlobalSettings.Language), _objCharacter); } }
/// 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) && !xmlTechniqueDataNode.TryGetMultiLineStringFieldQuickly("altnotes", ref _strNotes)) { xmlTechniqueDataNode.TryGetMultiLineStringFieldQuickly("notes", ref _strNotes); } string sNotesColor = ColorTranslator.ToHtml(ColorManager.HasNotesColor); xmlTechniqueDataNode.TryGetStringFieldQuickly("notesColor", ref sNotesColor); _colNotes = ColorTranslator.FromHtml(sNotesColor); xmlTechniqueDataNode.TryGetStringFieldQuickly("source", ref _strSource); xmlTechniqueDataNode.TryGetStringFieldQuickly("page", ref _strPage); if (string.IsNullOrEmpty(Notes)) { Notes = CommonFunctions.GetBookNotes(xmlTechniqueDataNode, Name, CurrentDisplayName, Source, Page, DisplayPage(GlobalSettings.Language), _objCharacter); } if (xmlTechniqueDataNode["bonus"] == null) { return; } if (!ImprovementManager.CreateImprovements(_objCharacter, Improvement.ImprovementSource.MartialArtTechnique, _guiID.ToString("D", GlobalSettings.InvariantCultureInfo), xmlTechniqueDataNode["bonus"], 1, CurrentDisplayName)) { _guiID = Guid.Empty; } }
/// <summary> /// Create a Mentor Spirit from an XmlNode. /// </summary> /// <param name="xmlMentor">XmlNode to create the object from.</param> /// <param name="eMentorType">Whether this is a Mentor or a Paragon.</param> /// <param name="strForceValueChoice1">Name/Text for Choice 1.</param> /// <param name="strForceValueChoice2">Name/Text for Choice 2.</param> /// <param name="strForceValue">Force a value to be selected for the Mentor Spirit.</param> public void Create(XmlNode xmlMentor, Improvement.ImprovementType eMentorType, string strForceValue = "", string strForceValueChoice1 = "", string strForceValueChoice2 = "") { _eMentorType = eMentorType; _objCachedMyXmlNode = null; _objCachedMyXPathNode = null; xmlMentor.TryGetStringFieldQuickly("name", ref _strName); xmlMentor.TryGetStringFieldQuickly("source", ref _strSource); xmlMentor.TryGetStringFieldQuickly("page", ref _strPage); if (!xmlMentor.TryGetMultiLineStringFieldQuickly("altnotes", ref _strNotes)) { xmlMentor.TryGetMultiLineStringFieldQuickly("notes", ref _strNotes); } if (string.IsNullOrEmpty(_strNotes)) { _strNotes = CommonFunctions.GetBookNotes(xmlMentor, Name, DisplayNameShort(GlobalSettings.Language), Source, Page, DisplayPage(GlobalSettings.Language), _objCharacter); } if (!xmlMentor.TryGetField("id", Guid.TryParse, out _guiSourceID)) { Log.Warn(new object[] { "Missing id field for xmlnode", xmlMentor }); Utils.BreakIfDebug(); } // Cache the English list of advantages gained through the Mentor Spirit. xmlMentor.TryGetMultiLineStringFieldQuickly("advantage", ref _strAdvantage); xmlMentor.TryGetMultiLineStringFieldQuickly("disadvantage", ref _strDisadvantage); _nodBonus = xmlMentor["bonus"]; if (_nodBonus != null) { string strOldForce = ImprovementManager.ForcedValue; string strOldSelected = ImprovementManager.SelectedValue; ImprovementManager.ForcedValue = strForceValue; if (!ImprovementManager.CreateImprovements(_objCharacter, Improvement.ImprovementSource.MentorSpirit, _guiID.ToString("D", GlobalSettings.InvariantCultureInfo), _nodBonus, 1, DisplayNameShort(GlobalSettings.Language))) { _guiID = Guid.Empty; return; } _strExtra = ImprovementManager.SelectedValue; ImprovementManager.ForcedValue = strOldForce; ImprovementManager.SelectedValue = strOldSelected; } else if (!string.IsNullOrEmpty(strForceValue)) { _strExtra = strForceValue; } _nodChoice1 = xmlMentor.SelectSingleNode("choices/choice[name = " + strForceValueChoice1.CleanXPath() + "]/bonus"); if (_nodChoice1 != null) { string strOldForce = ImprovementManager.ForcedValue; string strOldSelected = ImprovementManager.SelectedValue; //ImprovementManager.ForcedValue = strForceValueChoice1; if (!ImprovementManager.CreateImprovements(_objCharacter, Improvement.ImprovementSource.MentorSpirit, _guiID.ToString("D", GlobalSettings.InvariantCultureInfo), _nodChoice1, 1, DisplayNameShort(GlobalSettings.Language))) { _guiID = Guid.Empty; return; } if (string.IsNullOrEmpty(_strExtra)) { _strExtra = ImprovementManager.SelectedValue; } ImprovementManager.ForcedValue = strOldForce; ImprovementManager.SelectedValue = strOldSelected; } else if (string.IsNullOrEmpty(_strExtra) && !string.IsNullOrEmpty(strForceValueChoice1)) { _strExtra = strForceValueChoice1; } _nodChoice2 = xmlMentor.SelectSingleNode("choices/choice[name = " + strForceValueChoice2.CleanXPath() + "]/bonus"); if (_nodChoice2 != null) { string strOldForce = ImprovementManager.ForcedValue; string strOldSelected = ImprovementManager.SelectedValue; //ImprovementManager.ForcedValue = strForceValueChoice2; if (!ImprovementManager.CreateImprovements(_objCharacter, Improvement.ImprovementSource.MentorSpirit, _guiID.ToString("D", GlobalSettings.InvariantCultureInfo), _nodChoice2, 1, DisplayNameShort(GlobalSettings.Language))) { _guiID = Guid.Empty; return; } if (string.IsNullOrEmpty(_strExtra)) { _strExtra = ImprovementManager.SelectedValue; } ImprovementManager.ForcedValue = strOldForce; ImprovementManager.SelectedValue = strOldSelected; } else if (string.IsNullOrEmpty(_strExtra) && !string.IsNullOrEmpty(strForceValueChoice2)) { _strExtra = strForceValueChoice2; } /* * if (string.IsNullOrEmpty(_strNotes)) * { * _strNotes = CommonFunctions.GetTextFromPdf(_strSource + ' ' + _strPage, _strName); * if (string.IsNullOrEmpty(_strNotes)) * { * _strNotes = CommonFunctions.GetTextFromPdf(Source + ' ' + DisplayPage(GlobalSettings.Language), CurrentDisplayName); * } * } */ }
/// Create a Critter Power from an XmlNode. /// <param name="objXmlPowerNode">XmlNode to create the object from.</param> /// <param name="intRating">Selected Rating for the Gear.</param> /// <param name="strForcedValue">Value to forcefully select for any ImprovementManager prompts.</param> public void Create(XmlNode objXmlPowerNode, int intRating = 0, string strForcedValue = "") { if (!objXmlPowerNode.TryGetField("id", Guid.TryParse, out _guiSourceID)) { Log.Warn(new object[] { "Missing id field for power xmlnode", objXmlPowerNode }); Utils.BreakIfDebug(); } if (objXmlPowerNode.TryGetStringFieldQuickly("name", ref _strName)) { _objCachedMyXmlNode = null; _objCachedMyXPathNode = null; } _intRating = intRating; _nodBonus = objXmlPowerNode.SelectSingleNode("bonus"); if (!objXmlPowerNode.TryGetMultiLineStringFieldQuickly("altnotes", ref _strNotes)) { objXmlPowerNode.TryGetMultiLineStringFieldQuickly("notes", ref _strNotes); } string sNotesColor = ColorTranslator.ToHtml(ColorManager.HasNotesColor); objXmlPowerNode.TryGetStringFieldQuickly("notesColor", ref sNotesColor); _colNotes = ColorTranslator.FromHtml(sNotesColor); // If the piece grants a bonus, pass the information to the Improvement Manager. if (_nodBonus != null) { ImprovementManager.ForcedValue = strForcedValue; if (!ImprovementManager.CreateImprovements(_objCharacter, Improvement.ImprovementSource.CritterPower, _guiID.ToString("D", GlobalSettings.InvariantCultureInfo), _nodBonus, intRating, DisplayNameShort(GlobalSettings.Language))) { _guiID = Guid.Empty; return; } if (!string.IsNullOrEmpty(ImprovementManager.SelectedValue)) { _strExtra = ImprovementManager.SelectedValue; } else if (intRating != 0) { _strExtra = intRating.ToString(GlobalSettings.InvariantCultureInfo); } } else if (intRating != 0) { _strExtra = intRating.ToString(GlobalSettings.InvariantCultureInfo); } else { _strExtra = strForcedValue; } objXmlPowerNode.TryGetStringFieldQuickly("category", ref _strCategory); objXmlPowerNode.TryGetStringFieldQuickly("type", ref _strType); objXmlPowerNode.TryGetStringFieldQuickly("action", ref _strAction); objXmlPowerNode.TryGetStringFieldQuickly("range", ref _strRange); objXmlPowerNode.TryGetStringFieldQuickly("duration", ref _strDuration); objXmlPowerNode.TryGetStringFieldQuickly("source", ref _strSource); objXmlPowerNode.TryGetStringFieldQuickly("page", ref _strPage); objXmlPowerNode.TryGetInt32FieldQuickly("karma", ref _intKarma); if (string.IsNullOrEmpty(Notes)) { Notes = CommonFunctions.GetBookNotes(objXmlPowerNode, Name, CurrentDisplayName, Source, Page, DisplayPage(GlobalSettings.Language), _objCharacter); } }