private void RefreshItemFromWowhead(object sender, RoutedEventArgs e) { FrameworkElement fe = sender as FrameworkElement; ItemListItem listItem = fe.DataContext as ItemListItem; Item.LoadFromId(listItem.ItemInstance.Id, true, true, true, false); }
private void listBoxItems_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (!_buildingListItems && ((ListBox)sender).SelectedItem != null) { try { if (IsEnchantList) { ItemListItem listItem = ((ListBox)sender).SelectedItem as ItemListItem; ItemInstance copy = Character[Slot].Clone(); copy.EnchantId = listItem.EnchantId; IsShown = false; IsPopulated = false; Character[Slot] = copy; } else if (IsTinkeringList) { ItemListItem listItem = ((ListBox)sender).SelectedItem as ItemListItem; ItemInstance copy = Character[Slot].Clone(); copy.TinkeringId = listItem.TinkeringId; IsShown = false; IsPopulated = false; Character[Slot] = copy; } else if (IsReforgeList) { ItemListItem listItem = ((ListBox)sender).SelectedItem as ItemListItem; ItemInstance copy = Character[Slot].Clone(); copy.ReforgeId = listItem.ReforgeId; IsShown = false; IsPopulated = false; Character[Slot] = copy; } else if (IsGemList || IsCogwheelList || IsHydraulicList) { ItemListItem listItem = ((ListBox)sender).SelectedItem as ItemListItem; IsShown = false; IsPopulated = false; SelectedItem = listItem.Item.Id == -1 ? null : listItem.Item; if (IsAnItemsGem) { SelectedItemsGemChanged(this, new EventArgs()); } } else { ItemListItem listItem = ((ListBox)sender).SelectedItem as ItemListItem; IsShown = false; IsPopulated = false; if (listItem != null) { Character[Slot] = listItem.ItemInstance.Id == -1 ? null : listItem.ItemInstance; } } } catch { } this.Close(); } }
private void EditItem(object sender, RoutedEventArgs e) { FrameworkElement fe = sender as FrameworkElement; ItemListItem listItem = fe.DataContext as ItemListItem; new ItemEditor() { CurrentItem = listItem.ItemInstance.Item }.Show(); }
private void item_Clicked(object sender, MouseButtonEventArgs e) { if (!_buildingListItems && IsEnchantList) { FrameworkElement fe = sender as FrameworkElement; ItemListItem listItem = fe.DataContext as ItemListItem; int selectedEnchantId = -1; Enchant selectedEnchant = Character.GetEnchantBySlot(Slot); if (selectedEnchant != null) { selectedEnchantId = selectedEnchant.Id; } if (listItem.EnchantId == selectedEnchantId) { this.Close(); } } if (!_buildingListItems && IsTinkeringList) { FrameworkElement fe = sender as FrameworkElement; ItemListItem listItem = fe.DataContext as ItemListItem; int selectedTinkeringId = -1; Tinkering selectedTinkering = Character.GetTinkeringBySlot(Slot); if (selectedTinkering != null) { selectedTinkeringId = selectedTinkering.Id; } if (listItem.TinkeringId == selectedTinkeringId) { this.Close(); } } if (!_buildingListItems && IsReforgeList) { FrameworkElement fe = sender as FrameworkElement; ItemListItem listItem = fe.DataContext as ItemListItem; int selectedReforgeId = -1; Reforging selectedReforging = Character.GetReforgingBySlot(Slot); if (selectedReforging != null) { selectedReforgeId = selectedReforging.Id; } if (listItem.ReforgeId == selectedReforgeId) { this.Close(); } } }
private void item_MouseEnter(object sender, MouseEventArgs e) { FrameworkElement fe = sender as FrameworkElement; ItemListItem listItem = fe.DataContext as ItemListItem; if (listItem.ItemInstance != null) { MainPage.Tooltip.ItemInstance = listItem.ItemInstance; } else { MainPage.Tooltip.Item = listItem.Item; } MainPage.Tooltip.Show(fe, 367, 0); }
private void OpenInWowhead(object sender, RoutedEventArgs e) { FrameworkElement fe = sender as FrameworkElement; ItemListItem listItem = fe.DataContext as ItemListItem; #if SILVERLIGHT if (App.Current.IsRunningOutOfBrowser) { MyHyperlinkButton button = new MyHyperlinkButton("http://www.wowhead.com/?item=" + listItem.ItemInstance.Id); button.ClickMe(); } else { System.Windows.Browser.HtmlPage.Window.Navigate(new Uri("http://www.wowhead.com/?item=" + listItem.ItemInstance.Id), "_blank"); } #else System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo("http://www.wowhead.com/?item=" + listItem.ItemInstance.Id)); #endif }
private void BuildListItems() { try { _buildingListItems = true; if (Character == null) { return; } bool seenEquippedItem = (Character[Slot] == null); List <ComparisonCalculationBase> itemCalculations = new List <ComparisonCalculationBase>(); if (IsEnchantList) { CharacterCalculationsBase current = Calculations.GetCharacterCalculations(Character); if (Character != null && current != null) { itemCalculations = Calculations.GetEnchantCalculations(Item.GetItemSlotByCharacterSlot(Slot), Character, current, false); } } else if (IsTinkeringList) { CharacterCalculationsBase current = Calculations.GetCharacterCalculations(Character); if (Character != null && current != null) { itemCalculations = Calculations.GetTinkeringCalculations(Item.GetItemSlotByCharacterSlot(Slot), Character, current, false); } } else if (IsReforgeList) { CharacterCalculationsBase current = Calculations.GetCharacterCalculations(Character); if (Character != null && current != null) { itemCalculations = Calculations.GetReforgeCalculations(Slot, Character, current, false); } } else if (IsCogwheelList) { Calculations.ClearCache(); List <Item> relevantItems = Character.GetRelevantItems(GemSlot); foreach (Item item in relevantItems) { ComparisonCalculationBase itemCalc = Calculations.GetItemGemCalculations(item, Character, Slot, GemIndex); if (SelectedItem != null && SelectedItem.Id == item.Id) { itemCalc.Equipped = true; seenEquippedItem = true; } itemCalculations.Add(itemCalc); } if (!seenEquippedItem) { itemCalculations.Add(Calculations.GetItemGemCalculations(SelectedItem, Character, Slot, GemIndex)); } } else if (IsHydraulicList) { Calculations.ClearCache(); List <Item> relevantItems = Character.GetRelevantItems(GemSlot); foreach (Item item in relevantItems) { ComparisonCalculationBase itemCalc = Calculations.GetItemGemCalculations(item, Character, Slot, GemIndex); if (SelectedItem != null && SelectedItem.Id == item.Id) { itemCalc.Equipped = true; seenEquippedItem = true; } itemCalculations.Add(itemCalc); } if (!seenEquippedItem) { itemCalculations.Add(Calculations.GetItemGemCalculations(SelectedItem, Character, Slot, GemIndex)); } } else if (IsGemList) { Calculations.ClearCache(); List <Item> relevantItems = Character.GetRelevantItems(GemSlot); foreach (Item item in relevantItems) { ComparisonCalculationBase itemCalc = Calculations.GetItemGemCalculations(item, Character, Slot, GemIndex); if (SelectedItem != null && SelectedItem.Id == item.Id) { itemCalc.Equipped = true; seenEquippedItem = true; } itemCalculations.Add(itemCalc); } if (!seenEquippedItem) { itemCalculations.Add(Calculations.GetItemGemCalculations(SelectedItem, Character, Slot, GemIndex)); } } else { Calculations.ClearCache(); List <ItemInstance> relevantItemInstances = Character.GetRelevantItemInstances(Slot); if (relevantItemInstances.Count > 0) { foreach (ItemInstance item in relevantItemInstances) { if (!seenEquippedItem && Character[Slot].Equals(item)) { seenEquippedItem = true; } itemCalculations.Add(Calculations.GetItemCalculations((ItemInstance)item, Character, Slot)); } } if (!seenEquippedItem) { itemCalculations.Add(Calculations.GetItemCalculations(Character[Slot], Character, Slot)); } } float maxValue = itemCalculations.Count == 0 ? 100f : itemCalculations.Max(c => c.OverallPoints); Items.Clear(); List <ItemListItem> itemListItems = new List <ItemListItem>(); ItemListItem selectedListItem = null; int selectedEnchantId = 0, selectedReforgingId = 0, selectedTinkeringId = 0; if (IsEnchantList) { Enchant selectedEnchant = Character.GetEnchantBySlot(Slot); if (selectedEnchant != null) { selectedEnchantId = selectedEnchant.Id; } } else if (IsTinkeringList) { Tinkering selectedTinkering = Character.GetTinkeringBySlot(Slot); if (selectedTinkering != null) { selectedTinkeringId = selectedTinkering.Id; } } else if (IsReforgeList) { Reforging selectedReforging = Character.GetReforgingBySlot(Slot); if (selectedReforging != null) { selectedReforgingId = selectedReforging.Id; } } else if (IsGemList) { ComparisonCalculationBase emptyCalcs = Calculations.CreateNewComparisonCalculation(); emptyCalcs.Name = "Empty"; emptyCalcs.Item = new Item(); emptyCalcs.Item.Name = "Empty"; emptyCalcs.Item.Id = -1; emptyCalcs.Equipped = SelectedItem == null; itemCalculations.Add(emptyCalcs); } else { ComparisonCalculationBase emptyCalcs = Calculations.CreateNewComparisonCalculation(); emptyCalcs.Name = "Empty"; emptyCalcs.Item = new Item(); emptyCalcs.Item.Name = "Empty"; emptyCalcs.ItemInstance = new ItemInstance(); emptyCalcs.ItemInstance.Id = -1; emptyCalcs.Equipped = Character[Slot] == null; itemCalculations.Add(emptyCalcs); } foreach (ComparisonCalculationBase calc in itemCalculations) { ItemListItem itemListItem = new ItemListItem(calc, maxValue, 344d); itemListItems.Add(itemListItem); if (IsEnchantList) { if (itemListItem.EnchantId == selectedEnchantId) { selectedListItem = itemListItem; } } else if (IsTinkeringList) { if (itemListItem.TinkeringId == selectedTinkeringId) { selectedListItem = itemListItem; } } else if (IsReforgeList) { if (itemListItem.ReforgeId == selectedReforgingId) { selectedListItem = itemListItem; } } else if (IsGemList || IsHydraulicList || IsCogwheelList) { if (calc.Item == null) { if (SelectedItem == null) { selectedListItem = itemListItem; } } else { if ((SelectedItem != null && calc.Item.Id == SelectedItem.Id) || (calc.Item.Id == -1 && SelectedItem == null)) { selectedListItem = itemListItem; } } } else { if (calc.ItemInstance == Character[Slot] || (calc.ItemInstance.Id == -1 && Character[Slot] == null)) { selectedListItem = itemListItem; } } } Items.AddRange(itemListItems); listBoxItems.SelectedItem = selectedListItem; listBoxItems.Focus(); IsPopulated = true; } finally { _buildingListItems = false; } }
private void BuildListItems() { try { _buildingListItems = true; if (Character == null) return; bool seenEquippedItem = (Character[Slot] == null); List<ComparisonCalculationBase> itemCalculations = new List<ComparisonCalculationBase>(); if (IsEnchantList) { CharacterCalculationsBase current = Calculations.GetCharacterCalculations(Character); if (Character != null && current != null) { itemCalculations = Calculations.GetEnchantCalculations(Item.GetItemSlotByCharacterSlot(Slot), Character, current, false); } } else if (IsTinkeringList) { CharacterCalculationsBase current = Calculations.GetCharacterCalculations(Character); if (Character != null && current != null) { itemCalculations = Calculations.GetTinkeringCalculations(Item.GetItemSlotByCharacterSlot(Slot), Character, current, false); } } else if (IsReforgeList) { CharacterCalculationsBase current = Calculations.GetCharacterCalculations(Character); if (Character != null && current != null) { itemCalculations = Calculations.GetReforgeCalculations(Slot, Character, current, false); } } else if (IsCogwheelList) { Calculations.ClearCache(); List<Item> relevantItems = Character.GetRelevantItems(GemSlot); foreach (Item item in relevantItems) { ComparisonCalculationBase itemCalc = Calculations.GetItemGemCalculations(item, Character, Slot, GemIndex); if (SelectedItem != null && SelectedItem.Id == item.Id) { itemCalc.Equipped = true; seenEquippedItem = true; } itemCalculations.Add(itemCalc); } if (!seenEquippedItem) itemCalculations.Add(Calculations.GetItemGemCalculations(SelectedItem, Character, Slot, GemIndex)); } else if (IsHydraulicList) { Calculations.ClearCache(); List<Item> relevantItems = Character.GetRelevantItems(GemSlot); foreach (Item item in relevantItems) { ComparisonCalculationBase itemCalc = Calculations.GetItemGemCalculations(item, Character, Slot, GemIndex); if (SelectedItem != null && SelectedItem.Id == item.Id) { itemCalc.Equipped = true; seenEquippedItem = true; } itemCalculations.Add(itemCalc); } if (!seenEquippedItem) itemCalculations.Add(Calculations.GetItemGemCalculations(SelectedItem, Character, Slot, GemIndex)); } else if (IsGemList) { Calculations.ClearCache(); List<Item> relevantItems = Character.GetRelevantItems(GemSlot); foreach (Item item in relevantItems) { ComparisonCalculationBase itemCalc = Calculations.GetItemGemCalculations(item, Character, Slot, GemIndex); if (SelectedItem != null && SelectedItem.Id == item.Id) { itemCalc.Equipped = true; seenEquippedItem = true; } itemCalculations.Add(itemCalc); } if (!seenEquippedItem) itemCalculations.Add(Calculations.GetItemGemCalculations(SelectedItem, Character, Slot, GemIndex)); } else { Calculations.ClearCache(); List<ItemInstance> relevantItemInstances = Character.GetRelevantItemInstances(Slot); if (relevantItemInstances.Count > 0) { foreach (ItemInstance item in relevantItemInstances) { if (!seenEquippedItem && Character[Slot].Equals(item)) seenEquippedItem = true; itemCalculations.Add(Calculations.GetItemCalculations((ItemInstance)item, Character, Slot)); } } if (!seenEquippedItem) itemCalculations.Add(Calculations.GetItemCalculations(Character[Slot], Character, Slot)); } float maxValue = itemCalculations.Count == 0 ? 100f : itemCalculations.Max(c => c.OverallPoints); Items.Clear(); List<ItemListItem> itemListItems = new List<ItemListItem>(); ItemListItem selectedListItem = null; int selectedEnchantId = 0, selectedReforgingId = 0, selectedTinkeringId = 0; if (IsEnchantList) { Enchant selectedEnchant = Character.GetEnchantBySlot(Slot); if (selectedEnchant != null) selectedEnchantId = selectedEnchant.Id; } else if (IsTinkeringList) { Tinkering selectedTinkering = Character.GetTinkeringBySlot(Slot); if (selectedTinkering != null) selectedTinkeringId = selectedTinkering.Id; } else if (IsReforgeList) { Reforging selectedReforging = Character.GetReforgingBySlot(Slot); if (selectedReforging != null) selectedReforgingId = selectedReforging.Id; } else if (IsGemList) { ComparisonCalculationBase emptyCalcs = Calculations.CreateNewComparisonCalculation(); emptyCalcs.Name = "Empty"; emptyCalcs.Item = new Item(); emptyCalcs.Item.Name = "Empty"; emptyCalcs.Item.Id = -1; emptyCalcs.Equipped = SelectedItem == null; itemCalculations.Add(emptyCalcs); } else { ComparisonCalculationBase emptyCalcs = Calculations.CreateNewComparisonCalculation(); emptyCalcs.Name = "Empty"; emptyCalcs.Item = new Item(); emptyCalcs.Item.Name = "Empty"; emptyCalcs.ItemInstance = new ItemInstance(); emptyCalcs.ItemInstance.Id = -1; emptyCalcs.Equipped = Character[Slot] == null; itemCalculations.Add(emptyCalcs); } foreach (ComparisonCalculationBase calc in itemCalculations) { ItemListItem itemListItem = new ItemListItem(calc, maxValue, 344d); itemListItems.Add(itemListItem); if (IsEnchantList) { if (itemListItem.EnchantId == selectedEnchantId) selectedListItem = itemListItem; } else if (IsTinkeringList) { if (itemListItem.TinkeringId == selectedTinkeringId) selectedListItem = itemListItem; } else if (IsReforgeList) { if (itemListItem.ReforgeId == selectedReforgingId) selectedListItem = itemListItem; } else if (IsGemList || IsHydraulicList || IsCogwheelList) { if (calc.Item == null) { if (SelectedItem == null) { selectedListItem = itemListItem; } } else { if ((SelectedItem != null && calc.Item.Id == SelectedItem.Id) || (calc.Item.Id == -1 && SelectedItem == null)) selectedListItem = itemListItem; } } else { if (calc.ItemInstance == Character[Slot] || (calc.ItemInstance.Id == -1 && Character[Slot] == null)) selectedListItem = itemListItem; } } Items.AddRange(itemListItems); listBoxItems.SelectedItem = selectedListItem; listBoxItems.Focus(); IsPopulated = true; } finally { _buildingListItems = false; } }