Example #1
0
 /// <summary>
 /// Print the object's XML to the XmlWriter.
 /// </summary>
 /// <param name="objWriter">XmlTextWriter to write with.</param>
 /// <param name="objCulture">Culture in which to print numbers.</param>
 /// <param name="strLanguageToPrint">Language in which to print.</param>
 public void Print(XmlTextWriter objWriter, CultureInfo objCulture, string strLanguageToPrint)
 {
     objWriter.WriteStartElement("spell");
     if (Limited)
     {
         objWriter.WriteElementString("name", DisplayNameShort(strLanguageToPrint) + LanguageManager.GetString("String_Space", strLanguageToPrint) + '(' + LanguageManager.GetString("String_SpellLimited", strLanguageToPrint) + ')');
     }
     else if (Alchemical)
     {
         objWriter.WriteElementString("name", DisplayNameShort(strLanguageToPrint) + LanguageManager.GetString("String_Space", strLanguageToPrint) + '(' + LanguageManager.GetString("String_SpellAlchemical", strLanguageToPrint) + ')');
     }
     else
     {
         objWriter.WriteElementString("name", DisplayNameShort(strLanguageToPrint));
     }
     objWriter.WriteElementString("name_english", Name);
     objWriter.WriteElementString("descriptors", DisplayDescriptors(strLanguageToPrint));
     objWriter.WriteElementString("category", DisplayCategory(strLanguageToPrint));
     objWriter.WriteElementString("category_english", Category);
     objWriter.WriteElementString("type", DisplayType(strLanguageToPrint));
     objWriter.WriteElementString("range", DisplayRange(strLanguageToPrint));
     objWriter.WriteElementString("damage", DisplayDamage(strLanguageToPrint));
     objWriter.WriteElementString("duration", DisplayDuration(strLanguageToPrint));
     objWriter.WriteElementString("dv", DisplayDV(strLanguageToPrint));
     objWriter.WriteElementString("alchemy", Alchemical.ToString());
     objWriter.WriteElementString("dicepool", DicePool.ToString(objCulture));
     objWriter.WriteElementString("source", CommonFunctions.LanguageBookShort(Source, strLanguageToPrint));
     objWriter.WriteElementString("page", DisplayPage(strLanguageToPrint));
     objWriter.WriteElementString("extra", LanguageManager.TranslateExtra(Extra, strLanguageToPrint));
     if (_objCharacter.Options.PrintNotes)
     {
         objWriter.WriteElementString("notes", Notes);
     }
     objWriter.WriteEndElement();
 }
Example #2
0
 /// <summary>
 /// Print the object's XML to the XmlWriter.
 /// </summary>
 /// <param name="objWriter">XmlTextWriter to write with.</param>
 /// <param name="objCulture">Culture in which to print.</param>
 /// <param name="strLanguageToPrint">Language in which to print</param>
 public void Print(XmlTextWriter objWriter, CultureInfo objCulture, string strLanguageToPrint)
 {
     objWriter.WriteStartElement("power");
     objWriter.WriteElementString("name", DisplayNameShort(strLanguageToPrint));
     objWriter.WriteElementString("fullname", DisplayName);
     objWriter.WriteElementString("extra", LanguageManager.TranslateExtra(Extra, strLanguageToPrint));
     objWriter.WriteElementString("pointsperlevel", PointsPerLevel.ToString(objCulture));
     objWriter.WriteElementString("adeptway", AdeptWayDiscount.ToString(objCulture));
     objWriter.WriteElementString("rating", LevelsEnabled ? TotalRating.ToString(objCulture) : "0");
     objWriter.WriteElementString("totalpoints", PowerPoints.ToString(objCulture));
     objWriter.WriteElementString("action", DisplayActionMethod(strLanguageToPrint));
     objWriter.WriteElementString("source", CommonFunctions.LanguageBookShort(Source, strLanguageToPrint));
     objWriter.WriteElementString("page", DisplayPage(strLanguageToPrint));
     if (CharacterObject.Options.PrintNotes)
     {
         objWriter.WriteElementString("notes", Notes);
     }
     objWriter.WriteStartElement("enhancements");
     foreach (Enhancement objEnhancement in Enhancements)
     {
         objEnhancement.Print(objWriter, strLanguageToPrint);
     }
     objWriter.WriteEndElement();
     objWriter.WriteEndElement();
 }
Example #3
0
 /// <summary>
 /// Print the object's XML to the XmlWriter.
 /// </summary>
 /// <param name="objWriter">XmlTextWriter to write with.</param>
 /// <param name="strLanguageToPrint">Language in which to print</param>
 public void Print(XmlTextWriter objWriter, string strLanguageToPrint)
 {
     if (objWriter == null)
     {
         return;
     }
     objWriter.WriteStartElement("critterpower");
     objWriter.WriteElementString("guid", InternalId);
     objWriter.WriteElementString("sourceid", SourceIDString);
     objWriter.WriteElementString("name", DisplayNameShort(strLanguageToPrint));
     objWriter.WriteElementString("fullname", DisplayName(strLanguageToPrint));
     objWriter.WriteElementString("name_english", Name);
     objWriter.WriteElementString("extra", LanguageManager.TranslateExtra(_strExtra, strLanguageToPrint));
     objWriter.WriteElementString("category", DisplayCategory(strLanguageToPrint));
     objWriter.WriteElementString("category_english", Category);
     objWriter.WriteElementString("type", DisplayType(strLanguageToPrint));
     objWriter.WriteElementString("action", DisplayAction(strLanguageToPrint));
     objWriter.WriteElementString("range", DisplayRange(strLanguageToPrint));
     objWriter.WriteElementString("duration", DisplayDuration(strLanguageToPrint));
     objWriter.WriteElementString("source", CommonFunctions.LanguageBookShort(Source, strLanguageToPrint));
     objWriter.WriteElementString("page", DisplayPage(strLanguageToPrint));
     if (_objCharacter.Options.PrintNotes)
     {
         objWriter.WriteElementString("notes", Notes);
     }
     objWriter.WriteEndElement();
 }
        public frmSelectOptionalPower(params Tuple <string, string>[] lstPowerExtraPairs)
        {
            InitializeComponent();
            LanguageManager.TranslateWinForm(GlobalOptions.Language, this);

            foreach (Tuple <string, string> lstObject in lstPowerExtraPairs)
            {
                string strName = LanguageManager.TranslateExtra(lstObject.Item1, GlobalOptions.Language);
                if (!string.IsNullOrEmpty(lstObject.Item2))
                {
                    strName += LanguageManager.GetString("String_Space", GlobalOptions.Language) + '(' + LanguageManager.TranslateExtra(lstObject.Item2, GlobalOptions.Language) + ')';
                }
                _lstPowerItems.Add(new ListItem(lstObject, strName));
            }
            cboPower.BeginUpdate();
            cboPower.ValueMember   = "Value";
            cboPower.DisplayMember = "Name";
            cboPower.DataSource    = _lstPowerItems;
            if (_lstPowerItems.Count >= 1)
            {
                cboPower.SelectedIndex = 0;
            }
            else
            {
                cmdOK.Enabled = false;
            }
            cboPower.EndUpdate();
        }
Example #5
0
        /// <summary>
        /// The translated name of the Power (Name + any Extra text).
        /// </summary>
        public string DisplayNameMethod(string strLanguage)
        {
            string strReturn = DisplayNameShort(strLanguage);

            if (!string.IsNullOrEmpty(Extra))
            {
                // Attempt to retrieve the CharacterAttribute name.
                strReturn += " (" + LanguageManager.TranslateExtra(Extra, strLanguage) + ")";
            }

            return(strReturn);
        }
Example #6
0
 /// <summary>
 /// Print the object's XML to the XmlWriter.
 /// </summary>
 /// <param name="objWriter">XmlTextWriter to write with</param>
 /// <param name="objCulture">Culture in which to print</param>
 /// <param name="strLanguageToPrint">Language in which to print</param>
 public void Print(XmlTextWriter objWriter, CultureInfo objCulture, string strLanguageToPrint)
 {
     if (objWriter == null)
     {
         return;
     }
     objWriter.WriteStartElement("limitmodifier");
     objWriter.WriteElementString("name", DisplayName(objCulture, strLanguageToPrint));
     objWriter.WriteElementString("name_english", Name);
     objWriter.WriteElementString("condition", LanguageManager.TranslateExtra(Condition, strLanguageToPrint));
     if (_objCharacter.Options.PrintNotes)
     {
         objWriter.WriteElementString("notes", Notes);
     }
     objWriter.WriteEndElement();
 }
 /// <summary>
 /// Print the object's XML to the XmlWriter.
 /// </summary>
 /// <param name="objWriter">XmlTextWriter to write with.</param>
 /// <param name="strLanguageToPrint">Language in which to print</param>
 public void Print(XmlTextWriter objWriter, string strLanguageToPrint)
 {
     objWriter.WriteStartElement("mentorspirit");
     objWriter.WriteElementString("name", DisplayNameShort(strLanguageToPrint));
     objWriter.WriteElementString("mentortype", _eMentorType.ToString());
     objWriter.WriteElementString("name_english", Name);
     objWriter.WriteElementString("advantage", Advantage);
     objWriter.WriteElementString("disadvantage", Disadvantage);
     objWriter.WriteElementString("extra", LanguageManager.TranslateExtra(_strExtra, strLanguageToPrint));
     objWriter.WriteElementString("source", CommonFunctions.LanguageBookShort(Source, strLanguageToPrint));
     objWriter.WriteElementString("page", Page(strLanguageToPrint));
     objWriter.WriteElementString("mentormask", MentorMask.ToString());
     if (_objCharacter.Options.PrintNotes)
     {
         objWriter.WriteElementString("notes", _strNotes);
     }
     objWriter.WriteEndElement();
 }
Example #8
0
 /// <summary>
 /// Print the object's XML to the XmlWriter.
 /// </summary>
 /// <param name="objWriter">XmlTextWriter to write with.</param>
 /// <param name="objCulture">Culture in which to print numbers.</param>
 /// <param name="strLanguageToPrint">Language in which to print.</param>
 public void Print(XmlTextWriter objWriter, CultureInfo objCulture, string strLanguageToPrint)
 {
     if (objWriter == null)
     {
         return;
     }
     objWriter.WriteStartElement("spell");
     objWriter.WriteElementString("guid", InternalId);
     objWriter.WriteElementString("sourceid", SourceIDString);
     if (Limited)
     {
         objWriter.WriteElementString("name", string.Format(objCulture, "{0}{1}({2})",
                                                            DisplayNameShort(strLanguageToPrint), LanguageManager.GetString("String_Space", strLanguageToPrint), LanguageManager.GetString("String_SpellLimited", strLanguageToPrint)));
     }
     else if (Alchemical)
     {
         objWriter.WriteElementString("name", string.Format(objCulture, "{0}{1}({2})",
                                                            DisplayNameShort(strLanguageToPrint), LanguageManager.GetString("String_Space", strLanguageToPrint), LanguageManager.GetString("String_SpellAlchemical", strLanguageToPrint)));
     }
     else
     {
         objWriter.WriteElementString("name", DisplayNameShort(strLanguageToPrint));
     }
     objWriter.WriteElementString("name_english", Name);
     objWriter.WriteElementString("descriptors", DisplayDescriptors(strLanguageToPrint));
     objWriter.WriteElementString("category", DisplayCategory(strLanguageToPrint));
     objWriter.WriteElementString("category_english", Category);
     objWriter.WriteElementString("type", DisplayType(strLanguageToPrint));
     objWriter.WriteElementString("range", DisplayRange(strLanguageToPrint));
     objWriter.WriteElementString("damage", DisplayDamage(strLanguageToPrint));
     objWriter.WriteElementString("duration", DisplayDuration(strLanguageToPrint));
     objWriter.WriteElementString("dv", DisplayDV(strLanguageToPrint));
     objWriter.WriteElementString("alchemy", Alchemical.ToString(GlobalOptions.InvariantCultureInfo));
     objWriter.WriteElementString("dicepool", DicePool.ToString(objCulture));
     objWriter.WriteElementString("source", CommonFunctions.LanguageBookShort(Source, strLanguageToPrint));
     objWriter.WriteElementString("page", DisplayPage(strLanguageToPrint));
     objWriter.WriteElementString("extra", LanguageManager.TranslateExtra(Extra, strLanguageToPrint));
     if (_objCharacter.Options.PrintNotes)
     {
         objWriter.WriteElementString("notes", Notes);
     }
     objWriter.WriteEndElement();
 }
Example #9
0
 /// <summary>
 /// Print the object's XML to the XmlWriter.
 /// </summary>
 /// <param name="objWriter">XmlTextWriter to write with.</param>
 /// <param name="intRating">Pre-calculated rating of the quality for printing.</param>
 /// <param name="objCulture">Culture in which to print.</param>
 /// <param name="strLanguageToPrint">Language in which to print</param>
 public void Print(XmlTextWriter objWriter, int intRating, CultureInfo objCulture, string strLanguageToPrint)
 {
     if (AllowPrint)
     {
         string strSpaceCharacter = LanguageManager.GetString("String_Space", strLanguageToPrint);
         string strRatingString   = string.Empty;
         if (intRating > 1)
         {
             strRatingString = strSpaceCharacter + intRating.ToString(objCulture);
         }
         string strSourceName = string.Empty;
         if (!string.IsNullOrWhiteSpace(SourceName))
         {
             strSourceName = strSpaceCharacter + '(' + GetSourceName(strLanguageToPrint) + ')';
         }
         objWriter.WriteStartElement("quality");
         objWriter.WriteElementString("name", DisplayNameShort(strLanguageToPrint));
         objWriter.WriteElementString("name_english", Name + strRatingString);
         objWriter.WriteElementString("extra", LanguageManager.TranslateExtra(Extra, strLanguageToPrint) + strRatingString + strSourceName);
         objWriter.WriteElementString("bp", BP.ToString(objCulture));
         string strQualityType = Type.ToString();
         if (strLanguageToPrint != GlobalOptions.DefaultLanguage)
         {
             strQualityType = XmlManager.Load("qualities.xml", strLanguageToPrint).SelectSingleNode("/chummer/categories/category[. = \"" + strQualityType + "\"]/@translate")?.InnerText ?? strQualityType;
         }
         objWriter.WriteElementString("qualitytype", strQualityType);
         objWriter.WriteElementString("qualitytype_english", Type.ToString());
         objWriter.WriteElementString("qualitysource", OriginSource.ToString());
         objWriter.WriteElementString("source", CommonFunctions.LanguageBookShort(Source, strLanguageToPrint));
         objWriter.WriteElementString("page", DisplayPage(strLanguageToPrint));
         if (_objCharacter.Options.PrintNotes)
         {
             objWriter.WriteElementString("notes", Notes);
         }
         objWriter.WriteEndElement();
     }
 }
Example #10
0
 /// <summary>
 /// Print the object's XML to the XmlWriter.
 /// </summary>
 /// <param name="objWriter">XmlTextWriter to write with.</param>
 /// <param name="strLanguageToPrint">Language in which to print</param>
 public void Print(XmlTextWriter objWriter, string strLanguageToPrint)
 {
     if (objWriter == null)
     {
         return;
     }
     objWriter.WriteStartElement("mentorspirit");
     objWriter.WriteElementString("guid", InternalId);
     objWriter.WriteElementString("sourceid", SourceIDString);
     objWriter.WriteElementString("name", DisplayNameShort(strLanguageToPrint));
     objWriter.WriteElementString("mentortype", _eMentorType.ToString());
     objWriter.WriteElementString("name_english", Name);
     objWriter.WriteElementString("advantage", Advantage);
     objWriter.WriteElementString("disadvantage", Disadvantage);
     objWriter.WriteElementString("extra", LanguageManager.TranslateExtra(Extra, strLanguageToPrint));
     objWriter.WriteElementString("source", CommonFunctions.LanguageBookShort(Source, strLanguageToPrint));
     objWriter.WriteElementString("page", DisplayPage(strLanguageToPrint));
     objWriter.WriteElementString("mentormask", MentorMask.ToString(GlobalOptions.InvariantCultureInfo));
     if (_objCharacter.Options.PrintNotes)
     {
         objWriter.WriteElementString("notes", _strNotes);
     }
     objWriter.WriteEndElement();
 }
Example #11
0
 /// <summary>
 /// Print the object's XML to the XmlWriter.
 /// </summary>
 /// <param name="objWriter">XmlTextWriter to write with.</param>
 public void Print(XmlTextWriter objWriter)
 {
     objWriter.WriteStartElement("power");
     objWriter.WriteElementString("name", DisplayNameShort);
     objWriter.WriteElementString("extra", LanguageManager.TranslateExtra(Extra));
     objWriter.WriteElementString("pointsperlevel", PointsPerLevel.ToString());
     objWriter.WriteElementString("adeptway", AdeptWayDiscount.ToString());
     objWriter.WriteElementString("rating", LevelsEnabled ? Rating.ToString() : "0");
     objWriter.WriteElementString("totalpoints", PowerPoints.ToString());
     objWriter.WriteElementString("action", DisplayAction);
     objWriter.WriteElementString("source", CharacterObject.Options.LanguageBookShort(_strSource));
     objWriter.WriteElementString("page", Page);
     if (CharacterObject.Options.PrintNotes)
     {
         objWriter.WriteElementString("notes", _strNotes);
     }
     objWriter.WriteStartElement("enhancements");
     foreach (Enhancement objEnhancement in Enhancements)
     {
         objEnhancement.Print(objWriter);
     }
     objWriter.WriteEndElement();
     objWriter.WriteEndElement();
 }
Example #12
0
        private static void PrintPowerInfo(XmlTextWriter objWriter, XmlDocument objXmlDocument, string strPowerName, string strLanguageToPrint)
        {
            StringBuilder strExtra           = new StringBuilder();
            string        strSource          = string.Empty;
            string        strPage            = string.Empty;
            string        strEnglishName     = strPowerName;
            string        strEnglishCategory = string.Empty;
            string        strCategory        = string.Empty;
            string        strDisplayType     = string.Empty;
            string        strDisplayAction   = string.Empty;
            string        strDisplayRange    = string.Empty;
            string        strDisplayDuration = string.Empty;
            XmlNode       objXmlPowerNode    = objXmlDocument.SelectSingleNode("/chummer/powers/power[name = \"" + strPowerName + "\"]") ??
                                               objXmlDocument.SelectSingleNode("/chummer/powers/power[starts-with(\"" + strPowerName + "\", name)]");

            if (objXmlPowerNode != null)
            {
                objXmlPowerNode.TryGetStringFieldQuickly("source", ref strSource);
                if (!objXmlPowerNode.TryGetStringFieldQuickly("altpage", ref strPage))
                {
                    objXmlPowerNode.TryGetStringFieldQuickly("page", ref strPage);
                }

                objXmlPowerNode.TryGetStringFieldQuickly("name", ref strEnglishName);
                string[] lstExtras = strPowerName.TrimStart(strEnglishName).Trim().TrimStart('(').TrimEnd(')').Split(',');
                foreach (string strLoopExtra in lstExtras)
                {
                    strExtra.Append(LanguageManager.TranslateExtra(strLoopExtra, strLanguageToPrint));
                    strExtra.Append(", ");
                }
                if (strExtra.Length > 0)
                {
                    strExtra.Length -= 2;
                }

                if (objXmlPowerNode.TryGetStringFieldQuickly("translate", ref strPowerName))
                {
                    strPowerName = strEnglishName;
                }

                objXmlPowerNode.TryGetStringFieldQuickly("category", ref strEnglishCategory);

                strCategory = objXmlDocument.SelectSingleNode("/chummer/categories/category[. = \"" + strEnglishCategory + "\"]/@translate")?.InnerText ?? strEnglishCategory;

                switch (objXmlPowerNode["type"]?.InnerText)
                {
                case "M":
                    strDisplayType = LanguageManager.GetString("String_SpellTypeMana", strLanguageToPrint);
                    break;

                case "P":
                    strDisplayType = LanguageManager.GetString("String_SpellTypePhysical", strLanguageToPrint);
                    break;
                }
                switch (objXmlPowerNode["action"]?.InnerText)
                {
                case "Auto":
                    strDisplayAction = LanguageManager.GetString("String_ActionAutomatic", strLanguageToPrint);
                    break;

                case "Free":
                    strDisplayAction = LanguageManager.GetString("String_ActionFree", strLanguageToPrint);
                    break;

                case "Simple":
                    strDisplayAction = LanguageManager.GetString("String_ActionSimple", strLanguageToPrint);
                    break;

                case "Complex":
                    strDisplayAction = LanguageManager.GetString("String_ActionComplex", strLanguageToPrint);
                    break;

                case "Special":
                    strDisplayAction = LanguageManager.GetString("String_SpellDurationSpecial", strLanguageToPrint);
                    break;
                }
                switch (objXmlPowerNode["duration"]?.InnerText)
                {
                case "Instant":
                    strDisplayDuration = LanguageManager.GetString("String_SpellDurationInstantLong", strLanguageToPrint);
                    break;

                case "Sustained":
                    strDisplayDuration = LanguageManager.GetString("String_SpellDurationSustained", strLanguageToPrint);
                    break;

                case "Always":
                    strDisplayDuration = LanguageManager.GetString("String_SpellDurationAlways", strLanguageToPrint);
                    break;

                case "Special":
                    strDisplayDuration = LanguageManager.GetString("String_SpellDurationSpecial", strLanguageToPrint);
                    break;
                }

                if (objXmlPowerNode.TryGetStringFieldQuickly("range", ref strDisplayRange))
                {
                    strDisplayRange = strDisplayRange.CheapReplace("Self", () => LanguageManager.GetString("String_SpellRangeSelf", strLanguageToPrint))
                                      .CheapReplace("Special", () => LanguageManager.GetString("String_SpellDurationSpecial", strLanguageToPrint))
                                      .CheapReplace("LOS", () => LanguageManager.GetString("String_SpellRangeLineOfSight", strLanguageToPrint))
                                      .CheapReplace("LOI", () => LanguageManager.GetString("String_SpellRangeLineOfInfluence", strLanguageToPrint))
                                      .CheapReplace("T", () => LanguageManager.GetString("String_SpellRangeTouch", strLanguageToPrint))
                                      .CheapReplace("(A)", () => '(' + LanguageManager.GetString("String_SpellRangeArea", strLanguageToPrint) + ')')
                                      .CheapReplace("MAG", () => LanguageManager.GetString("String_AttributeMAGShort", strLanguageToPrint));
                }
            }

            if (string.IsNullOrEmpty(strDisplayType))
            {
                strDisplayType = LanguageManager.GetString("String_None", strLanguageToPrint);
            }
            if (string.IsNullOrEmpty(strDisplayAction))
            {
                strDisplayAction = LanguageManager.GetString("String_None", strLanguageToPrint);
            }

            objWriter.WriteStartElement("critterpower");
            objWriter.WriteElementString("name", strPowerName);
            objWriter.WriteElementString("name_english", strEnglishName);
            objWriter.WriteElementString("extra", strExtra.ToString());
            objWriter.WriteElementString("category", strCategory);
            objWriter.WriteElementString("category_english", strEnglishCategory);
            objWriter.WriteElementString("type", strDisplayType);
            objWriter.WriteElementString("action", strDisplayAction);
            objWriter.WriteElementString("range", strDisplayRange);
            objWriter.WriteElementString("duration", strDisplayDuration);
            objWriter.WriteElementString("source", CommonFunctions.LanguageBookShort(strSource, strLanguageToPrint));
            objWriter.WriteElementString("page", strPage);
            objWriter.WriteEndElement();
        }
Example #13
0
        private void RefreshSelectedMetavariant()
        {
            string         strSpace            = LanguageManager.GetString("String_Space");
            XPathNavigator objXmlMetatype      = null;
            XPathNavigator objXmlMetavariant   = null;
            string         strSelectedMetatype = lstMetatypes.SelectedValue?.ToString();

            if (!string.IsNullOrEmpty(strSelectedMetatype))
            {
                objXmlMetatype = _xmlBaseMetatypeDataNode.SelectSingleNode("metatypes/metatype[id = \"" + strSelectedMetatype + "\"]");
                string strSelectedMetavariant = cboMetavariant.SelectedValue?.ToString();
                if (objXmlMetatype != null && !string.IsNullOrEmpty(strSelectedMetavariant) && strSelectedMetavariant != "None")
                {
                    objXmlMetavariant = objXmlMetatype.SelectSingleNode("metavariants/metavariant[id = \"" + strSelectedMetavariant + "\"]");
                }
            }

            string strAttributeFormat = "{0}/{1}{2}({3})";

            if (objXmlMetavariant != null)
            {
                cmdOK.Enabled = true;
                if (objXmlMetatype.SelectSingleNode("forcecreature") == null)
                {
                    lblBOD.Text = string.Format(GlobalOptions.CultureInfo, strAttributeFormat, objXmlMetavariant.SelectSingleNode("bodmin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo),
                                                objXmlMetavariant.SelectSingleNode("bodmax")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), strSpace, objXmlMetavariant.SelectSingleNode("bodaug")?.Value ?? 0.ToString(GlobalOptions.CultureInfo));
                    lblAGI.Text = string.Format(GlobalOptions.CultureInfo, strAttributeFormat, objXmlMetavariant.SelectSingleNode("agimin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo),
                                                objXmlMetavariant.SelectSingleNode("agimax")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), strSpace, objXmlMetavariant.SelectSingleNode("agiaug")?.Value ?? 0.ToString(GlobalOptions.CultureInfo));
                    lblREA.Text = string.Format(GlobalOptions.CultureInfo, strAttributeFormat, objXmlMetavariant.SelectSingleNode("reamin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo),
                                                objXmlMetavariant.SelectSingleNode("reamax")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), strSpace, objXmlMetavariant.SelectSingleNode("reaaug")?.Value ?? 0.ToString(GlobalOptions.CultureInfo));
                    lblSTR.Text = string.Format(GlobalOptions.CultureInfo, strAttributeFormat, objXmlMetavariant.SelectSingleNode("strmin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo),
                                                objXmlMetavariant.SelectSingleNode("strmax")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), strSpace, objXmlMetavariant.SelectSingleNode("straug")?.Value ?? 0.ToString(GlobalOptions.CultureInfo));
                    lblCHA.Text = string.Format(GlobalOptions.CultureInfo, strAttributeFormat, objXmlMetavariant.SelectSingleNode("chamin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo),
                                                objXmlMetavariant.SelectSingleNode("chamax")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), strSpace, objXmlMetavariant.SelectSingleNode("chaaug")?.Value ?? 0.ToString(GlobalOptions.CultureInfo));
                    lblINT.Text = string.Format(GlobalOptions.CultureInfo, strAttributeFormat, objXmlMetavariant.SelectSingleNode("intmin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo),
                                                objXmlMetavariant.SelectSingleNode("intmax")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), strSpace, objXmlMetavariant.SelectSingleNode("intaug")?.Value ?? 0.ToString(GlobalOptions.CultureInfo));
                    lblLOG.Text = string.Format(GlobalOptions.CultureInfo, strAttributeFormat, objXmlMetavariant.SelectSingleNode("logmin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo),
                                                objXmlMetavariant.SelectSingleNode("logmax")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), strSpace, objXmlMetavariant.SelectSingleNode("logaug")?.Value ?? 0.ToString(GlobalOptions.CultureInfo));
                    lblWIL.Text = string.Format(GlobalOptions.CultureInfo, strAttributeFormat, objXmlMetavariant.SelectSingleNode("wilmin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo),
                                                objXmlMetavariant.SelectSingleNode("wilmax")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), strSpace, objXmlMetavariant.SelectSingleNode("wilaug")?.Value ?? 0.ToString(GlobalOptions.CultureInfo));
                    lblINI.Text = string.Format(GlobalOptions.CultureInfo, strAttributeFormat, objXmlMetavariant.SelectSingleNode("inimin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo),
                                                objXmlMetavariant.SelectSingleNode("inimax")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), strSpace, objXmlMetavariant.SelectSingleNode("iniaug")?.Value ?? 0.ToString(GlobalOptions.CultureInfo));
                }
                else
                {
                    lblBOD.Text = objXmlMetavariant.SelectSingleNode("bodmin")?.Value ?? objXmlMetatype.SelectSingleNode("bodmin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo);
                    lblAGI.Text = objXmlMetavariant.SelectSingleNode("agimin")?.Value ?? objXmlMetatype.SelectSingleNode("agimin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo);
                    lblREA.Text = objXmlMetavariant.SelectSingleNode("reamin")?.Value ?? objXmlMetatype.SelectSingleNode("reamin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo);
                    lblSTR.Text = objXmlMetavariant.SelectSingleNode("strmin")?.Value ?? objXmlMetatype.SelectSingleNode("strmin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo);
                    lblCHA.Text = objXmlMetavariant.SelectSingleNode("chamin")?.Value ?? objXmlMetatype.SelectSingleNode("chamin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo);
                    lblINT.Text = objXmlMetavariant.SelectSingleNode("intmin")?.Value ?? objXmlMetatype.SelectSingleNode("intmin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo);
                    lblLOG.Text = objXmlMetavariant.SelectSingleNode("logmin")?.Value ?? objXmlMetatype.SelectSingleNode("logmin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo);
                    lblWIL.Text = objXmlMetavariant.SelectSingleNode("wilmin")?.Value ?? objXmlMetatype.SelectSingleNode("wilmin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo);
                    lblINI.Text = objXmlMetavariant.SelectSingleNode("inimin")?.Value ?? objXmlMetatype.SelectSingleNode("inimin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo);
                }

                // ReSharper disable once IdentifierTypo
                StringBuilder sbdQualities = new StringBuilder();
                // Build a list of the Metavariant's Qualities.
                foreach (XPathNavigator objXmlQuality in objXmlMetavariant.Select("qualities/*/quality"))
                {
                    if (GlobalOptions.Language != GlobalOptions.DefaultLanguage)
                    {
                        sbdQualities.Append(_xmlBaseQualityDataNode.SelectSingleNode("qualities/quality[name = \"" + objXmlQuality.Value + "\"]/translate")?.Value ?? objXmlQuality.Value);

                        string strSelect = objXmlQuality.SelectSingleNode("@select")?.Value;
                        if (!string.IsNullOrEmpty(strSelect))
                        {
                            sbdQualities.Append(LanguageManager.GetString("String_Space") + '(');
                            sbdQualities.Append(LanguageManager.TranslateExtra(strSelect));
                            sbdQualities.Append(')');
                        }
                    }
                    else
                    {
                        sbdQualities.Append(objXmlQuality.Value);
                        string strSelect = objXmlQuality.SelectSingleNode("@select")?.Value;
                        if (!string.IsNullOrEmpty(strSelect))
                        {
                            sbdQualities.Append(LanguageManager.GetString("String_Space") + '(');
                            sbdQualities.Append(strSelect);
                            sbdQualities.Append(')');
                        }
                    }
                    sbdQualities.Append(Environment.NewLine);
                }

                lblQualities.Text = sbdQualities.Length == 0 ? LanguageManager.GetString("String_None") : sbdQualities.ToString();

                lblKarma.Text = objXmlMetavariant.SelectSingleNode("karma")?.Value ?? 0.ToString(GlobalOptions.CultureInfo);
            }
            else if (objXmlMetatype != null)
            {
                cmdOK.Enabled = true;
                if (objXmlMetatype.SelectSingleNode("forcecreature") == null)
                {
                    lblBOD.Text = string.Format(GlobalOptions.CultureInfo, strAttributeFormat, objXmlMetatype.SelectSingleNode("bodmin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo),
                                                objXmlMetatype.SelectSingleNode("bodmax")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), strSpace, objXmlMetatype.SelectSingleNode("bodaug")?.Value ?? 0.ToString(GlobalOptions.CultureInfo));
                    lblAGI.Text = string.Format(GlobalOptions.CultureInfo, strAttributeFormat, objXmlMetatype.SelectSingleNode("agimin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo),
                                                objXmlMetatype.SelectSingleNode("agimax")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), strSpace, objXmlMetatype.SelectSingleNode("agiaug")?.Value ?? 0.ToString(GlobalOptions.CultureInfo));
                    lblREA.Text = string.Format(GlobalOptions.CultureInfo, strAttributeFormat, objXmlMetatype.SelectSingleNode("reamin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo),
                                                objXmlMetatype.SelectSingleNode("reamax")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), strSpace, objXmlMetatype.SelectSingleNode("reaaug")?.Value ?? 0.ToString(GlobalOptions.CultureInfo));
                    lblSTR.Text = string.Format(GlobalOptions.CultureInfo, strAttributeFormat, objXmlMetatype.SelectSingleNode("strmin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo),
                                                objXmlMetatype.SelectSingleNode("strmax")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), strSpace, objXmlMetatype.SelectSingleNode("straug")?.Value ?? 0.ToString(GlobalOptions.CultureInfo));
                    lblCHA.Text = string.Format(GlobalOptions.CultureInfo, strAttributeFormat, objXmlMetatype.SelectSingleNode("chamin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo),
                                                objXmlMetatype.SelectSingleNode("chamax")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), strSpace, objXmlMetatype.SelectSingleNode("chaaug")?.Value ?? 0.ToString(GlobalOptions.CultureInfo));
                    lblINT.Text = string.Format(GlobalOptions.CultureInfo, strAttributeFormat, objXmlMetatype.SelectSingleNode("intmin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo),
                                                objXmlMetatype.SelectSingleNode("intmax")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), strSpace, objXmlMetatype.SelectSingleNode("intaug")?.Value ?? 0.ToString(GlobalOptions.CultureInfo));
                    lblLOG.Text = string.Format(GlobalOptions.CultureInfo, strAttributeFormat, objXmlMetatype.SelectSingleNode("logmin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo),
                                                objXmlMetatype.SelectSingleNode("logmax")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), strSpace, objXmlMetatype.SelectSingleNode("logaug")?.Value ?? 0.ToString(GlobalOptions.CultureInfo));
                    lblWIL.Text = string.Format(GlobalOptions.CultureInfo, strAttributeFormat, objXmlMetatype.SelectSingleNode("wilmin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo),
                                                objXmlMetatype.SelectSingleNode("wilmax")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), strSpace, objXmlMetatype.SelectSingleNode("wilaug")?.Value ?? 0.ToString(GlobalOptions.CultureInfo));
                    lblINI.Text = string.Format(GlobalOptions.CultureInfo, strAttributeFormat, objXmlMetatype.SelectSingleNode("inimin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo),
                                                objXmlMetatype.SelectSingleNode("inimax")?.Value ?? 0.ToString(GlobalOptions.CultureInfo), strSpace, objXmlMetatype.SelectSingleNode("iniaug")?.Value ?? 0.ToString(GlobalOptions.CultureInfo));
                }
                else
                {
                    lblBOD.Text = objXmlMetatype.SelectSingleNode("bodmin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo);
                    lblAGI.Text = objXmlMetatype.SelectSingleNode("agimin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo);
                    lblREA.Text = objXmlMetatype.SelectSingleNode("reamin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo);
                    lblSTR.Text = objXmlMetatype.SelectSingleNode("strmin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo);
                    lblCHA.Text = objXmlMetatype.SelectSingleNode("chamin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo);
                    lblINT.Text = objXmlMetatype.SelectSingleNode("intmin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo);
                    lblLOG.Text = objXmlMetatype.SelectSingleNode("logmin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo);
                    lblWIL.Text = objXmlMetatype.SelectSingleNode("wilmin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo);
                    lblINI.Text = objXmlMetatype.SelectSingleNode("inimin")?.Value ?? 0.ToString(GlobalOptions.CultureInfo);
                }

                // ReSharper disable once IdentifierTypo
                StringBuilder sbdQualities = new StringBuilder();
                // Build a list of the Metatype's Positive Qualities.
                foreach (XPathNavigator objXmlQuality in objXmlMetatype.Select("qualities/*/quality"))
                {
                    if (GlobalOptions.Language != GlobalOptions.DefaultLanguage)
                    {
                        sbdQualities.Append(_xmlBaseQualityDataNode.SelectSingleNode("qualities/quality[name = \"" + objXmlQuality.Value + "\"]/translate")?.Value ?? objXmlQuality.Value);

                        string strSelect = objXmlQuality.SelectSingleNode("@select")?.Value;
                        if (!string.IsNullOrEmpty(strSelect))
                        {
                            sbdQualities.Append(LanguageManager.GetString("String_Space") + '(');
                            sbdQualities.Append(LanguageManager.TranslateExtra(strSelect));
                            sbdQualities.Append(')');
                        }
                    }
                    else
                    {
                        sbdQualities.Append(objXmlQuality.Value);
                        string strSelect = objXmlQuality.SelectSingleNode("@select")?.Value;
                        if (!string.IsNullOrEmpty(strSelect))
                        {
                            sbdQualities.Append(LanguageManager.GetString("String_Space") + '(');
                            sbdQualities.Append(strSelect);
                            sbdQualities.Append(')');
                        }
                    }
                    sbdQualities.Append(Environment.NewLine);
                }

                lblQualities.Text = sbdQualities.Length == 0 ? LanguageManager.GetString("String_None") : sbdQualities.ToString();

                lblKarma.Text = objXmlMetatype.SelectSingleNode("karma")?.Value ?? 0.ToString(GlobalOptions.CultureInfo);
            }
            else
            {
                lblBOD.Text = string.Empty;
                lblAGI.Text = string.Empty;
                lblREA.Text = string.Empty;
                lblSTR.Text = string.Empty;
                lblCHA.Text = string.Empty;
                lblINT.Text = string.Empty;
                lblLOG.Text = string.Empty;
                lblWIL.Text = string.Empty;
                lblINI.Text = string.Empty;

                lblQualities.Text = string.Empty;

                lblKarma.Text = string.Empty;

                cmdOK.Enabled = false;
            }
            lblBODLabel.Visible       = !string.IsNullOrEmpty(lblBOD.Text);
            lblAGILabel.Visible       = !string.IsNullOrEmpty(lblAGI.Text);
            lblREALabel.Visible       = !string.IsNullOrEmpty(lblREA.Text);
            lblSTRLabel.Visible       = !string.IsNullOrEmpty(lblSTR.Text);
            lblCHALabel.Visible       = !string.IsNullOrEmpty(lblCHA.Text);
            lblINTLabel.Visible       = !string.IsNullOrEmpty(lblINT.Text);
            lblLOGLabel.Visible       = !string.IsNullOrEmpty(lblLOG.Text);
            lblWILLabel.Visible       = !string.IsNullOrEmpty(lblWIL.Text);
            lblINILabel.Visible       = !string.IsNullOrEmpty(lblINI.Text);
            lblQualitiesLabel.Visible = !string.IsNullOrEmpty(lblQualities.Text);
            lblKarma.Visible          = !string.IsNullOrEmpty(lblKarma.Text);
        }
Example #14
0
        private void lstKits_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(lstKits.Text))
            {
                return;
            }

            treContents.Nodes.Clear();
            XmlNode     objXmlPack         = _objXmlDocument.SelectSingleNode("/chummer/packs/pack[name = \"" + lstKits.SelectedValue + "\" and category = \"" + cboCategory.SelectedValue + "\"]");
            XmlDocument objXmlItemDocument = null;

            XmlDocument objXmlGearDocument = XmlManager.Load("gear.xml");

            foreach (XmlNode objXmlItem in objXmlPack.ChildNodes)
            {
                if (objXmlItem["hide"] != null)
                {
                    continue;
                }
                TreeNode objParent = new TreeNode();
                switch (objXmlItem.Name)
                {
                case "attributes":
                    objParent.Text = LanguageManager.GetString("String_SelectPACKSKit_Attributes");
                    treContents.Nodes.Add(objParent);
                    foreach (XmlNode objXmlAttribute in objXmlItem.ChildNodes)
                    {
                        if (objXmlAttribute["hide"] != null)
                        {
                            continue;
                        }
                        TreeNode objChild = new TreeNode();
                        objChild.Text = LanguageManager.GetString("String_Attribute" + objXmlAttribute.Name.ToUpper() + "Short") + " " + (Convert.ToInt32(objXmlAttribute.InnerText) - (6 - _objCharacter.GetAttribute(objXmlAttribute.Name.ToUpper()).MetatypeMaximum)).ToString();

                        objParent.Nodes.Add(objChild);
                        objParent.Expand();
                    }
                    break;

                case "qualities":
                    objXmlItemDocument = XmlManager.Load("qualities.xml");

                    objParent.Text = LanguageManager.GetString("String_SelectPACKSKit_Qualities");
                    treContents.Nodes.Add(objParent);
                    // Positive Qualities.
                    foreach (XmlNode objXmlQuality in objXmlItem.SelectNodes("positive/quality"))
                    {
                        if (objXmlQuality["hide"] != null)
                        {
                            continue;
                        }
                        XmlNode objNode = objXmlItemDocument.SelectSingleNode("/chummer/qualities/quality[name = \"" + objXmlQuality.InnerText + "\"]");
                        if (objNode["hide"] != null)
                        {
                            continue;
                        }
                        TreeNode objChild = new TreeNode();
                        objChild.Text = objNode["translate"]?.InnerText ?? objXmlQuality.InnerText;

                        if (objXmlQuality.Attributes["select"] != null)
                        {
                            objChild.Text += $" ({LanguageManager.TranslateExtra(objXmlQuality.Attributes["select"].InnerText)})";
                        }
                        objParent.Nodes.Add(objChild);
                        objParent.Expand();
                    }

                    // Negative Qualities.
                    foreach (XmlNode objXmlQuality in objXmlItem.SelectNodes("negative/quality"))
                    {
                        if (objXmlQuality["hide"] != null)
                        {
                            continue;
                        }
                        XmlNode objNode = objXmlItemDocument.SelectSingleNode("/chummer/qualities/quality[name = \"" + objXmlQuality.InnerText + "\"]");
                        if (objNode["hide"] != null)
                        {
                            continue;
                        }
                        TreeNode objChild = new TreeNode();
                        objChild.Text = objNode["translate"]?.InnerText ?? objXmlQuality.InnerText;

                        if (objXmlQuality.Attributes["select"] != null)
                        {
                            objChild.Text += $" ({LanguageManager.TranslateExtra(objXmlQuality.Attributes["select"].InnerText)})";
                        }
                        objParent.Nodes.Add(objChild);
                        objParent.Expand();
                    }
                    break;

                case "nuyenbp":
                    objParent.Text = LanguageManager.GetString("String_SelectPACKSKit_Nuyen");
                    treContents.Nodes.Add(objParent);
                    TreeNode objNuyenChild = new TreeNode();
                    objNuyenChild.Text = LanguageManager.GetString("String_SelectPACKSKit_StartingNuyenBP") + " " + objXmlItem.InnerText;
                    objParent.Nodes.Add(objNuyenChild);
                    objParent.Expand();
                    break;

                case "skills":
                    objXmlItemDocument = XmlManager.Load("skills.xml");

                    objParent.Text = LanguageManager.GetString("String_SelectPACKSKit_Skills");
                    treContents.Nodes.Add(objParent);
                    foreach (XmlNode objXmlSkill in objXmlItem.SelectNodes("skill"))
                    {
                        if (objXmlSkill["hide"] != null)
                        {
                            continue;
                        }
                        XmlNode objNode = objXmlItemDocument.SelectSingleNode("/chummer/skills/skill[name = \"" + objXmlSkill["name"].InnerText + "\"]");
                        if (objNode["hide"] != null)
                        {
                            continue;
                        }
                        TreeNode objChild = new TreeNode();
                        objChild.Text  = objNode["translate"]?.InnerText ?? objXmlSkill["name"].InnerText;
                        objChild.Text += " " + objXmlSkill["rating"].InnerText;

                        if (objXmlSkill["spec"] != null)
                        {
                            objChild.Text += " (" + objXmlSkill["spec"].InnerText + ")";
                        }
                        objParent.Nodes.Add(objChild);
                        objParent.Expand();
                    }
                    foreach (XmlNode objXmlSkill in objXmlItem.SelectNodes("skillgroup"))
                    {
                        if (objXmlSkill["hide"] != null)
                        {
                            continue;
                        }
                        XmlNode objNode = objXmlItemDocument.SelectSingleNode("/chummer/skillgroups/name[. = \"" + objXmlSkill["name"].InnerText + "\"]");
                        if (objNode["hide"] != null)
                        {
                            continue;
                        }
                        TreeNode objChild = new TreeNode();
                        objChild.Text  = objNode.Attributes["translate"]?.InnerText ?? objXmlSkill["name"].InnerText;
                        objChild.Text += $" {LanguageManager.GetString("String_SelectPACKSKit_Group")} {objXmlSkill["rating"].InnerText}";

                        if (objXmlSkill["spec"] != null)
                        {
                            objChild.Text += $" ({objXmlSkill["spec"].InnerText})";
                        }
                        objParent.Nodes.Add(objChild);
                        objParent.Expand();
                    }
                    break;

                case "knowledgeskills":
                    objXmlItemDocument = XmlManager.Load("skills.xml");

                    objParent.Text = LanguageManager.GetString("String_SelectPACKSKit_KnowledgeSkills");
                    treContents.Nodes.Add(objParent);
                    foreach (XmlNode objXmlSkill in objXmlItem.SelectNodes("skill"))
                    {
                        if (objXmlSkill["hide"] != null)
                        {
                            continue;
                        }
                        TreeNode objChild = new TreeNode();
                        if (objXmlSkill["name"] != null)
                        {
                            XmlNode objNode = objXmlItemDocument.SelectSingleNode("/chummer/knowledgeskills/skill[name = \"" + objXmlSkill["name"].InnerText + "\"]");
                            if (objNode["hide"] != null)
                            {
                                continue;
                            }
                            objChild.Text = objNode?["translate"]?.InnerText ?? objXmlSkill["name"].InnerText;
                        }
                        objChild.Text += " " + objXmlSkill["rating"].InnerText;

                        if (objXmlSkill["spec"] != null)
                        {
                            objChild.Text += $" ({objXmlSkill["spec"].InnerText})";
                        }
                        objParent.Nodes.Add(objChild);
                        objParent.Expand();
                    }
                    break;

                case "selectmartialart":
                    objParent.Text = LanguageManager.GetString("String_SelectPACKSKit_SelectMartialArt");
                    treContents.Nodes.Add(objParent);

                    int    intRating = 1;
                    string strSelect = LanguageManager.GetString("String_SelectPACKSKit_SelectMartialArt");
                    if (objXmlItem.Attributes["select"] != null)
                    {
                        strSelect = objXmlItem.Attributes["select"].InnerText;
                    }
                    if (objXmlItem.Attributes["rating"] != null)
                    {
                        intRating = Convert.ToInt32(objXmlItem.Attributes["rating"].InnerText);
                    }

                    TreeNode objMartialArt = new TreeNode();
                    objMartialArt.Text = strSelect + " " + LanguageManager.GetString("String_Rating") + " " + intRating.ToString();
                    objParent.Nodes.Add(objMartialArt);
                    objParent.Expand();
                    break;

                case "martialarts":
                    objXmlItemDocument = XmlManager.Load("martialarts.xml");

                    objParent.Text = LanguageManager.GetString("String_SelectPACKSKit_MartialArts");
                    treContents.Nodes.Add(objParent);
                    foreach (XmlNode objXmlArt in objXmlItem.SelectNodes("martialart"))
                    {
                        if (objXmlArt["hide"] != null)
                        {
                            continue;
                        }
                        XmlNode objNode = objXmlItemDocument.SelectSingleNode("/chummer/martialarts/martialart[name = \"" + objXmlArt["name"].InnerText + "\"]");
                        if (objNode["hide"] != null)
                        {
                            continue;
                        }
                        TreeNode objChild = new TreeNode();
                        objChild.Text  = objNode["translate"]?.InnerText ?? objXmlArt["name"].InnerText;
                        objChild.Text += " " + objXmlArt["rating"].InnerText;

                        // Check for Advantages.
                        foreach (XmlNode objXmlAdvantage in objXmlArt.SelectNodes("techniques/technique"))
                        {
                            if (objXmlAdvantage["hide"] != null)
                            {
                                continue;
                            }
                            XmlNode objChildNode = objXmlItemDocument.SelectSingleNode("/chummer/martialarts/martialart[name = \"" + objXmlArt["name"].InnerText + "\"]/techniques/technique[name = \"" + objXmlAdvantage.InnerText + "\"]");
                            if (objNode["hide"] != null)
                            {
                                continue;
                            }
                            TreeNode objChildChild = new TreeNode();
                            objChildChild.Text = objChildNode.Attributes["translate"]?.InnerText ?? objXmlAdvantage["name"].InnerText;

                            objChild.Nodes.Add(objChildChild);
                            objChild.Expand();
                        }

                        objParent.Nodes.Add(objChild);
                        objParent.Expand();
                    }

                    foreach (XmlNode objXmlManeuver in objXmlItem.SelectNodes("maneuver"))
                    {
                        if (objXmlManeuver["hide"] != null)
                        {
                            continue;
                        }
                        XmlNode objNode = objXmlItemDocument.SelectSingleNode("/chummer/maneuvers/maneuver[name = \"" + objXmlManeuver.InnerText + "\"]");
                        if (objNode["hide"] != null)
                        {
                            continue;
                        }
                        TreeNode objChild = new TreeNode();
                        objChild.Text  = objNode["translate"]?.InnerText ?? objXmlManeuver["name"].InnerText;
                        objChild.Text += " " + objXmlManeuver["rating"].InnerText;

                        objParent.Nodes.Add(objChild);
                        objParent.Expand();
                    }
                    break;

                case "powers":
                    objXmlItemDocument = XmlManager.Load("powers.xml");

                    objParent.Text = LanguageManager.GetString("String_SelectPACKSKit_Powers");
                    treContents.Nodes.Add(objParent);
                    foreach (XmlNode objXmlPower in objXmlItem.SelectNodes("power"))
                    {
                        if (objXmlPower["hide"] != null)
                        {
                            continue;
                        }
                        XmlNode objNode = objXmlItemDocument.SelectSingleNode("/chummer/powers/power[name = \"" + objXmlPower["name"].InnerText + "\"]");
                        if (objNode["hide"] != null)
                        {
                            continue;
                        }
                        TreeNode objChild = new TreeNode();
                        objChild.Text = objNode["translate"]?.InnerText ?? objXmlPower["name"].InnerText;

                        if (objXmlPower["name"].Attributes["select"] != null)
                        {
                            objChild.Text += " (" + objXmlPower["name"].Attributes["select"].InnerText + ")";
                        }
                        if (objXmlPower["rating"] != null)
                        {
                            objChild.Text += " " + objXmlPower["rating"].InnerText;
                        }
                        objParent.Nodes.Add(objChild);
                        objParent.Expand();
                    }
                    break;

                case "programs":
                    objXmlItemDocument = XmlManager.Load("complexforms.xml");

                    objParent.Text = LanguageManager.GetString("String_SelectPACKSKit_Programs");
                    treContents.Nodes.Add(objParent);
                    foreach (XmlNode objXmlProgram in objXmlItem.SelectNodes("program"))
                    {
                        if (objXmlProgram["hide"] != null)
                        {
                            continue;
                        }
                        XmlNode objNode = objXmlItemDocument.SelectSingleNode("/chummer/complexforms/complexform[name = \"" + objXmlProgram["name"].InnerText + "\"]");
                        if (objNode["hide"] != null)
                        {
                            continue;
                        }
                        TreeNode objChild = new TreeNode();
                        objChild.Text  = objNode["translate"]?.InnerText ?? objXmlProgram["name"].InnerText;
                        objChild.Text += " " + objXmlProgram["rating"].InnerText;

                        // Check for Program Options.
                        foreach (XmlNode objXmlOption in objXmlProgram.SelectNodes("options/option"))
                        {
                            if (objXmlOption["hide"] != null)
                            {
                                continue;
                            }
                            XmlNode objChildNode = objXmlItemDocument.SelectSingleNode("/chummer/options/option[name = \"" + objXmlOption["name"].InnerText + "\"]");
                            if (objNode["hide"] != null)
                            {
                                continue;
                            }
                            TreeNode objChildChild = new TreeNode();
                            objChildChild.Text = objChildNode["translate"]?.InnerText ?? objXmlOption["name"].InnerText;

                            objChildChild.Text = objXmlOption["name"].InnerText;
                            if (objXmlOption["rating"] != null)
                            {
                                objChildChild.Text += " " + objXmlOption["rating"].InnerText;
                            }
                            objChild.Nodes.Add(objChildChild);
                            objChild.Expand();
                        }

                        objParent.Nodes.Add(objChild);
                        objParent.Expand();
                    }
                    break;

                case "spells":
                    objXmlItemDocument = XmlManager.Load("spells.xml");

                    objParent.Text = LanguageManager.GetString("String_SelectPACKSKit_Spells");
                    treContents.Nodes.Add(objParent);
                    foreach (XmlNode objXmlSpell in objXmlItem.SelectNodes("spell"))
                    {
                        if (objXmlSpell["hide"] != null)
                        {
                            continue;
                        }
                        XmlNode objNode = objXmlItemDocument.SelectSingleNode("/chummer/spells/spell[name = \"" + objXmlSpell.InnerText + "\"]");
                        if (objNode["hide"] != null)
                        {
                            continue;
                        }
                        TreeNode objChild = new TreeNode();
                        objChild.Text = objNode["translate"]?.InnerText ?? objXmlSpell.InnerText;

                        if (objXmlSpell.Attributes["select"] != null)
                        {
                            objChild.Text += " (" + objXmlSpell.Attributes["select"].InnerText + ")";
                        }
                        objParent.Nodes.Add(objChild);
                        objParent.Expand();
                    }
                    break;

                case "spirits":

                    objParent.Text = LanguageManager.GetString("String_SelectPACKSKit_Spirits");
                    treContents.Nodes.Add(objParent);
                    foreach (XmlNode objXmlSpirit in objXmlItem.SelectNodes("spirit"))
                    {
                        if (objXmlSpirit["hide"] != null)
                        {
                            continue;
                        }
                        TreeNode objChild = new TreeNode();
                        objChild.Text = objXmlSpirit["name"].InnerText + " (" + LanguageManager.GetString("Label_Spirit_Force") + " " + objXmlSpirit["force"].InnerText + ", " + LanguageManager.GetString("Label_Spirit_ServicesOwed") + " " + objXmlSpirit["services"].InnerText + ")";
                        objParent.Nodes.Add(objChild);
                        objParent.Expand();
                    }
                    break;

                case "lifestyles":

                    objParent.Text = LanguageManager.GetString("String_SelectPACKSKit_Lifestyles");
                    treContents.Nodes.Add(objParent);
                    foreach (XmlNode objXmlLifestyle in objXmlItem.SelectNodes("lifestyle"))
                    {
                        if (objXmlLifestyle["hide"] != null)
                        {
                            continue;
                        }
                        TreeNode objChild = new TreeNode();
                        objChild.Text = string.Format("{0} {1} {2}", objXmlLifestyle["name"].InnerText, objXmlLifestyle["months"].InnerText, LanguageManager.GetString("Label_LifestyleMonths"));

                        // Check for Qualities.
                        foreach (XmlNode objXmlQuality in objXmlLifestyle.SelectNodes("qualities/quality"))
                        {
                            if (objXmlQuality["hide"] != null)
                            {
                                continue;
                            }
                            TreeNode objChildChild = new TreeNode();
                            objChildChild.Text = objXmlQuality.InnerText;
                            objChild.Nodes.Add(objChildChild);
                            objChild.Expand();
                        }

                        objParent.Nodes.Add(objChild);
                        objParent.Expand();
                    }
                    break;

                case "cyberwares":
                    objXmlItemDocument = XmlManager.Load("cyberware.xml");

                    objParent.Text = LanguageManager.GetString("String_SelectPACKSKit_Cyberware");
                    treContents.Nodes.Add(objParent);
                    foreach (XmlNode objXmlCyberware in objXmlItem.SelectNodes("cyberware"))
                    {
                        if (objXmlCyberware["hide"] != null)
                        {
                            continue;
                        }
                        XmlNode objNode = objXmlItemDocument.SelectSingleNode("/chummer/cyberwares/cyberware[name = \"" + objXmlCyberware["name"].InnerText + "\"]");
                        if (objNode["hide"] != null)
                        {
                            continue;
                        }
                        TreeNode objChild = new TreeNode();
                        objChild.Text = objNode["translate"]?.InnerText ?? objXmlCyberware["name"].InnerText;

                        if (objXmlCyberware["rating"] != null)
                        {
                            objChild.Text += " Rating " + objXmlCyberware["rating"].InnerText;
                        }
                        objChild.Text += " (" + objXmlCyberware["grade"].InnerText + ")";

                        // Check for children.
                        foreach (XmlNode objXmlChild in objXmlCyberware.SelectNodes("cyberwares/cyberware"))
                        {
                            if (objXmlChild["hide"] != null)
                            {
                                continue;
                            }
                            XmlNode objChildNode = objXmlItemDocument.SelectSingleNode("/chummer/cyberwares/cyberware[name = \"" + objXmlChild["name"].InnerText + "\"]");
                            if (objChildNode["hide"] != null)
                            {
                                continue;
                            }
                            TreeNode objChildChild = new TreeNode();
                            objChildChild.Text = objChildNode["translate"]?.InnerText ?? objXmlChild["name"].InnerText;

                            if (objXmlChild["rating"] != null)
                            {
                                objChildChild.Text += " " + LanguageManager.GetString("String_Rating") + " " + objXmlChild["rating"].InnerText;
                            }

                            foreach (XmlNode objXmlGearNode in objXmlChild.SelectNodes("gears/gear"))
                            {
                                WriteGear(objXmlGearDocument, objXmlGearNode, objChildChild);
                            }
                            objChild.Expand();

                            objChild.Nodes.Add(objChildChild);
                            objChild.Expand();
                        }

                        foreach (XmlNode objXmlGearNode in objXmlCyberware.SelectNodes("gears/gear"))
                        {
                            WriteGear(objXmlGearDocument, objXmlGearNode, objChild);
                        }
                        objChild.Expand();

                        objParent.Nodes.Add(objChild);
                        objParent.Expand();
                    }
                    break;

                case "biowares":
                    objXmlItemDocument = XmlManager.Load("bioware.xml");

                    objParent.Text = LanguageManager.GetString("String_SelectPACKSKit_Bioware");
                    treContents.Nodes.Add(objParent);
                    foreach (XmlNode objXmlBioware in objXmlItem.SelectNodes("bioware"))
                    {
                        if (objXmlBioware["hide"] != null)
                        {
                            continue;
                        }
                        XmlNode objNode = objXmlItemDocument.SelectSingleNode("/chummer/biowares/bioware[name = \"" + objXmlBioware["name"].InnerText + "\"]");
                        if (objNode["hide"] != null)
                        {
                            continue;
                        }
                        TreeNode objChild = new TreeNode();
                        objChild.Text = objNode["translate"]?.InnerText ?? objXmlBioware["name"].InnerText;

                        if (objXmlBioware["rating"] != null)
                        {
                            objChild.Text += " " + LanguageManager.GetString("String_Rating") + " " + objXmlBioware["rating"].InnerText;
                        }
                        objChild.Text += " (" + objXmlBioware["grade"].InnerText + ")";

                        foreach (XmlNode objXmlGearNode in objXmlBioware.SelectNodes("gears/gear"))
                        {
                            WriteGear(objXmlGearDocument, objXmlGearNode, objChild);
                        }
                        objChild.Expand();

                        objParent.Nodes.Add(objChild);
                        objParent.Expand();
                    }
                    break;

                case "armors":
                    objXmlItemDocument = XmlManager.Load("armor.xml");

                    objParent.Text = LanguageManager.GetString("String_SelectPACKSKit_Armor");
                    treContents.Nodes.Add(objParent);
                    foreach (XmlNode objXmlArmor in objXmlItem.SelectNodes("armor"))
                    {
                        if (objXmlArmor["hide"] != null)
                        {
                            continue;
                        }
                        XmlNode objNode = objXmlItemDocument.SelectSingleNode("/chummer/armors/armor[name = \"" + objXmlArmor["name"].InnerText + "\"]");
                        if (objNode["hide"] != null)
                        {
                            continue;
                        }
                        TreeNode objChild = new TreeNode();
                        objChild.Text = objNode["translate"]?.InnerText ?? objXmlArmor["name"].InnerText;

                        // Check for children.
                        foreach (XmlNode objXmlChild in objXmlArmor.SelectNodes("mods/mod"))
                        {
                            if (objXmlChild["hide"] != null)
                            {
                                continue;
                            }
                            XmlNode objChildNode = objXmlItemDocument.SelectSingleNode("/chummer/mods/mod[name = \"" + objXmlChild["name"].InnerText + "\"]");
                            if (objChildNode["hide"] != null)
                            {
                                continue;
                            }
                            TreeNode objChildChild = new TreeNode();
                            objChildChild.Text = objChildNode["translate"]?.InnerText ?? objXmlChild["name"].InnerText;

                            if (objXmlChild["rating"] != null)
                            {
                                objChildChild.Text += " " + LanguageManager.GetString("String_Rating") + " " + objXmlChild["rating"].InnerText;
                            }
                            objChild.Nodes.Add(objChildChild);
                            objChild.Expand();
                        }

                        foreach (XmlNode objXmlGearNode in objXmlArmor.SelectNodes("gears/gear"))
                        {
                            WriteGear(objXmlGearDocument, objXmlGearNode, objChild);
                        }
                        objChild.Expand();

                        objParent.Nodes.Add(objChild);
                        objParent.Expand();
                    }
                    break;

                case "weapons":
                    objXmlItemDocument = XmlManager.Load("weapons.xml");

                    objParent.Text = LanguageManager.GetString("String_SelectPACKSKit_Weapons");
                    treContents.Nodes.Add(objParent);
                    foreach (XmlNode objXmlWeapon in objXmlItem.SelectNodes("weapon"))
                    {
                        if (objXmlWeapon["hide"] != null)
                        {
                            continue;
                        }
                        XmlNode objNode = objXmlItemDocument.SelectSingleNode("/chummer/weapons/weapon[name = \"" + objXmlWeapon["name"].InnerText + "\"]");
                        if (objNode["hide"] != null)
                        {
                            continue;
                        }
                        TreeNode objChild = new TreeNode();
                        objChild.Text = objNode["translate"]?.InnerText ?? objXmlWeapon["name"].InnerText;

                        // Check for Weapon Accessories.
                        foreach (XmlNode objXmlAccessory in objXmlWeapon.SelectNodes("accessories/accessory"))
                        {
                            if (objXmlAccessory["hide"] != null)
                            {
                                continue;
                            }
                            XmlNode objChildNode = objXmlItemDocument.SelectSingleNode("/chummer/accessories/accessory[name = \"" + objXmlAccessory["name"].InnerText + "\"]");
                            if (objChildNode["hide"] != null)
                            {
                                continue;
                            }
                            TreeNode objChildChild = new TreeNode();
                            objChildChild.Text = objChildNode["translate"]?.InnerText ?? objXmlAccessory["name"].InnerText;

                            if (objXmlAccessory["rating"] != null)
                            {
                                objChildChild.Text += " " + LanguageManager.GetString("String_Rating") + " " + objXmlAccessory["rating"].InnerText;
                            }

                            foreach (XmlNode objXmlGearNode in objXmlAccessory.SelectNodes("gears/gear"))
                            {
                                WriteGear(objXmlGearDocument, objXmlGearNode, objChildChild);
                            }
                            objChildChild.Expand();

                            objChild.Nodes.Add(objChildChild);
                            objChild.Expand();
                        }

                        // Check for Weapon Mods.
                        foreach (XmlNode objXmlMod in objXmlWeapon.SelectNodes("mods/mod"))
                        {
                            if (objXmlMod["hide"] != null)
                            {
                                continue;
                            }
                            XmlNode objChildNode = objXmlItemDocument.SelectSingleNode("/chummer/mods/mod[name = \"" + objXmlMod["name"].InnerText + "\"]");
                            if (objChildNode["hide"] != null)
                            {
                                continue;
                            }
                            TreeNode objChildChild = new TreeNode();
                            objChildChild.Text = objChildNode["translate"]?.InnerText ?? objXmlMod["name"].InnerText;

                            if (objXmlMod["rating"] != null)
                            {
                                objChildChild.Text += " " + LanguageManager.GetString("String_Rating") + " " + objXmlMod["rating"].InnerText;
                            }
                            objChild.Nodes.Add(objChildChild);
                            objChild.Expand();
                        }

                        // Check for Underbarrel Weapons.
                        if (objXmlWeapon["underbarrel"] != null)
                        {
                            if (objXmlWeapon["hide"] != null)
                            {
                                continue;
                            }
                            XmlNode objChildNode = objXmlItemDocument.SelectSingleNode("/chummer/weapons/weapon[name = \"" + objXmlWeapon["underbarrel"].InnerText + "\"]");
                            if (objChildNode["hide"] != null)
                            {
                                continue;
                            }
                            TreeNode objChildChild = new TreeNode();
                            objChildChild.Text = objChildNode["translate"]?.InnerText ?? objXmlWeapon["name"].InnerText;

                            objChild.Nodes.Add(objChildChild);
                            objChild.Expand();
                        }

                        objParent.Nodes.Add(objChild);
                        objParent.Expand();
                    }
                    break;

                case "gears":
                    objXmlItemDocument = XmlManager.Load("gear.xml");

                    objParent.Text = LanguageManager.GetString("String_SelectPACKSKit_Gear");
                    treContents.Nodes.Add(objParent);
                    foreach (XmlNode objXmlGear in objXmlItem.SelectNodes("gear"))
                    {
                        if (objXmlGear["hide"] != null)
                        {
                            continue;
                        }
                        WriteGear(objXmlItemDocument, objXmlGear, objParent);
                        objParent.Expand();
                    }
                    break;

                case "vehicles":
                    objXmlItemDocument = XmlManager.Load("vehicles.xml");

                    objParent.Text = LanguageManager.GetString("String_SelectPACKSKit_Vehicles");
                    treContents.Nodes.Add(objParent);
                    foreach (XmlNode objXmlVehicle in objXmlItem.SelectNodes("vehicle"))
                    {
                        if (objXmlVehicle["hide"] != null)
                        {
                            continue;
                        }
                        XmlNode objNode = objXmlItemDocument.SelectSingleNode("/chummer/vehicles/vehicle[name = \"" + objXmlVehicle["name"].InnerText + "\"]");
                        if (objNode["hide"] != null)
                        {
                            continue;
                        }
                        TreeNode objChild = new TreeNode();
                        objChild.Text = objNode["translate"]?.InnerText ?? objXmlVehicle["name"].InnerText;

                        // Check for children.
                        foreach (XmlNode objXmlMod in objXmlVehicle.SelectNodes("mods/mod"))
                        {
                            if (objXmlMod["hide"] != null)
                            {
                                continue;
                            }
                            XmlNode objChildNode = objXmlItemDocument.SelectSingleNode("/chummer/mods/mod[name = \"" + objXmlMod["name"].InnerText + "\"]");
                            if (objChildNode["hide"] != null)
                            {
                                continue;
                            }
                            TreeNode objChildChild = new TreeNode();
                            objChildChild.Text = objChildNode["translate"]?.InnerText ?? objXmlMod["name"].InnerText;

                            if (objXmlMod["rating"] != null)
                            {
                                objChildChild.Text += " " + LanguageManager.GetString("String_Rating") + " " + objXmlMod["rating"].InnerText;
                            }
                            objChild.Nodes.Add(objChildChild);
                            objChild.Expand();
                        }

                        // Check for children.
                        foreach (XmlNode objXmlChild in objXmlVehicle.SelectNodes("gears/gear"))
                        {
                            if (objXmlChild["hide"] != null)
                            {
                                continue;
                            }
                            WriteGear(objXmlGearDocument, objXmlChild, objChild);
                            objChild.Expand();
                        }

                        // Check for children.
                        foreach (XmlNode objXmlWeapon in objXmlVehicle.SelectNodes("weapons/weapon"))
                        {
                            if (objXmlWeapon["hide"] != null)
                            {
                                continue;
                            }
                            XmlDocument objXmlWeaponDocument = XmlManager.Load("weapons.xml");
                            XmlNode     objChildNode         = objXmlWeaponDocument.SelectSingleNode("/chummer/weapons/weapon[name = \"" + objXmlWeapon["name"].InnerText + "\"]");
                            if (objChildNode["hide"] != null)
                            {
                                continue;
                            }
                            TreeNode objChildChild = new TreeNode();
                            objChildChild.Text = objChildNode["translate"]?.InnerText ?? objXmlWeapon["name"].InnerText;

                            if (objXmlWeapon["rating"] != null)
                            {
                                objChildChild.Text += " " + LanguageManager.GetString("String_Rating") + " " + objXmlWeapon["rating"].InnerText;
                            }
                            objChild.Nodes.Add(objChildChild);
                            objChild.Expand();
                        }

                        objParent.Nodes.Add(objChild);
                        objParent.Expand();
                    }
                    break;
                }
            }
        }
Example #15
0
        private static void PrintPowerInfo(XmlTextWriter objWriter, XPathNavigator xmlSpiritPowersBaseChummerNode, XPathNavigator xmlCritterPowersBaseChummerNode, XmlNode xmlPowerEntryNode, string strLanguageToPrint)
        {
            StringBuilder strExtra  = new StringBuilder();
            string        strSelect = xmlPowerEntryNode.SelectSingleNode("@select")?.Value;

            if (!string.IsNullOrEmpty(strSelect))
            {
                strExtra.Append(LanguageManager.TranslateExtra(strSelect, strLanguageToPrint));
            }
            string         strSource          = string.Empty;
            string         strPage            = string.Empty;
            string         strPowerName       = xmlPowerEntryNode.InnerText;
            string         strEnglishName     = strPowerName;
            string         strEnglishCategory = string.Empty;
            string         strCategory        = string.Empty;
            string         strDisplayType     = string.Empty;
            string         strDisplayAction   = string.Empty;
            string         strDisplayRange    = string.Empty;
            string         strDisplayDuration = string.Empty;
            XPathNavigator objXmlPowerNode    = xmlSpiritPowersBaseChummerNode.SelectSingleNode("powers/power[name = \"" + strPowerName + "\"]") ??
                                                xmlSpiritPowersBaseChummerNode.SelectSingleNode("powers/power[starts-with(\"" + strPowerName + "\", name)]") ??
                                                xmlCritterPowersBaseChummerNode.SelectSingleNode("powers/power[name = \"" + strPowerName + "\"]") ??
                                                xmlCritterPowersBaseChummerNode.SelectSingleNode("powers/power[starts-with(\"" + strPowerName + "\", name)]");

            if (objXmlPowerNode != null)
            {
                objXmlPowerNode.TryGetStringFieldQuickly("source", ref strSource);
                if (!objXmlPowerNode.TryGetStringFieldQuickly("altpage", ref strPage))
                {
                    objXmlPowerNode.TryGetStringFieldQuickly("page", ref strPage);
                }

                objXmlPowerNode.TryGetStringFieldQuickly("name", ref strEnglishName);
                bool blnExtrasAdded = false;
                foreach (string strLoopExtra in strPowerName.TrimStartOnce(strEnglishName).Trim().TrimStartOnce('(').TrimEndOnce(')').Split(','))
                {
                    blnExtrasAdded = true;
                    strExtra.Append(LanguageManager.TranslateExtra(strLoopExtra, strLanguageToPrint));
                    strExtra.Append(", ");
                }
                if (blnExtrasAdded)
                {
                    strExtra.Length -= 2;
                }

                if (!objXmlPowerNode.TryGetStringFieldQuickly("translate", ref strPowerName))
                {
                    strPowerName = strEnglishName;
                }

                objXmlPowerNode.TryGetStringFieldQuickly("category", ref strEnglishCategory);

                strCategory = xmlSpiritPowersBaseChummerNode.SelectSingleNode("categories/category[. = \"" + strEnglishCategory + "\"]/@translate")?.Value ?? strEnglishCategory;

                switch (objXmlPowerNode.SelectSingleNode("type")?.Value)
                {
                case "M":
                    strDisplayType = LanguageManager.GetString("String_SpellTypeMana", strLanguageToPrint);
                    break;

                case "P":
                    strDisplayType = LanguageManager.GetString("String_SpellTypePhysical", strLanguageToPrint);
                    break;
                }
                switch (objXmlPowerNode.SelectSingleNode("action")?.Value)
                {
                case "Auto":
                    strDisplayAction = LanguageManager.GetString("String_ActionAutomatic", strLanguageToPrint);
                    break;

                case "Free":
                    strDisplayAction = LanguageManager.GetString("String_ActionFree", strLanguageToPrint);
                    break;

                case "Simple":
                    strDisplayAction = LanguageManager.GetString("String_ActionSimple", strLanguageToPrint);
                    break;

                case "Complex":
                    strDisplayAction = LanguageManager.GetString("String_ActionComplex", strLanguageToPrint);
                    break;

                case "Special":
                    strDisplayAction = LanguageManager.GetString("String_SpellDurationSpecial", strLanguageToPrint);
                    break;
                }
                switch (objXmlPowerNode.SelectSingleNode("duration")?.Value)
                {
                case "Instant":
                    strDisplayDuration = LanguageManager.GetString("String_SpellDurationInstantLong", strLanguageToPrint);
                    break;

                case "Sustained":
                    strDisplayDuration = LanguageManager.GetString("String_SpellDurationSustained", strLanguageToPrint);
                    break;

                case "Always":
                    strDisplayDuration = LanguageManager.GetString("String_SpellDurationAlways", strLanguageToPrint);
                    break;

                case "Special":
                    strDisplayDuration = LanguageManager.GetString("String_SpellDurationSpecial", strLanguageToPrint);
                    break;
                }

                if (objXmlPowerNode.TryGetStringFieldQuickly("range", ref strDisplayRange) && strLanguageToPrint != GlobalOptions.DefaultLanguage)
                {
                    strDisplayRange = strDisplayRange.CheapReplace("Self", () => LanguageManager.GetString("String_SpellRangeSelf", strLanguageToPrint))
                                      .CheapReplace("Special", () => LanguageManager.GetString("String_SpellDurationSpecial", strLanguageToPrint))
                                      .CheapReplace("LOS", () => LanguageManager.GetString("String_SpellRangeLineOfSight", strLanguageToPrint))
                                      .CheapReplace("LOI", () => LanguageManager.GetString("String_SpellRangeLineOfInfluence", strLanguageToPrint))
                                      .CheapReplace("T", () => LanguageManager.GetString("String_SpellRangeTouch", strLanguageToPrint))
                                      .CheapReplace("(A)", () => '(' + LanguageManager.GetString("String_SpellRangeArea", strLanguageToPrint) + ')')
                                      .CheapReplace("MAG", () => LanguageManager.GetString("String_AttributeMAGShort", strLanguageToPrint));
                }
            }

            if (string.IsNullOrEmpty(strDisplayType))
            {
                strDisplayType = LanguageManager.GetString("String_None", strLanguageToPrint);
            }
            if (string.IsNullOrEmpty(strDisplayAction))
            {
                strDisplayAction = LanguageManager.GetString("String_None", strLanguageToPrint);
            }

            objWriter.WriteStartElement("critterpower");
            objWriter.WriteElementString("name", strPowerName);
            objWriter.WriteElementString("name_english", strEnglishName);
            objWriter.WriteElementString("extra", strExtra.ToString());
            objWriter.WriteElementString("category", strCategory);
            objWriter.WriteElementString("category_english", strEnglishCategory);
            objWriter.WriteElementString("type", strDisplayType);
            objWriter.WriteElementString("action", strDisplayAction);
            objWriter.WriteElementString("range", strDisplayRange);
            objWriter.WriteElementString("duration", strDisplayDuration);
            objWriter.WriteElementString("source", CommonFunctions.LanguageBookShort(strSource, strLanguageToPrint));
            objWriter.WriteElementString("page", strPage);
            objWriter.WriteEndElement();
        }
Example #16
0
        /// <summary>
        /// Returns a current language translation given an improvement name.
        /// </summary>
        /// <param name="strImprovementType"> The selector for the target translation. Often just _strSelect. </param>
        /// <param name="strToTranslate"> The string which to translate. Usually name. Guid in the case of adept powers.</param>
        /// <returns></returns>
        private string TranslateField(string strImprovementType, string strToTranslate)
        {
            XmlNode objXmlNode;

            switch (strImprovementType)
            {
            case "SelectAttribute":
            case "SelectPhysicalAttribute":
            case "SelectMentalAttribute":
            case "SelectSpecialAttribute":
                return(strToTranslate == "MAGAdept"
                    ? LanguageManager.GetString("String_AttributeMAGShort") + LanguageManager.GetString("String_Space") + '(' + LanguageManager.GetString("String_DescAdept") + ')'
                    : LanguageManager.GetString("String_Attribute" + strToTranslate + "Short"));

            case "SelectSkill":
                if (strToTranslate.Contains("Exotic Melee Weapon") ||
                    strToTranslate.Contains("Exotic Ranged Weapon") ||
                    strToTranslate.Contains("Pilot Exotic Vehicle"))
                {
                    string[] astrToTranslateParts = strToTranslate.Split('(');
                    astrToTranslateParts[0] = astrToTranslateParts[0].Trim();
                    astrToTranslateParts[1] = astrToTranslateParts[1].Substring(0, astrToTranslateParts[1].Length - 1);

                    objXmlNode = XmlManager.Load("skills.xml").SelectSingleNode("/chummer/skills/skill[name = \"" + astrToTranslateParts[0] + "\"]");
                    string strFirstPartTranslated = objXmlNode?.SelectSingleNode("translate")?.InnerText ?? objXmlNode?.SelectSingleNode("name")?.InnerText ?? astrToTranslateParts[0];

                    return(strFirstPartTranslated + LanguageManager.GetString("String_Space") + '(' + LanguageManager.TranslateExtra(astrToTranslateParts[1]) + ')');
                }
                else
                {
                    objXmlNode = XmlManager.Load("skills.xml").SelectSingleNode("/chummer/skills/skill[name = \"" + strToTranslate + "\"]");
                    return(objXmlNode?.SelectSingleNode("translate")?.InnerText ?? objXmlNode?.SelectSingleNode("name")?.InnerText ?? strToTranslate);
                }

            case "SelectKnowSkill":
                objXmlNode = XmlManager.Load("skills.xml").SelectSingleNode("/chummer/knowledgeskills/skill[name = \"" + strToTranslate + "\"]");
                return(objXmlNode?.SelectSingleNode("translate")?.InnerText ?? objXmlNode?.SelectSingleNode("name")?.InnerText ?? strToTranslate);

            case "SelectSkillCategory":
                objXmlNode = XmlManager.Load("skills.xml").SelectSingleNode("/chummer/categories/category[. = \"" + strToTranslate + "\"]");
                return(objXmlNode?.Attributes?["translate"]?.InnerText ?? objXmlNode?.SelectSingleNode(".")?.InnerText ?? strToTranslate);

            case "SelectSkillGroup":
                objXmlNode = XmlManager.Load("skills.xml").SelectSingleNode("/chummer/skillgroups/name[. = \"" + strToTranslate + "\"]");
                return(objXmlNode?.Attributes?["translate"]?.InnerText ?? objXmlNode?.SelectSingleNode(".")?.InnerText ?? strToTranslate);

            case "SelectWeaponCategory":
                objXmlNode = XmlManager.Load("weapons.xml").SelectSingleNode("/chummer/categories/category[. = \"" + strToTranslate + "\"]");
                return(objXmlNode?.Attributes?["translate"]?.InnerText ?? objXmlNode?.SelectSingleNode(".")?.InnerText ?? strToTranslate);

            case "SelectSpellCategory":
                objXmlNode = XmlManager.Load("spells.xml").SelectSingleNode("/chummer/categories/category[. = \"" + strToTranslate + "\"]");
                return(objXmlNode?.Attributes?["translate"]?.InnerText ?? objXmlNode?.SelectSingleNode(".")?.InnerText ?? strToTranslate);

            case "SelectAdeptPower":
                objXmlNode = XmlManager.Load("powers.xml").SelectSingleNode("/chummer/powers/power[id = \"" + strToTranslate + "\" or name = \"" + strToTranslate + "\"]");
                return(objXmlNode?.SelectSingleNode("translate")?.InnerText ?? objXmlNode?.SelectSingleNode("name")?.InnerText ?? strToTranslate);

            default:
                return(strToTranslate);
            }
        }