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); }
public StashGridMarking(PoEItem item, Brush brush) { Item = item; Brush = brush; }
public StashGridMarking(PoEItem item) : this(item, Brushes.Green) { }
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; } }
private void WriteSocketLine(TextWriter writer, PoEItem item) { WriteIndent(writer); writer.WriteLine("Sockets: {0}", BuildSocketString(item)); }
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); } }
private void WriteFlavorText(TextWriter writer, PoEItem item) { if (item.FlavorText.Length > 0) { WriteIndent(writer); writer.WriteLine(item.FlavorText); } }
public bool IsWeapon(PoEItem item) { return _weapons.Any(il => il.Any(item.TypeLine.Contains)); }
public bool IsJewelry(PoEItem item) { return _jewelry.Any(il => il.Any(item.TypeLine.Contains)); }
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)); }
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); }
public bool ContainsItem(PoEItem item) { return _dataSrc.Contains(item); }
public void MarkItem(PoEItem item) { _markings.Add(new StashGridMarking(item)); Invalidate(CalculateItemRect(item)); }
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(); }
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)); } }
public bool IsArmor(PoEItem item) { return _armor.Any(il => il.Any(item.TypeLine.Contains)); }
private void WriteNamedItem(TextWriter writer, PoEItem item) { writer.WriteLine("{0}, {1}", item.Name, item.TypeLine); }
public bool IsCurrency(PoEItem item) { return _currency.Any(il => il.Any(item.TypeLine.Contains)); }
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(); } }
public bool IsEquippable(PoEItem item) { return IsWeapon(item) || IsArmor(item) || IsJewelry(item) || item.IsFlask; }
private void WriteStack(TextWriter writer, PoEItem item) { writer.WriteLine("{0} ({1})", item.TypeLine, item.StackSize); }
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); }