Ejemplo n.º 1
0
        private void treeReference_AfterSelect(object sender, TreeViewEventArgs e)
        {
            XPathDocument  xDoc;
            XPathNavigator xNav            = null;
            bool           descriptionOnly = false;

            if (e.Node.Parent != null)
            {
                switch (e.Node.Parent.Name)
                {
                case "nodeStatuses":
                    xDoc = new XPathDocument(Global.StatusXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Statuses/Status[@Text=\"{e.Node.Text}\"]");
                    break;

                case "nodeActions":
                    xDoc = new XPathDocument(Global.ActionsXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Actions/Action[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeDamageTypes":
                    xDoc = new XPathDocument(Global.DamageXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Damages/Damage[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeFormWerewolf":
                    xDoc = new XPathDocument(Global.FormXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Forms/Werewolf/Form[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeDerangements":
                    xDoc = new XPathDocument(Global.DerangementXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Derangements/Derangement[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeFlaws":
                    xDoc = new XPathDocument(Global.FlawXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Flaws/Flaw[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeMerits":
                    xDoc = new XPathDocument(Global.MeritXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Merits/Merit[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeVices":
                    xDoc = new XPathDocument(Global.ViceXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Vices/Vice[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeVirtues":
                    xDoc = new XPathDocument(Global.VirtueXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Virtues/Virtue[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeRules":
                    xDoc = new XPathDocument(Global.RuleXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Rules/Rule[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeArcana":
                    xDoc            = new XPathDocument(Arcana.ArcanaXml);
                    xNav            = xDoc.CreateNavigator().SelectSingleNode($"Arcanum/Arcana[@Name=\"{e.Node.Text}\"]");
                    descriptionOnly = true;
                    break;

                case "nodeArcanaGeneral":
                    xDoc = new XPathDocument(Arcana.ArcanaXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Arcanum/Arcana[@Name='General']/Rote[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeArcanaDeath":
                    xDoc = new XPathDocument(Arcana.ArcanaXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Arcanum/Arcana[@Name='Death']/Rote[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeArcanaFate":
                    xDoc = new XPathDocument(Arcana.ArcanaXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Arcanum/Arcana[@Name='Fate']/Rote[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeArcanaForces":
                    xDoc = new XPathDocument(Arcana.ArcanaXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Arcanum/Arcana[@Name='Forces']/Rote[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeArcanaLife":
                    xDoc = new XPathDocument(Arcana.ArcanaXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Arcanum/Arcana[@Name='Life']/Rote[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeArcanaMatter":
                    xDoc = new XPathDocument(Arcana.ArcanaXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Arcanum/Arcana[@Name='Matter']/Rote[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeArcanaMind":
                    xDoc = new XPathDocument(Arcana.ArcanaXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Arcanum/Arcana[@Name='Mind']/Rote[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeArcanaPrime":
                    xDoc = new XPathDocument(Arcana.ArcanaXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Arcanum/Arcana[@Name='Prime']/Rote[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeArcanaSpace":
                    xDoc = new XPathDocument(Arcana.ArcanaXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Arcanum/Arcana[@Name='Space']/Rote[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeArcanaSpirit":
                    xDoc = new XPathDocument(Arcana.ArcanaXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Arcanum/Arcana[@Name='Spirit']/Rote[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeArcanaTime":
                    xDoc = new XPathDocument(Arcana.ArcanaXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Arcanum/Arcana[@Name='Time']/Rote[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeDisciplines":
                    xDoc            = new XPathDocument(Discipline.DisciplineXml);
                    xNav            = xDoc.CreateNavigator().SelectSingleNode($"Disciplines/Discipline[@Name=\"{e.Node.Text}\"]");
                    descriptionOnly = true;
                    break;

                case "nodeDisciplineAnimalism":
                    xDoc = new XPathDocument(Discipline.DisciplineXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Disciplines/Discipline[@Name='Animalism']/Sub[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeDisciplineAuspex":
                    xDoc = new XPathDocument(Discipline.DisciplineXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Disciplines/Discipline[@Name='Auspex']/Sub[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeDisciplineCelerity":
                    xDoc = new XPathDocument(Discipline.DisciplineXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Disciplines/Discipline[@Name='Celerity']/Sub[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeDisciplineDominate":
                    xDoc = new XPathDocument(Discipline.DisciplineXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Disciplines/Discipline[@Name='Dominate']/Sub[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeDisciplineMajesty":
                    xDoc = new XPathDocument(Discipline.DisciplineXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Disciplines/Discipline[@Name='Majesty']/Sub[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeDisciplineNightmare":
                    xDoc = new XPathDocument(Discipline.DisciplineXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Disciplines/Discipline[@Name='Nightmare']/Sub[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeDisciplineObfuscate":
                    xDoc = new XPathDocument(Discipline.DisciplineXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Disciplines/Discipline[@Name='Obfuscate']/Sub[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeDisciplineProtean":
                    xDoc = new XPathDocument(Discipline.DisciplineXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Disciplines/Discipline[@Name='Protean']/Sub[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeDisciplineResilience":
                    xDoc = new XPathDocument(Discipline.DisciplineXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Disciplines/Discipline[@Name='Resilience']/Sub[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeDisciplineVigor":
                    xDoc = new XPathDocument(Discipline.DisciplineXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Disciplines/Discipline[@Name='Vigor']/Sub[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeDisciplineCrúac":
                    xDoc = new XPathDocument(Discipline.DisciplineXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Disciplines/Discipline[@Name='Crúac']/Sub[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeDisciplineThebanSorcery":
                    xDoc = new XPathDocument(Discipline.DisciplineXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Disciplines/Discipline[@Name='Theban Sorcery']/Sub[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeDevotions":
                    xDoc = new XPathDocument(Devotion.DevotionXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Devotions/Devotion[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeGifts":
                    xDoc            = new XPathDocument(Gift.GiftXml);
                    xNav            = xDoc.CreateNavigator().SelectSingleNode($"Gifts/Gift[@Name=\"{e.Node.Text}\"]");
                    descriptionOnly = true;
                    break;

                case "nodeGiftCrescentMoon":
                    xDoc = new XPathDocument(Gift.GiftXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Gifts/Gift[@Name='Crescent Moon']/Sub[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeGiftDeath":
                    xDoc = new XPathDocument(Gift.GiftXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Gifts/Gift[@Name='Death']/Sub[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeGiftDominance":
                    xDoc = new XPathDocument(Gift.GiftXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Gifts/Gift[@Name='Dominance']/Sub[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeGiftElemental":
                    xDoc = new XPathDocument(Gift.GiftXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Gifts/Gift[@Name='Elemental']/Sub[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeGiftEvasion":
                    xDoc = new XPathDocument(Gift.GiftXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Gifts/Gift[@Name='Evasion']/Sub[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeGiftFatherWolf":
                    xDoc = new XPathDocument(Gift.GiftXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Gifts/Gift[@Name='Father Wolf']/Sub[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeGiftFullMoon":
                    xDoc = new XPathDocument(Gift.GiftXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Gifts/Gift[@Name='Full Moon']/Sub[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeGiftGibbousMoon":
                    xDoc = new XPathDocument(Gift.GiftXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Gifts/Gift[@Name='Gibbouls Moon']/Sub[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeGiftHalfMoon":
                    xDoc = new XPathDocument(Gift.GiftXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Gifts/Gift[@Name='Half Moon']/Sub[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeGiftInsight":
                    xDoc = new XPathDocument(Gift.GiftXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Gifts/Gift[@Name='Insight']/Sub[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeGiftInspiration":
                    xDoc = new XPathDocument(Gift.GiftXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Gifts/Gift[@Name='Inspiration']/Sub[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeGiftKnowledge":
                    xDoc = new XPathDocument(Gift.GiftXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Gifts/Gift[@Name='Knowledge']/Sub[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeGiftMotherLuna":
                    xDoc = new XPathDocument(Gift.GiftXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Gifts/Gift[@Name='Mother Luna']/Sub[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeGiftNature":
                    xDoc = new XPathDocument(Gift.GiftXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Gifts/Gift[@Name='Nature']/Sub[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeGiftNewMoon":
                    xDoc = new XPathDocument(Gift.GiftXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Gifts/Gift[@Name='New Moon']/Sub[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeGiftRage":
                    xDoc = new XPathDocument(Gift.GiftXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Gifts/Gift[@Name='Rage']/Sub[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeGiftShaping":
                    xDoc = new XPathDocument(Gift.GiftXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Gifts/Gift[@Name='Shaping']/Sub[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeGiftStealth":
                    xDoc = new XPathDocument(Gift.GiftXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Gifts/Gift[@Name='Stealth']/Sub[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeGiftStrength":
                    xDoc = new XPathDocument(Gift.GiftXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Gifts/Gift[@Name='Strength']/Sub[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeGiftTechnology":
                    xDoc = new XPathDocument(Gift.GiftXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Gifts/Gift[@Name='Technology']/Sub[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeGiftWarding":
                    xDoc = new XPathDocument(Gift.GiftXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Gifts/Gift[@Name='Warding']/Sub[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeGiftWeather":
                    xDoc = new XPathDocument(Gift.GiftXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Gifts/Gift[@Name='Weather']/Sub[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeProfessions":
                    xDoc = new XPathDocument(Profession.ProfessionXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Professions/Profession[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeRites":
                    xDoc = new XPathDocument(Rite.RiteXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Rites/Rite[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeVestments":
                    xDoc            = new XPathDocument(Vestment.VestmentXml);
                    xNav            = xDoc.CreateNavigator().SelectSingleNode($"Vesments/Vice[@Name=\"{e.Node.Text}\"]");
                    descriptionOnly = true;
                    break;

                case "nodeVestmentEnvy":
                    xDoc = new XPathDocument(Vestment.VestmentXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Vestments/Vice[@Name='Envy']//Vestment[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeVestmentGluttony":
                    xDoc = new XPathDocument(Vestment.VestmentXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Vestments/Vice[@Name='Gluttony']//Vestment[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeVestmentGreed":
                    xDoc = new XPathDocument(Vestment.VestmentXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Vestments/Vice[@Name='Greed']//Vestment[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeVestmentLust":
                    xDoc = new XPathDocument(Vestment.VestmentXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Vestments/Vice[@Name='Lust']//Vestment[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeVestmentPride":
                    xDoc = new XPathDocument(Vestment.VestmentXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Vestments/Vice[@Name='Pride']//Vestment[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeVestmentSloth":
                    xDoc = new XPathDocument(Vestment.VestmentXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Vestments/Vice[@Name='Sloth']//Vestment[@Name=\"{e.Node.Text}\"]");
                    break;

                case "nodeVestmentWrath":
                    xDoc = new XPathDocument(Vestment.VestmentXml);
                    xNav = xDoc.CreateNavigator().SelectSingleNode($"Vestments/Vice[@Name='Wrath']//Vestment[@Name=\"{e.Node.Text}\"]");
                    break;

                default:
                    return;
                }
            }
            else
            {
                return;
            }

            string rtf = RtfHelper.Begin();

            RtfHelper.Bold(ref rtf, xNav.SelectSingleNode("@Name").Value);
            RtfHelper.EndLine(ref rtf);

            XPathNodeIterator nodeIter = xNav.SelectChildren(XPathNodeType.All);

            while (nodeIter.MoveNext())
            {
                if (nodeIter.Current.Name == "Image")
                {
                    continue;
                }

                RtfHelper.EndLine(ref rtf);
                RtfHelper.Bold(ref rtf, nodeIter.Current.Name + ": ");

                XPathNodeIterator xChildIter = nodeIter.Current.SelectChildren(XPathNodeType.Element);

                if (xChildIter.Count > 0)
                {
                    while (xChildIter.MoveNext())
                    {
                        RtfHelper.EndLine(ref rtf);
                        RtfHelper.ConvertText(ref rtf, xChildIter.Current.Name + " | ");
                        RtfHelper.ConvertText(ref rtf, xChildIter.Current.Value);
                        if (xChildIter.Current.SelectSingleNode("@Value") != null)
                        {
                            RtfHelper.ConvertText(ref rtf, $" [{xChildIter.Current.SelectSingleNode("@Value").Value}]");
                        }
                    }
                }
                else if (descriptionOnly)
                {
                    if (nodeIter.Current.SelectSingleNode("Description") != null)
                    {
                        RtfHelper.EndLine(ref rtf);
                        RtfHelper.Bold(ref rtf, "Description: ");
                        RtfHelper.ConvertText(ref rtf, nodeIter.Current.SelectSingleNode("Description").Value);
                    }
                }
                else
                {
                    RtfHelper.ConvertText(ref rtf, nodeIter.Current.Value);
                }
                RtfHelper.EndLine(ref rtf);
            }

            RtfHelper.End(ref rtf);
            RtfDisplay.Description = rtf;


            RtfDisplay iDisplay = new RtfDisplay();

            GMForm.setPanelSelectedItem(iDisplay);
        }
Ejemplo n.º 2
0
 internal static void setPanelSelectedItem(RtfDisplay pvRtfDisplay)
 {
     cvPanelSelected.Controls.Clear();
     cvPanelSelected.Controls.Add(pvRtfDisplay);
 }