/// Create a Lifestyle from an XmlNode and return the TreeNodes for it. /// <param name="objXmlLifestyle">XmlNode to create the object from.</param> public void Create(XmlNode objXmlLifestyle) { objXmlLifestyle.TryGetStringFieldQuickly("name", ref _strBaseLifestyle); objXmlLifestyle.TryGetDecFieldQuickly("cost", ref _decCost); objXmlLifestyle.TryGetInt32FieldQuickly("dice", ref _intDice); objXmlLifestyle.TryGetDecFieldQuickly("multiplier", ref _decMultiplier); objXmlLifestyle.TryGetStringFieldQuickly("source", ref _strSource); objXmlLifestyle.TryGetStringFieldQuickly("page", ref _strPage); objXmlLifestyle.TryGetDecFieldQuickly("costforarea", ref _decCostForArea); objXmlLifestyle.TryGetDecFieldQuickly("costforcomforts", ref _decCostForComforts); objXmlLifestyle.TryGetDecFieldQuickly("costforsecurity", ref _decCostForSecurity); objXmlLifestyle.TryGetBoolFieldQuickly("allowbonuslp", ref _blnAllowBonusLP); if (!objXmlLifestyle.TryGetStringFieldQuickly("altnotes", ref _strNotes)) { objXmlLifestyle.TryGetStringFieldQuickly("notes", ref _strNotes); } if (!objXmlLifestyle.TryGetField("id", Guid.TryParse, out _sourceID)) { Log.Warning(new object[] { "Missing id field for lifestyle xmlnode", objXmlLifestyle }); Utils.BreakIfDebug(); } else { _objCachedMyXmlNode = null; } string strTemp = string.Empty; if (objXmlLifestyle.TryGetStringFieldQuickly("increment", ref strTemp)) { _eIncrement = ConvertToLifestyleIncrement(strTemp); } SourceDetail = new SourceString(_strSource, _strPage); using (XmlNodeList lstGridNodes = objXmlLifestyle.SelectNodes("freegrids/freegrid")) { if (lstGridNodes?.Count > 0) { FreeGrids.Clear(); XmlDocument xmlLifestyleDocument = XmlManager.Load("lifestyles.xml"); foreach (XmlNode xmlNode in lstGridNodes) { XmlNode xmlQuality = xmlLifestyleDocument.SelectSingleNode("/chummer/qualities/quality[name = \"" + xmlNode.InnerText + "\"]"); LifestyleQuality objQuality = new LifestyleQuality(_objCharacter); string strPush = xmlNode.Attributes?["select"]?.InnerText; if (!string.IsNullOrWhiteSpace(strPush)) { _objCharacter.Pushtext.Push(strPush); } objQuality.Create(xmlQuality, this, _objCharacter, QualitySource.BuiltIn); FreeGrids.Add(objQuality); } } } }
/// <summary> /// Load the CharacterAttribute from the XmlNode. /// </summary> /// <param name="objNode">XmlNode to load.</param> /// <param name="blnCopy"></param> public void Load(XmlNode objNode, bool blnCopy = false) { //Can't out property and no backing field Guid source; if (objNode.TryGetField("sourceid", Guid.TryParse, out source)) { SourceID = source; } if (blnCopy) { _guiID = Guid.NewGuid(); _intMonths = 0; } else { objNode.TryGetInt32FieldQuickly("months", ref _intMonths); objNode.TryGetField("guid", Guid.TryParse, out _guiID); } objNode.TryGetStringFieldQuickly("name", ref _strName); objNode.TryGetDecFieldQuickly("cost", ref _decCost); objNode.TryGetInt32FieldQuickly("dice", ref _intDice); objNode.TryGetDecFieldQuickly("multiplier", ref _decMultiplier); objNode.TryGetInt32FieldQuickly("area", ref _intArea); objNode.TryGetInt32FieldQuickly("security", ref _intSecurity); objNode.TryGetInt32FieldQuickly("comforts", ref _intComforts); objNode.TryGetInt32FieldQuickly("roommates", ref _intRoommates); objNode.TryGetDecFieldQuickly("percentage", ref _decPercentage); objNode.TryGetStringFieldQuickly("lifestylename", ref _strLifestyleName); objNode.TryGetBoolFieldQuickly("purchased", ref _blnPurchased); if (objNode.TryGetStringFieldQuickly("baselifestyle", ref _strBaseLifestyle)) { if (_strBaseLifestyle == "Middle") { _strBaseLifestyle = "Medium"; } } objNode.TryGetStringFieldQuickly("source", ref _strSource); objNode.TryGetBoolFieldQuickly("trustfund", ref _blnTrustFund); objNode.TryGetStringFieldQuickly("page", ref _strPage); // Lifestyle Qualities XmlNodeList objXmlNodeList = objNode.SelectNodes("lifestylequalities/lifestylequality"); if (objXmlNodeList != null) { foreach (XmlNode objXmlQuality in objXmlNodeList) { var objQuality = new LifestyleQuality(_objCharacter); objQuality.Load(objXmlQuality, this); _lstLifestyleQualities.Add(objQuality); } } // Free Grids provided by the Lifestyle objXmlNodeList = objNode.SelectNodes("freegrids/lifestylequality"); if (objXmlNodeList != null) { foreach (XmlNode objXmlQuality in objXmlNodeList) { var objQuality = new LifestyleQuality(_objCharacter); objQuality.Load(objXmlQuality, this); FreeGrids.Add(objQuality); } } objNode.TryGetStringFieldQuickly("notes", ref _strNotes); var strtemp = string.Empty; if (objNode.TryGetStringFieldQuickly("type", ref strtemp)) { _objType = ConverToLifestyleType(strtemp); } }
/// <summary> /// Load the CharacterAttribute from the XmlNode. /// </summary> /// <param name="objNode">XmlNode to load.</param> /// <param name="blnCopy"></param> public void Load(XmlNode objNode, bool blnCopy = false) { //Can't out property and no backing field if (objNode.TryGetField("sourceid", Guid.TryParse, out Guid source)) { SourceID = source; } if (blnCopy) { _guiID = Guid.NewGuid(); _intMonths = 0; } else { objNode.TryGetInt32FieldQuickly("months", ref _intMonths); objNode.TryGetField("guid", Guid.TryParse, out _guiID); } objNode.TryGetStringFieldQuickly("name", ref _strName); objNode.TryGetDecFieldQuickly("cost", ref _decCost); objNode.TryGetInt32FieldQuickly("dice", ref _intDice); objNode.TryGetDecFieldQuickly("multiplier", ref _decMultiplier); objNode.TryGetInt32FieldQuickly("area", ref _intArea); objNode.TryGetInt32FieldQuickly("comforts", ref _intComforts); objNode.TryGetInt32FieldQuickly("security", ref _intSecurity); objNode.TryGetInt32FieldQuickly("basearea", ref _intBaseArea); objNode.TryGetInt32FieldQuickly("basecomforts", ref _intBaseComforts); objNode.TryGetInt32FieldQuickly("basesecurity", ref _intBaseSecurity); objNode.TryGetInt32FieldQuickly("costforarea", ref _costForArea); objNode.TryGetInt32FieldQuickly("costforcomforts", ref _costForComforts); objNode.TryGetInt32FieldQuickly("costforsecurity", ref _costForSecurity); objNode.TryGetInt32FieldQuickly("roommates", ref _intRoommates); objNode.TryGetDecFieldQuickly("percentage", ref _decPercentage); objNode.TryGetBoolFieldQuickly("purchased", ref _blnPurchased); objNode.TryGetStringFieldQuickly("baselifestyle", ref _strBaseLifestyle); if (string.IsNullOrWhiteSpace(_strBaseLifestyle)) { objNode.TryGetStringFieldQuickly("lifestylename", ref _strBaseLifestyle); if (string.IsNullOrWhiteSpace(_strBaseLifestyle)) { XmlDocument objXmlDocument = XmlManager.Load("lifestyles.xml"); var lstQualities = new List <ListItem>(); foreach (XmlNode n in objXmlDocument.SelectNodes("/chummer/lifestyles/lifestyle")) { string strName = n["name"].InnerText; lstQualities.Add(new ListItem(strName, n["translate"]?.InnerText ?? strName)); } var frmSelect = new frmSelectItem { GeneralItems = lstQualities, Description = LanguageManager.GetString("String_CannotFindLifestyle", GlobalOptions.Language).Replace("{0}", _strName) }; frmSelect.ShowDialog(); if (frmSelect.DialogResult == DialogResult.Cancel) { return; } _strBaseLifestyle = frmSelect.SelectedItem; } } if (_strBaseLifestyle == "Middle") { _strBaseLifestyle = "Medium"; } objNode.TryGetStringFieldQuickly("source", ref _strSource); objNode.TryGetBoolFieldQuickly("trustfund", ref _blnTrustFund); if (objNode["primarytenant"] == null) { _primaryTenant = _intRoommates == 0; } else { objNode.TryGetBoolFieldQuickly("primarytenant", ref _primaryTenant); } objNode.TryGetStringFieldQuickly("page", ref _strPage); // Lifestyle Qualities var objXmlNodeList = objNode.SelectNodes("lifestylequalities/lifestylequality"); if (objXmlNodeList != null) { foreach (XmlNode objXmlQuality in objXmlNodeList) { var objQuality = new LifestyleQuality(_objCharacter); objQuality.Load(objXmlQuality, this); _lstLifestyleQualities.Add(objQuality); } } // Free Grids provided by the Lifestyle objXmlNodeList = objNode.SelectNodes("freegrids/lifestylequality"); if (objXmlNodeList != null) { foreach (XmlNode objXmlQuality in objXmlNodeList) { var objQuality = new LifestyleQuality(_objCharacter); objQuality.Load(objXmlQuality, this); FreeGrids.Add(objQuality); } } objNode.TryGetStringFieldQuickly("notes", ref _strNotes); var strtemp = string.Empty; if (objNode.TryGetStringFieldQuickly("type", ref strtemp)) { _objType = ConverToLifestyleType(strtemp); } LegacyShim(objNode); }