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 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; } }
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(); }
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; } }
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); }
public ItemInstance GetItemInstance(Item item, int randomSuffixId, Reforging reforging, bool blacksmithingSocket) { return GetItemInstance(item, randomSuffixId, null, reforging, null, blacksmithingSocket); }