Exemplo n.º 1
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();
                }
            }
        }
Exemplo n.º 2
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;
            }
        }
Exemplo n.º 3
0
 public void SetReforgingBySlot(CharacterSlot slot, Reforging reforge)
 {
     int i = (int)slot;
     if (i < 0 || i >= SlotCount) return;
     ItemInstance item = this[slot];
     if ((object)item != null) item.Reforging = reforge;
     OnCalculationsInvalidated();
 }
Exemplo n.º 4
0
 public void SetReforgingBySlot(ItemSlot slot, Reforging reforge)
 {
     switch (slot)
     {
         case Rawr.ItemSlot.Head: HeadReforging = reforge; break;
         case Rawr.ItemSlot.Shoulders: ShouldersReforging = reforge; break;
         case Rawr.ItemSlot.Back: BackReforging = reforge; break;
         case Rawr.ItemSlot.Chest: ChestReforging = reforge; break;
         case Rawr.ItemSlot.Wrist: WristReforging = reforge; break;
         case Rawr.ItemSlot.Hands: HandsReforging = reforge; break;
         case Rawr.ItemSlot.Legs: LegsReforging = reforge; break;
         case Rawr.ItemSlot.Feet: FeetReforging = reforge; break;
         case Rawr.ItemSlot.Finger: Finger1Reforging = reforge; break;
         case Rawr.ItemSlot.MainHand:
         case Rawr.ItemSlot.OneHand:
         case Rawr.ItemSlot.TwoHand: MainHandReforging = reforge; break;
         case Rawr.ItemSlot.OffHand: OffHandReforging = reforge; break;
         case Rawr.ItemSlot.Ranged: RangedReforging = reforge; break;
     }
 }
Exemplo n.º 5
0
 public ItemInstance GetItemInstance(Item item, int randomSuffixId, Enchant enchant, Reforging reforging, Tinkering tinkering, bool blacksmithingSocket)
 {
     if (item == null) return null;
     Item gem1 = null;
     Item gem2 = null;
     Item gem3 = null;
     bool cog1used = false;
     switch (item.SocketColor1)
     {
         case ItemSlot.Meta: gem1 = MetaGem; break;
         case ItemSlot.Red: gem1 = RedGem; break;
         case ItemSlot.Yellow: gem1 = YellowGem; break;
         case ItemSlot.Blue: gem1 = BlueGem; break;
         case ItemSlot.Prismatic: gem1 = PrismaticGem; break;
         case ItemSlot.Cogwheel: gem1 = Cogwheel; cog1used = true; break;
         case ItemSlot.Hydraulic: gem1 = Hydraulic; break;
         case ItemSlot.None: 
             if (blacksmithingSocket)
             {
                 gem1 = PrismaticGem;
                 blacksmithingSocket = false;
             }
             break;
     }
     switch (item.SocketColor2)
     {
         case ItemSlot.Meta: gem2 = MetaGem; break;
         case ItemSlot.Red: gem2 = RedGem; break;
         case ItemSlot.Yellow: gem2 = YellowGem; break;
         case ItemSlot.Blue: gem2 = BlueGem; break;
         case ItemSlot.Prismatic: gem2 = PrismaticGem; break;
         case ItemSlot.Cogwheel: if (cog1used) { gem2 = Cogwheel2; } else { gem2 = Cogwheel; cog1used = true; } break;
         case ItemSlot.Hydraulic: gem2 = Hydraulic; break;
         case ItemSlot.None:
             if (blacksmithingSocket)
             {
                 gem2 = PrismaticGem;
                 blacksmithingSocket = false;
             }
             break;
     }
     switch (item.SocketColor3)
     {
         case ItemSlot.Meta: gem3 = MetaGem; break;
         case ItemSlot.Red: gem3 = RedGem; break;
         case ItemSlot.Yellow: gem3 = YellowGem; break;
         case ItemSlot.Blue: gem3 = BlueGem; break;
         case ItemSlot.Prismatic: gem3 = PrismaticGem; break;
         case ItemSlot.Cogwheel: if (cog1used) { gem3 = Cogwheel2; } else { gem3 = Cogwheel; cog1used = true; } break;
         case ItemSlot.Hydraulic: gem3 = Hydraulic; break;
         case ItemSlot.None:
             if (blacksmithingSocket)
             {
                 gem3 = PrismaticGem;
                 blacksmithingSocket = false;
             }
             break;
     }
     return new ItemInstance(item, randomSuffixId, gem1, gem2, gem3, enchant, reforging, tinkering);
 }
Exemplo n.º 6
0
 public ItemInstance GetItemInstance(Item item, int randomSuffixId, Reforging reforging, bool blacksmithingSocket)
 {
     return GetItemInstance(item, randomSuffixId, null, reforging, null, blacksmithingSocket);
 }