private IndexItem BuildIndexItem(Item item, CharacterFile character) { if (string.IsNullOrEmpty(item.baseName)) { return(null); } var itemDef = _itemCache.GetItem(item.baseName); if (itemDef == null) { return(null); } //itemStatDef is the item definition that is used for stats (relevant in case of blueprints, where the item itself doesn't have stats, but the crafted item does) var itemStatDefIdentifier = ItemHelper.GetItemStatSource(itemDef); ItemRaw itemStatDef = itemDef; if (itemStatDefIdentifier != null) { itemStatDef = _itemCache.GetItem(itemStatDefIdentifier); // Some items are defined slightly differently - where the target item actually refers to a loot table instead of the item itself. if (itemStatDef != null && itemStatDef.StringParametersRaw.ContainsKey("Class") && itemStatDef.StringParametersRaw["Class"] == "LootItemTable_DynWeight") { var lootName1 = itemStatDef.StringParametersRaw.ContainsKey("lootName1") ? itemStatDef.StringParametersRaw["lootName1"] : null; if (lootName1 == null) { itemStatDef = null; } else { itemStatDef = _itemCache.GetItem(lootName1); } } } if (itemStatDef == null) { itemStatDef = itemDef; } var indexItem = new IndexItem(); indexItem.ItemName = ItemHelper.GetFullItemName(item, itemDef); indexItem.Owner = character.Header.Name; if (itemStatDef.NumericalParametersRaw.ContainsKey("levelRequirement")) { indexItem.LevelRequirement = (int)itemStatDef.NumericalParametersRaw["levelRequirement"]; } indexItem.Rarity = ItemHelper.GetItemRarity(itemDef); indexItem.ItemType = ItemHelper.GetItemType(itemStatDef); indexItem.Source = itemDef; indexItem.SourceInstance = item; indexItem.ItemStats = ItemHelper.GetStats(item, itemStatDef).Select(x => x.Replace("{^E}", "").Replace("{%+.0f0}", "").Replace("{%t0}", "").Trim()).ToList(); indexItem.Searchable = BuildSearchableString(character, item, itemDef, indexItem.ItemStats); return(indexItem); }
private string BuildSearchableString(CharacterFile character, Item item, ItemRaw itemDef, List <string> itemStats) { List <string> searchableStrings = new List <string>(); searchableStrings.Add(ItemHelper.GetFullItemName(item, itemDef).ToLower()); searchableStrings.AddRange(itemStats); searchableStrings.Add(character.Header.Name); return(string.Join(" ", searchableStrings).ToLower()); }
public ItemRaw GetItemRawWithItemCode(int itemCode) { if (itemCode >= m_itemInfo_list.Count) { Debug.Log("[WARN] : ItemManager::GetItemRawWithItemCode(int itemCode) : out range itemCode"); return(null); } ItemRaw retItemRaw = m_itemInfo_list[itemCode]; return(retItemRaw); }
public ItemBox(ItemRaw itemRaw, int itemNum) { if (itemRaw == null) { this.m_itemCode = -1; } else { this.m_itemCode = itemRaw.m_ItemCode; } this.m_itemNum = itemNum; }
public void Init_ItemManager() { for (int i = 0; i < m_itemInfo_list.Count; i++) { if (m_itemInfo_list[i] == null) { i++; continue; } ItemRaw inInfo = m_itemInfo_list[i]; inInfo.m_ItemCode = i; } }