void AddCompletedSuitToTreeView(CompletedSuit suit) { CompletedSuitTreeNode newNode = new CompletedSuitTreeNode(suit); TreeNodeCollection nodes = FindDeepestNode(treeView1.Nodes, suit); for (int i = 0; i <= nodes.Count; i++) { if (i == nodes.Count) { nodes.Add(newNode); break; } CompletedSuitTreeNode nodeAsSuit = (nodes[i] as CompletedSuitTreeNode); //if (nodeAsSuit != null && (nodeAsSuit.Suit.Count < suit.Count || (nodeAsSuit.Suit.Count == suit.Count && nodeAsSuit.Suit.TotalBaseArmorLevel < suit.TotalBaseArmorLevel))) if (nodeAsSuit != null) { if (nodeAsSuit.Suit.TotalBaseArmorLevel < suit.TotalBaseArmorLevel) { nodes.Insert(i, newNode); break; } if ((nodeAsSuit.Suit.TotalBaseArmorLevel == suit.TotalBaseArmorLevel) && ((nodeAsSuit.Suit.TotalEffectiveEpics < suit.TotalEffectiveEpics) || (nodeAsSuit.Suit.TotalEffectiveEpics == suit.TotalEffectiveEpics && nodeAsSuit.Suit.TotalEffectiveMajors < suit.TotalEffectiveMajors))) { nodes.Insert(i, newNode); break; } } } }
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) { CompletedSuitTreeNode node = e.Node as CompletedSuitTreeNode; if (node != null) { PopulateFromEquipmentGroup(node.Suit); } }
TreeNodeCollection FindDeepestNode(TreeNodeCollection nodes, CompletedSuit suit) { foreach (TreeNode node in nodes) { CompletedSuitTreeNode nodeAsSuit = (node as CompletedSuitTreeNode); if (nodeAsSuit != null && suit.IsProperSupersetOf(nodeAsSuit.Suit)) { return(FindDeepestNode(node.Nodes, suit)); } } return(nodes); }
private void cmdCopyToClipboard_Click(object sender, EventArgs e) { var sb = new StringBuilder(); CompletedSuitTreeNode node = treeView1.SelectedNode as CompletedSuitTreeNode; if (node == null) { return; } AddEquipmentPieceToClipboard(node.Suit[EquipMask.HeadWear] == null ? null : node.Suit[EquipMask.HeadWear].ExtendedMyWorldObject, sb); AddEquipmentPieceToClipboard(node.Suit[EquipMask.ChestArmor] == null ? null : node.Suit[EquipMask.ChestArmor].ExtendedMyWorldObject, sb); AddEquipmentPieceToClipboard(node.Suit[EquipMask.AbdomenArmor] == null ? null : node.Suit[EquipMask.AbdomenArmor].ExtendedMyWorldObject, sb); AddEquipmentPieceToClipboard(node.Suit[EquipMask.UpperArmArmor] == null ? null : node.Suit[EquipMask.UpperArmArmor].ExtendedMyWorldObject, sb); AddEquipmentPieceToClipboard(node.Suit[EquipMask.LowerArmArmor] == null ? null : node.Suit[EquipMask.LowerArmArmor].ExtendedMyWorldObject, sb); AddEquipmentPieceToClipboard(node.Suit[EquipMask.HandWear] == null ? null : node.Suit[EquipMask.HandWear].ExtendedMyWorldObject, sb); AddEquipmentPieceToClipboard(node.Suit[EquipMask.UpperLegArmor] == null ? null : node.Suit[EquipMask.UpperLegArmor].ExtendedMyWorldObject, sb); AddEquipmentPieceToClipboard(node.Suit[EquipMask.LowerLegArmor] == null ? null : node.Suit[EquipMask.LowerLegArmor].ExtendedMyWorldObject, sb); AddEquipmentPieceToClipboard(node.Suit[EquipMask.FootWear] == null ? null : node.Suit[EquipMask.FootWear].ExtendedMyWorldObject, sb); sb.AppendLine(); AddEquipmentPieceToClipboard(node.Suit[EquipMask.ChestWear] == null ? null : node.Suit[EquipMask.ChestWear].ExtendedMyWorldObject, sb); AddEquipmentPieceToClipboard(node.Suit[EquipMask.UpperLegWear] == null ? null : node.Suit[EquipMask.UpperLegWear].ExtendedMyWorldObject, sb); sb.AppendLine(); AddEquipmentPieceToClipboard(node.Suit[EquipMask.NeckWear] == null ? null : node.Suit[EquipMask.NeckWear].ExtendedMyWorldObject, sb); AddEquipmentPieceToClipboard(node.Suit[EquipMask.TrinketOne] == null ? null : node.Suit[EquipMask.TrinketOne].ExtendedMyWorldObject, sb); AddEquipmentPieceToClipboard(node.Suit[EquipMask.WristWearLeft] == null ? null : node.Suit[EquipMask.WristWearLeft].ExtendedMyWorldObject, sb); AddEquipmentPieceToClipboard(node.Suit[EquipMask.WristWearRight] == null ? null : node.Suit[EquipMask.WristWearRight].ExtendedMyWorldObject, sb); AddEquipmentPieceToClipboard(node.Suit[EquipMask.FingerWearLeft] == null ? null : node.Suit[EquipMask.FingerWearLeft].ExtendedMyWorldObject, sb); AddEquipmentPieceToClipboard(node.Suit[EquipMask.FingerWearRight] == null ? null : node.Suit[EquipMask.FingerWearRight].ExtendedMyWorldObject, sb); sb.AppendLine(); sb.AppendLine("Total Effective Legendaries: ".PadRight(30) + node.Suit.TotalEffectiveLegendaries); sb.AppendLine("Total Effective Epics: ".PadRight(30) + node.Suit.TotalEffectiveEpics); sb.AppendLine("Total Effective Majors: ".PadRight(30) + node.Suit.TotalEffectiveMajors); sb.AppendLine("Total Base Armor Level: ".PadRight(30) + node.Suit.TotalBaseArmorLevel); sb.AppendLine(); var spells = new List <Spell>(); foreach (var kvp in node.Suit) { foreach (var spell in kvp.Value.ExtendedMyWorldObject.CachedSpells) { spells.Add(spell); } } spells.Sort((a, b) => { if (a.CantripLevel == Spell.CantripLevels.None && b.CantripLevel != Spell.CantripLevels.None) { return(1); } if (a.CantripLevel != Spell.CantripLevels.None && b.CantripLevel == Spell.CantripLevels.None) { return(-1); } if (a.CantripLevel != Spell.CantripLevels.None && b.CantripLevel != Spell.CantripLevels.None) { if (a.CantripLevel == b.CantripLevel) { return(String.Compare(b.Name, a.Name, StringComparison.OrdinalIgnoreCase)); } return(b.CantripLevel.CompareTo(a.CantripLevel)); } if (a.BuffLevel == b.BuffLevel) { return(String.Compare(b.Name, a.Name, StringComparison.OrdinalIgnoreCase)); } return(b.BuffLevel.CompareTo(a.BuffLevel)); }); foreach (var spell in spells) { sb.AppendLine(spell.ToString()); } try { Clipboard.SetText(sb.ToString()); } catch {}; }