Ejemplo n.º 1
0
        static XmlNode CheckForExistingSpell(CharConverter app, XmlNode oldNode, String name, int levelindex)
        {
            XmlNodeList nodelist = oldNode.SelectSingleNode("spellset").ChildNodes;

            foreach (XmlNode spellset in nodelist)
            {
                if (spellset.SelectSingleNode("levels") == null)
                {
                    continue;
                }

                XmlNode level = spellset.SelectSingleNode("levels/level" + Convert.ToString(levelindex));

                if (level == null)
                {
                    continue;
                }

                XmlNodeList spells = level.SelectSingleNode("spells").ChildNodes;
                foreach (XmlNode spell in spells)
                {
                    String value = app.ValueOf(spell, "name");
                    if (value.Equals(name))
                    {
                        return(spell);
                    }
                }
            }
            return(null);
        }
Ejemplo n.º 2
0
        static public void processAttackbonusGrappleSize(CharConverter app, String call, ref XmlNode inChar, ref XmlNode outChar, ref XmlNode targetNode)
        {
            int size = CharConverter.ConvertToInt(targetNode.InnerText);

            size *= -1;
            targetNode.InnerText = Convert.ToString(size);
        }
Ejemplo n.º 3
0
        static public XmlNode CheckForExistingPower(CharConverter app, XmlNode node, String name)
        {
            String      value;
            XmlNode     nodePowers = node.SelectSingleNode("powers");
            XmlNodeList powers     = nodePowers.ChildNodes;

            for (int nPower = powers.Count - 1; nPower >= 0; nPower--)
            {
                XmlNode nodePower = powers[nPower];
                value = app.ValueOf(nodePower, "name");
                if (name.Equals(value))
                {
                    return(nodePower);
                }
            }

            /* DEBUG
             *          XmlNodeList nodelist = node.SelectNodes("powers/*");
             *          for (int powercatindex = 0; powercatindex < nodelist.Count; powercatindex++)
             *          {
             *              XmlNode powercat = nodelist[powercatindex];
             *              XmlNode powernode = powercat.SelectSingleNode("power");
             *              XmlNodeList powers = powernode.ChildNodes;
             *              for (int powerindex = powers.Count - 1; powerindex >= 0; powerindex--)
             *              {
             *                  XmlNode power = powers[powerindex];
             *                  value = app.ValueOf(power, "name");
             *                  if (name.Equals(value))
             *                      return power;
             *              }
             *          }
             */
            return(null);
        }
Ejemplo n.º 4
0
        static public void processProficiencyarmor(CharConverter app, String call, ref XmlNode inChar, ref XmlNode outChar, ref XmlNode targetNode)
        {
            var    ApiAtributes = app.ParseApiAttributes(call);
            String featlist     = ApiAtributes.ContainsKey("featlist") ? ApiAtributes["featlist"] : "featlist";

            XmlNode     node     = outChar.SelectSingleNode(featlist);
            XmlNodeList nodelist = node.ChildNodes;
            XmlNode     armorpro = targetNode;

            for (int i = nodelist.Count - 1; i >= 0; i--)
            {
                XmlNode feat   = nodelist[i];
                String  value  = app.ValueOf(feat, "value");
                XmlNode target = null;
                if (value.Contains("Armor Proficiency"))
                {
                    value  = value.Split(',')[1].Substring(1);
                    target = armorpro;
                }
                else if (value.Contains("Shield Proficiency"))
                {
                    String[] valuesplit = value.Split(' ');
                    var      shsb       = new StringBuilder();
                    foreach (String shvalue in valuesplit)
                    {
                        if (shvalue.Equals("Proficiency"))
                        {
                            break;
                        }

                        shsb.Append(shvalue);
                        shsb.Append(" ");
                    }
                    shsb.Remove(shsb.Length - 1, 1);
                    value  = shsb.ToString();
                    target = armorpro;

                    node.RemoveChild(node.ChildNodes[i]);
                }
                if (target != null)
                {
                    if (app.CheckForDuplicateValue(armorpro, value))
                    {
                        continue;
                    }

                    target.AppendChild(outChar.OwnerDocument.CreateElement(CharConverter.CreateId(target)));
                    target.LastChild.AppendChild(CharConverter.CreateElement(outChar.OwnerDocument, "value", "string", value));
                    value = app.ValueOf(feat, "description");
                    target.LastChild.AppendChild(CharConverter.CreateElement(outChar.OwnerDocument, "description", "string", value));
                }
            }
        }
Ejemplo n.º 5
0
        static public void processSpeedSpecial(CharConverter app, String call, ref XmlNode inChar, ref XmlNode outChar, ref XmlNode targetNode)
        {
            //speed/special
            String value = targetNode.InnerText;
            var    strbu = new StringBuilder();

            String[] speedspecial = value.Split(':');
            for (int i = 1; i < speedspecial.Length; i += 2)
            {
                strbu.Append(speedspecial[i]);
                strbu.Append(i + 2 >= speedspecial.Length ? "." : ", ");
            }
            targetNode.InnerText = strbu.ToString();
        }
Ejemplo n.º 6
0
        static public void processSpellset(CharConverter app, String call, ref XmlNode inChar, ref XmlNode outChar, ref XmlNode targetNode)
        {
            foreach (XmlNode spellset in targetNode.ChildNodes)
            {
                if (spellset.SelectSingleNode("levels") == null)
                {
                    continue;
                }
                foreach (XmlNode level in spellset.SelectSingleNode("levels").ChildNodes)
                {
                    foreach (XmlNode spell in level.SelectSingleNode("spells").ChildNodes)
                    {
                        String   value  = app.ValueOf(spell, "school");
                        String[] school = value.Split(':');
                        var      sb     = new StringBuilder();
                        sb.Append(school[0]);
                        var innerbra = new StringBuilder();
                        for (int i = 1; i < school.Length; i++)
                        {
                            value = school[i];
                            if (!String.IsNullOrEmpty(value))
                            {
                                innerbra.Append(value);
                            }
                            if (i + 1 < school.Length &&
                                !String.IsNullOrEmpty(school[i + 1]))
                            {
                                innerbra.Append(",");
                            }
                        }
                        if (!String.IsNullOrEmpty(innerbra.ToString()))
                        {
                            sb.Append(" [").Append(innerbra.ToString()).Append("]");
                        }
                        app.Set(spell, "school", sb.ToString());
                    }
                }
            }

            XmlNodeList nodelist = targetNode.ChildNodes;

            for (int i = nodelist.Count - 1; i >= 0; i--)
            {
                if (nodelist[i].ChildNodes.Count <= 1)
                {
                    targetNode.RemoveChild(nodelist[i]);
                }
            }
        }
Ejemplo n.º 7
0
        static public void processCoinsSlot2(CharConverter app, String call, ref XmlNode inChar, ref XmlNode outChar, ref XmlNode targetNode)
        {
            //coins/slot2/amount
            String value = targetNode.InnerText;

            if (!String.IsNullOrEmpty(value))
            {
                String[] gold       = value.Split(' ');
                int      goldamount = 0;
                for (int i = 0; i < gold.Length; i++)
                {
                    goldamount += CharConverter.ConvertToInt(gold[i].Split('.')[0]);
                }
                targetNode.InnerText = Convert.ToString(goldamount);
            }
        }
Ejemplo n.º 8
0
        static public void ReplaceCharacter(CharConverter app, XmlNode parentNode, XmlNode newNode, XmlNode oldNode)
        {
            //powers

            /* DEBUG
             * XmlNodeList nodelist = newNode.SelectSingleNode("powers").ChildNodes;
             * for (int powercatindex = 0; powercatindex < nodelist.Count; powercatindex++)
             * {
             *  XmlNode powercat = nodelist[powercatindex];
             *  XmlNode powernode = powercat.SelectSingleNode("power");
             *  XmlNodeList powers = powernode.ChildNodes;
             *  foreach (XmlNode power in powers)
             *  {
             *      String value = app.ValueOf(power, "name");
             *      XmlNode existingpower = CheckForExistingPower(app, oldNode, value);
             *
             *      if (existingpower == null)
             *          continue;
             *
             *      powernode.RemoveChild(power);
             *      powernode.AppendChild(CharConverter.ImportIdNode(newNode.OwnerDocument, powernode, existingpower));
             *  }
             * }
             */
            XmlNode     nodePowers    = newNode.SelectSingleNode("powers");
            XmlNodeList nodePowerList = nodePowers.ChildNodes;

            foreach (XmlNode nodePower in nodePowerList)
            {
                String  value         = app.ValueOf(nodePower, "name");
                XmlNode existingpower = CheckForExistingPower(app, oldNode, value);

                if (existingpower == null)
                {
                    continue;
                }

                nodePowers.RemoveChild(nodePower);
                nodePowers.AppendChild(CharConverter.ImportIdNode(newNode.OwnerDocument, nodePower, existingpower));
            }

            //notes
            app.ReplaceElement(oldNode, newNode, "notes");

            //appearance
            app.ReplaceElement(oldNode, newNode, "appearance");
        }
Ejemplo n.º 9
0
        static public void processSpecialabilitylist(CharConverter app, String call, ref XmlNode inChar, ref XmlNode outChar, ref XmlNode targetNode)
        {
            String value;
            var    ApiAtributes     = app.ParseApiAttributes(call);
            String characterClasses = "classes";
            String characterName    = "name";

            if (ApiAtributes.ContainsKey("classes"))
            {
                characterClasses = ApiAtributes["classes"];
            }
            if (ApiAtributes.ContainsKey("name"))
            {
                characterName = ApiAtributes["name"];
            }

            foreach (XmlNode classnode in outChar.SelectSingleNode(characterClasses).ChildNodes)
            {
                value = app.ValueOf(classnode, "name");
                //Checks for speciality
                if (!value.Equals(ParseClassName(value)))
                {
                    app.Set(classnode, characterName, ParseClassName(value));
                    XmlNode spabilitylist = targetNode;
                    XmlNode specialty     = outChar.OwnerDocument.CreateElement(CharConverter.CreateId(spabilitylist));
                    String  specialtyname = value;

                    value = "Specialty: " + value;
                    specialty.AppendChild(CharConverter.CreateElement(outChar.OwnerDocument, "value", "string", value));

                    value = "The specialty for the " + ParseClassName(specialtyname) + "class is " + specialtyname + ".";
                    specialty.AppendChild(CharConverter.CreateElement(outChar.OwnerDocument, "description", "string", value));

                    if (spabilitylist.ChildNodes.Count > 0)
                    {
                        spabilitylist.InsertBefore(specialty, spabilitylist.ChildNodes[0]);
                    }
                    else
                    {
                        spabilitylist.AppendChild(specialty);
                    }
                }
            }
        }
Ejemplo n.º 10
0
        static public void processSkilllist(CharConverter app, String call, ref XmlNode inChar, ref XmlNode outChar, ref XmlNode targetNode)
        {
            String value;

            foreach (XmlNode skill in targetNode.ChildNodes)
            {
                String label = app.ValueOf(skill, "label");
                if (label.Contains("(") &&
                    label.Contains(")") &&
                    (label.Contains("Knowledge") ||
                     label.Contains("Perform") ||
                     label.Contains("Profession") ||
                     label.Contains("Craft")))
                {
                    app.Set(skill, "label", label.Split('(')[0]);
                    value = label.Split('(')[1].Split(')')[0];
                    skill.AppendChild(CharConverter.CreateElement(outChar.OwnerDocument, "sublabel", "string", value));
                }
            }
        }
Ejemplo n.º 11
0
        static public void ReplaceCharacter(CharConverter app, XmlNode parentNode, XmlNode newNode, XmlNode oldNode)
        {
            //spellset
            XmlNodeList nodelist = newNode.SelectSingleNode("spellset").ChildNodes;

            foreach (XmlNode spellset in nodelist)
            {
                if (spellset.SelectSingleNode("levels") == null)
                {
                    continue;
                }

                XmlNodeList levels = spellset.SelectSingleNode("levels").ChildNodes;
                for (int levelindex = 0; levelindex < levels.Count; levelindex++)
                {
                    XmlNode     level      = levels[levelindex];
                    XmlNode     spells     = level.SelectSingleNode("spells");
                    XmlNodeList spellslist = spells.ChildNodes;
                    for (int i = spellslist.Count - 1; i >= 0; i--)
                    {
                        XmlNode spell         = spellslist[i];
                        String  value         = app.ValueOf(spell, "name");
                        XmlNode existingspell = CheckForExistingSpell(app, oldNode, value, levelindex);

                        if (existingspell == null)
                        {
                            continue;
                        }

                        spells.RemoveChild(spell);
                        spells.AppendChild(CharConverter.ImportIdNode(newNode.OwnerDocument, spells, existingspell));
                    }
                }
            }

            //notes
            app.ReplaceElement(oldNode, newNode, "notes");

            //appearance
            app.ReplaceElement(oldNode, newNode, "appearance");
        }