コード例 #1
0
        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);
        }
コード例 #2
0
 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();
     }
 }
コード例 #3
0
        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();
        }
コード例 #4
0
        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();
                }
            }
        }
コード例 #5
0
        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);
        }
コード例 #6
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
        }
コード例 #7
0
        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;
            }
        }
コード例 #8
0
        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;
            }
        }