Beispiel #1
0
        public string GetBaseItemName(PoEItem item)
        {
            if (item.IsFlask) {
                // If it's a flask the best option seems to be subtracting the prefix/suffix
                string itemName = item.TypeLine;
                var maybePrefix = _prefixes.Flatten().FirstOrDefault(a => item.TypeLine.StartsWith(a.Name));
                var maybeSuffix = _suffixes.Flatten().FirstOrDefault(a => item.TypeLine.EndsWith(a.Name));
                if (maybePrefix != null) {
                    itemName = itemName.Remove(0, maybePrefix.Name.Length);
                }
                if (maybeSuffix != null) {
                    itemName = itemName.Remove(itemName.Length - maybeSuffix.Name.Length - 1);
                }
                return itemName;
            }

            string maybeName = _weapons
                .Concat(_armor)
                .Concat(_jewelry)
                .Flatten()
                .FirstOrDefault(item.TypeLine.Contains);
            return maybeName ?? item.TypeLine;
        }
        public static ItemViewModel CreateViewModel(PoEItem item)
        {
            var vm = new ItemViewModel
            {
                ItemBase  = item.Base,
                ItemType  = item.Category,
                ItemStats = new List <ItemField>()
            };

            if (item is CorruptableItem ci)
            {
                vm.CorruptedItem = new ItemStat <bool>("Corrupted", ci.Corrupted);

                if (ci is Gem g)
                {
                    vm.ItemLevel   = new ItemStat <int>("Level", g.Level);
                    vm.ItemQuality = new ItemStat <int>("Quality", g.Quality);
                }
            }
            if (item is ModdableItem mi)
            {
                vm.ItemImplicits = WrapMods(mi.ImplicitMods);
                vm.ItemExplicits = WrapMods(mi.ExplicitMods);
                vm.ItemName      = mi.Name;
                vm.ItemRarity    = mi.Rarity;

                vm.ShaperBase      = new ItemStat <bool>("Shaper", mi.Shaper);
                vm.ElderBase       = new ItemStat <bool>("Elder", mi.Elder);
                vm.MirroredItem    = new ItemStat <bool>("Mirrored", mi.Mirrored);
                vm.SynthesisedItem = new ItemStat <bool>("Synthesised", mi.Synthesised);
                vm.FracturedItem   = new ItemStat <bool>("Fractured", mi.Fractured);
                vm.UnidItem        = new ItemStat <bool>("Unidentified", mi.Unidentified);

                vm.SocketCount      = new ItemStat <int>("Sockets", mi.Sockets == null ? 0 : mi.Sockets.Sockets);
                vm.Link             = new ItemStat <int>("Link", mi.Sockets == null ? 0 : mi.Sockets.LargestLink);
                vm.TotalLife        = new ItemStat <int>("Total Life", mi.TotalLife);
                vm.TotalResistances = new ItemStat <int>("Total Resistances",
                                                         mi.FireResistance
                                                         + mi.ColdResistance
                                                         + mi.LightningResistance
                                                         + mi.ChaosResistance);

                if (item is Weapon weapon)
                {
                    vm.WeaponDPS        = new ItemStat <double>("Total DPS", weapon.GetTotalDPS(!weapon.Corrupted));
                    vm.WeaponPDPS       = new ItemStat <double>("PDPS", weapon.GetPhysicalDPS(!weapon.Corrupted));
                    vm.WeaponEDPS       = new ItemStat <double>("EDPS", weapon.GetElementalDPS());
                    vm.WeaponAPS        = new ItemStat <double>("APS", weapon.AttacksPerSecond);
                    vm.WeaponCritChance = new ItemStat <double>("Crit Chance", weapon.CriticalStrikeChance);
                }
                else if (item is Armor armor)
                {
                    vm.ArmorAR = new ItemStat <int>("Armour",
                                                    armor.Corrupted ? armor.Armour : armor.GetNormalizedArmourValue());
                    vm.ArmorEV = new ItemStat <int>("Evasion",
                                                    armor.Corrupted ? armor.EvasionRating : armor.GetNormalizedEvasionValue());
                    vm.ArmorES = new ItemStat <int>("Energy Shield",
                                                    armor.Corrupted ? armor.EnergyShield : armor.GetNormalizedEnergyShieldValue());
                }
            }
            if (item is EnchantableItem ei)
            {
                vm.ItemEnchants = WrapMods(ei.Enchantments);
            }

            vm.AddPropertiesToStatsList();
            vm.AutoCheckProperties();

            return(vm);
        }
Beispiel #3
0
 public StashGridMarking(PoEItem item, Brush brush)
 {
     Item = item;
     Brush = brush;
 }
Beispiel #4
0
 public StashGridMarking(PoEItem item)
     : this(item, Brushes.Green)
 {
 }
Beispiel #5
0
 private bool TryGetItemAtCell(int x, int y, out PoEItem item) {
     if (x >= 0 && x < PoEGame.StashWidth && y >= 0 && y < PoEGame.StashHeight) {
         item = _itemGrid[x, y];
         // We only return true if there was an item found on the item grid.
         // Empty cells return false.
         return item != null;
     } else {
         // We also return false for indices out of range.
         item = null;
         return false;
     }
 }
Beispiel #6
0
 private void WriteSocketLine(TextWriter writer, PoEItem item)
 {
     WriteIndent(writer);
     writer.WriteLine("Sockets: {0}", BuildSocketString(item));
 }
Beispiel #7
0
 private void WriteProperties(TextWriter writer, PoEItem item)
 {
     foreach (var prop in item.Properties) {
         WriteProperty(writer, prop);
     }
     foreach (var prop in item.AdditionalProperties) {
         WriteProperty(writer, prop);
     }
 }
Beispiel #8
0
 private void WriteFlavorText(TextWriter writer, PoEItem item)
 {
     if (item.FlavorText.Length > 0) {
         WriteIndent(writer);
         writer.WriteLine(item.FlavorText);
     }
 }
Beispiel #9
0
 public bool IsWeapon(PoEItem item)
 {
     return _weapons.Any(il => il.Any(item.TypeLine.Contains));
 }
Beispiel #10
0
 public bool IsJewelry(PoEItem item)
 {
     return _jewelry.Any(il => il.Any(item.TypeLine.Contains));
 }
Beispiel #11
0
 private Rectangle CalculateItemRect(PoEItem item) {
     int left = (int)Math.Floor(_drawOffsetX + item.X * _xCellSize);
     int top = (int)Math.Floor(_drawOffsetY + item.Y * _yCellSize);
     int width = (item.Width * (int)_xCellSize);
     int height = (item.Height * (int)_yCellSize);
     return new Rectangle(
         (int)(left + GridPen.Width),
         (int)(top + GridPen.Width),
         (int)Math.Floor(width + GridPen.Width),
         (int)Math.Floor(height + GridPen.Width));
 }
Beispiel #12
0
 private IEnumerable<Point> CalculateGridIndices(PoEItem item) {
     return from x in Enumerable.Range(item.X, item.Width)
            from y in Enumerable.Range(item.Y, item.Height)
            select new Point(x, y);
 }
Beispiel #13
0
 public bool ContainsItem(PoEItem item) {
     return _dataSrc.Contains(item);
 }
Beispiel #14
0
 public void MarkItem(PoEItem item) {
     _markings.Add(new StashGridMarking(item));
     Invalidate(CalculateItemRect(item));
 }
Beispiel #15
0
 private string BuildSocketString(PoEItem item)
 {
     var builder = new StringBuilder();
     foreach (var group in item.SocketGroups) {
         builder.Append(String.Join("-", group.Select(s => s.Color.GetShortName())));
         builder.Append(' ');
     }
     return builder.ToString().TrimEnd();
 }
Beispiel #16
0
 private void WriteDescription(TextWriter writer, PoEItem item)
 {
     if (item.Description.Length > 0) {
         WriteIndent(writer);
         writer.WriteLine(SanitizeText(item.Description));
     }
     if (item.SecondaryDescription.Length > 0) {
         WriteIndent(writer);
         writer.WriteLine(SanitizeText(item.SecondaryDescription));
     }
 }
Beispiel #17
0
 public bool IsArmor(PoEItem item)
 {
     return _armor.Any(il => il.Any(item.TypeLine.Contains));
 }
Beispiel #18
0
 private void WriteNamedItem(TextWriter writer, PoEItem item)
 {
     writer.WriteLine("{0}, {1}", item.Name, item.TypeLine);
 }
Beispiel #19
0
 public bool IsCurrency(PoEItem item)
 {
     return _currency.Any(il => il.Any(item.TypeLine.Contains));
 }
Beispiel #20
0
 private void WriteSimple(TextWriter writer, PoEItem item)
 {
     writer.Write(item.TypeLine);
     if (!item.IsIdentified && item.FrameType != PoEItemFrameType.Normal) {
         string itemRarity = Enum.GetName(typeof(PoEItemFrameType), item.FrameType);
         writer.WriteLine(" ({0}, unidentified)", itemRarity);
     } else {
         writer.WriteLine();
     }
 }
Beispiel #21
0
 public bool IsEquippable(PoEItem item)
 {
     return IsWeapon(item) || IsArmor(item) || IsJewelry(item) || item.IsFlask;
 }
Beispiel #22
0
 private void WriteStack(TextWriter writer, PoEItem item)
 {
     writer.WriteLine("{0} ({1})", item.TypeLine, item.StackSize);
 }
Beispiel #23
0
 private async void RenderItem(Graphics g, PoEItem item, int offsetX) {
     var itemImage = await _imageCache.GetAsync(_client, item.IconUri);
     g.DrawImage(itemImage, offsetX + item.X * CellSize, item.Y * CellSize, item.Width * CellSize, item.Height * CellSize);
 }