예제 #1
0
        private void _tvFamilyTree_SelectedIndexChanged(object sender, EventArgs e)
        {
            if ((int)((ComboBox)sender).SelectedIndex == 0)
            {
                return;
            }
            _tvFamilyTree.Nodes.Clear();
            SpellFamilyNames spellfamily = (SpellFamilyNames)(((ComboBox)sender).SelectedValue.ToInt32());

            new ProcInfo(_tvFamilyTree, spellfamily);
        }
예제 #2
0
        public ProcInfo(TreeView familyTree, SpellFamilyNames spellfamily)
        {
            familyTree.Nodes.Clear();

            var spells = from Spell in DBC.Spell
                         where Spell.Value.SpellFamilyName == (uint)spellfamily
                         join sk in DBC.SkillLineAbility on Spell.Key equals sk.Value.SpellId into temp1
                         from Skill in temp1.DefaultIfEmpty()
                         join skl in DBC.SkillLine on Skill.Value.SkillId equals skl.Key into temp2
                         from SkillLine in temp2.DefaultIfEmpty()
                         select new
                         {
                             Spell,
                             Skill.Value.SkillId,
                             SkillLine.Value
                         };

            for (int i = 0; i < 96; i++)
            {
                uint[] mask = new uint[3];

                if (i < 32)
                    mask[0] = 1U << i;
                else if (i < 64)
                    mask[1] = 1U << (i - 32);
                else
                    mask[2] = 1U << (i - 64);

                TreeNode node   = new TreeNode();
                node.Text       = String.Format("0x{0:X8} {1:X8} {2:X8}", mask[2], mask[1], mask[0]);
                node.ImageKey   = "family.ico";
                familyTree.Nodes.Add(node);
            }

            foreach (var elem in spells)
            {
                SpellEntry spell = elem.Spell.Value;
                bool IsSkill     = elem.SkillId != 0;

                StringBuilder name    = new StringBuilder();
                StringBuilder toolTip = new StringBuilder();

                name.AppendFormat("{0} - {1} ", spell.ID, spell.SpellNameRank);

                toolTip.AppendFormatLine("Spell Name: {0}",  spell.SpellNameRank);
                toolTip.AppendFormatLine("Description: {0}", spell.Description);
                toolTip.AppendFormatLine("ToolTip: {0}",     spell.ToolTip);

                if (IsSkill)
                {
                    name.AppendFormat("(Skill: ({0}) {1}) ", elem.SkillId, elem.Value.Name);

                    toolTip.AppendLine();
                    toolTip.AppendFormatLine("Skill Name: {0}",  elem.Value.Name);
                    toolTip.AppendFormatLine("Description: {0}", elem.Value.Description);
                }

                name.AppendFormat("({0})", spell.School.ToString().NormaliseString("MASK_"));

                foreach (TreeNode node in familyTree.Nodes)
                {
                    uint[] mask = new uint[3];

                    if (node.Index < 32)
                        mask[0] = 1U << node.Index;
                    else if (node.Index < 64)
                        mask[1] = 1U << (node.Index - 32);
                    else
                        mask[2] = 1U << (node.Index - 64);

                    if ((spell.SpellFamilyFlags.ContainsElement(mask)))
                    {
                        TreeNode child  = new TreeNode();
                        child           = node.Nodes.Add(name.ToString());
                        child.Name      = spell.ID.ToString();
                        child.ImageKey  = IsSkill ? "plus.ico" : "munus.ico";
                        child.ForeColor = IsSkill ? Color.Blue : Color.Red;
                        child.ToolTipText = toolTip.ToString();
                    }
                }
            }
        }
예제 #3
0
        public ProcInfo(TreeView familyTree, SpellFamilyNames spellfamily)
        {
            familyTree.Nodes.Clear();

            var spells = from Spell in DBC.Spell
                         where Spell.Value.SpellFamilyName == (uint)spellfamily
                         join sk in DBC.SkillLineAbility on Spell.Key equals sk.Value.SpellId into temp1
                         from Skill in temp1.DefaultIfEmpty()
                         join skl in DBC.SkillLine on Skill.Value.SkillId equals skl.Key into temp2
                         from SkillLine in temp2.DefaultIfEmpty()
                         select new
            {
                Spell,
                Skill.Value.SkillId,
                SkillLine.Value
            };

            for (int i = 0; i < 96; i++)
            {
                uint[] mask = new uint[3];

                if (i < 32)
                {
                    mask[0] = 1U << i;
                }
                else if (i < 64)
                {
                    mask[1] = 1U << (i - 32);
                }
                else
                {
                    mask[2] = 1U << (i - 64);
                }

                TreeNode node = new TreeNode();
                node.Text     = String.Format("0x{0:X8} {1:X8} {2:X8}", mask[2], mask[1], mask[0]);
                node.ImageKey = "family.ico";
                familyTree.Nodes.Add(node);
            }

            foreach (var elem in spells)
            {
                SpellEntry spell   = elem.Spell.Value;
                bool       IsSkill = elem.SkillId != 0;

                StringBuilder name    = new StringBuilder();
                StringBuilder toolTip = new StringBuilder();

                name.AppendFormat("{0} - {1} ", spell.ID, spell.SpellNameRank);

                toolTip.AppendFormatLine("Spell Name: {0}", spell.SpellNameRank);
                toolTip.AppendFormatLine("Description: {0}", spell.Description);
                toolTip.AppendFormatLine("ToolTip: {0}", spell.ToolTip);

                if (IsSkill)
                {
                    name.AppendFormat("(Skill: ({0}) {1}) ", elem.SkillId, elem.Value.Name);

                    toolTip.AppendLine();
                    toolTip.AppendFormatLine("Skill Name: {0}", elem.Value.Name);
                    toolTip.AppendFormatLine("Description: {0}", elem.Value.Description);
                }

                name.AppendFormat("({0})", spell.School.ToString().NormaliseString("MASK_"));

                foreach (TreeNode node in familyTree.Nodes)
                {
                    uint[] mask = new uint[3];

                    if (node.Index < 32)
                    {
                        mask[0] = 1U << node.Index;
                    }
                    else if (node.Index < 64)
                    {
                        mask[1] = 1U << (node.Index - 32);
                    }
                    else
                    {
                        mask[2] = 1U << (node.Index - 64);
                    }

                    if ((spell.SpellFamilyFlags.ContainsElement(mask)))
                    {
                        TreeNode child = new TreeNode();
                        child             = node.Nodes.Add(name.ToString());
                        child.Name        = spell.ID.ToString();
                        child.ImageKey    = IsSkill ? "plus.ico" : "munus.ico";
                        child.ForeColor   = IsSkill ? Color.Blue : Color.Red;
                        child.ToolTipText = toolTip.ToString();
                    }
                }
            }
        }
예제 #4
0
        public static void Fill(TreeView familyTree, SpellFamilyNames spellfamily)
        {
            familyTree.Nodes.Clear();

            var spells = from spell in DBC.DBC.SpellInfoStore.Values
                         where spell.SpellFamilyName == (uint)spellfamily

                         join sk in DBC.DBC.SkillLineAbility.Values on spell.ID equals sk.SpellID into temp1
                         from skill in temp1.DefaultIfEmpty(new SkillLineAbilityEntry())

                         join skl in DBC.DBC.SkillLine on skill.SkillLine equals skl.Key into temp2
                         from skillLine in temp2.DefaultIfEmpty()

                         select new
            {
                spell,
                skill.SkillLine,
                skillLine = skillLine.Value
            };

            for (var i = 0; i < 128; ++i)
            {
                var mask = new uint[4];

                if (i < 32)
                {
                    mask[0] = 1U << i;
                }
                else if (i < 64)
                {
                    mask[1] = 1U << (i - 32);
                }
                else if (i < 96)
                {
                    mask[2] = 1U << (i - 64);
                }
                else
                {
                    mask[3] = 1U << (i - 96);
                }

                var node = new TreeNode
                {
                    Text     = $"0x{mask[3]:X8} {mask[2]:X8} {mask[1]:X8} {mask[0]:X8}",
                    ImageKey = @"family.ico"
                };
                familyTree.Nodes.Add(node);
            }

            foreach (var elem in spells)
            {
                var spell   = elem.spell;
                var isSkill = elem.SkillLine != 0;

                var name    = new StringBuilder();
                var toolTip = new StringBuilder();

                name.AppendFormat("{0} - {1} ", spell.ID, spell.Name);

                toolTip.AppendFormatLine("Spell Name: {0}", spell.Name);
                toolTip.AppendFormatLine("Description: {0}", spell.Description);
                toolTip.AppendFormatLine("ToolTip: {0}", spell.Tooltip);

                if (isSkill)
                {
                    name.AppendFormat("(Skill: ({0}) {1}) ", elem.SkillLine, elem.skillLine.DisplayName);

                    toolTip.AppendLine();
                    toolTip.AppendFormatLine("Skill Name: {0}", elem.skillLine.DisplayName);
                    toolTip.AppendFormatLine("Description: {0}", elem.skillLine.Description);
                }

                name.AppendFormat("({0})", ((SpellSchoolMask)spell.SchoolMask).ToString().NormalizeString("MASK_"));

                foreach (TreeNode node in familyTree.Nodes)
                {
                    var mask = new uint[4];

                    if (node.Index < 32)
                    {
                        mask[0] = 1U << node.Index;
                    }
                    else if (node.Index < 64)
                    {
                        mask[1] = 1U << (node.Index - 32);
                    }
                    else if (node.Index < 96)
                    {
                        mask[2] = 1U << (node.Index - 64);
                    }
                    else
                    {
                        mask[3] = 1U << (node.Index - 96);
                    }

                    if ((!spell.SpellFamilyFlags.ContainsElement(mask)))
                    {
                        continue;
                    }

                    var child = node.Nodes.Add(name.ToString());
                    child.Name        = spell.ID.ToString();
                    child.ImageKey    = isSkill ? "plus.ico" : "munus.ico";
                    child.ForeColor   = isSkill ? Color.Blue : Color.Red;
                    child.ToolTipText = toolTip.ToString();
                }
            }
        }
예제 #5
0
        public ProcInfo(TreeView familyTree, SpellFamilyNames spellfamily)
        {
            familyTree.Nodes.Clear();

            var spells = from spell in DBC.DBC.SpellInfoStore.Values
                         where spell.SpellFamilyName == (uint)spellfamily
                         join sk in DBC.DBC.SkillLineAbility.Values on spell.ID equals sk.SpellId into temp1
                         from skill in temp1.DefaultIfEmpty(new SkillLineAbilityEntry())
                         join skl in DBC.DBC.SkillLine.Values on skill.SkillId equals skl.Id into temp2
                         from skillLine in temp2.DefaultIfEmpty(new SkillLineEntry())
                         select new
                         {
                             spell,
                             skill.SkillId,
                             skillLine
                         };

            for (var i = 0; i < 96; ++i)
            {
                var mask = new uint[3];

                if (i < 32)
                    mask[0] = 1U << i;
                else if (i < 64)
                    mask[1] = 1U << (i - 32);
                else
                    mask[2] = 1U << (i - 64);

                var node   = new TreeNode
                {
                    Text = String.Format("0x{0:X8} {1:X8} {2:X8}", mask[2], mask[1], mask[0]),
                    ImageKey = @"family.ico"
                };
                familyTree.Nodes.Add(node);
            }

            foreach (var elem in spells)
            {
                var spell = elem.spell;
                var isSkill = elem.SkillId != 0;

                var name    = new StringBuilder();
                var toolTip = new StringBuilder();

                name.AppendFormat("{0} - {1} ", spell.ID, spell.SpellNameRank);

                toolTip.AppendFormatLine("Spell Name: {0}",  spell.SpellNameRank);
                toolTip.AppendFormatLine("Description: {0}", spell.Description);
                toolTip.AppendFormatLine("ToolTip: {0}",     spell.ToolTip);

                if (isSkill)
                {
                    name.AppendFormat("(Skill: ({0}) {1}) ", elem.SkillId, elem.skillLine.Name);

                    toolTip.AppendLine();
                    toolTip.AppendFormatLine("Skill Name: {0}", elem.skillLine.Name);
                    toolTip.AppendFormatLine("Description: {0}", elem.skillLine.Description);
                }

                name.AppendFormat("({0})", spell.School.ToString().NormalizeString("MASK_"));

                foreach (TreeNode node in familyTree.Nodes)
                {
                    var mask = new uint[3];

                    if (node.Index < 32)
                        mask[0] = 1U << node.Index;
                    else if (node.Index < 64)
                        mask[1] = 1U << (node.Index - 32);
                    else
                        mask[2] = 1U << (node.Index - 64);

                    if ((!spell.SpellFamilyFlags.ContainsElement(mask)))
                        continue;

                    var child       = node.Nodes.Add(name.ToString());
                    child.Name      = spell.ID.ToString();
                    child.ImageKey  = isSkill ? "plus.ico" : "munus.ico";
                    child.ForeColor = isSkill ? Color.Blue : Color.Red;
                    child.ToolTipText = toolTip.ToString();
                }
            }
        }