Exemple #1
0
        bool Tick()
        {
            var items = _playerItemDao.ListWithMissingStatCache();

            if (items.Count <= 0)
            {
                return(true);
            }

            Logger.Debug($"Updated cache for {items.Count} items");
            _itemStatService.ApplyStats(items);

            foreach (var item in items)
            {
                var rendered = ItemHtmlWriter.GetJsonItem(item);

                List <string> searchableText = new List <string>();
                searchableText.AddRange(rendered.HeaderStats.Select(ToString));
                searchableText.AddRange(rendered.BodyStats.Select(ToString));
                searchableText.AddRange(rendered.PetStats.Select(ToString));
                if (rendered.Skill != null)
                {
                    searchableText.AddRange(rendered.Skill.HeaderStats.Select(ToString).ToList());
                    searchableText.AddRange(rendered.Skill.BodyStats.Select(ToString).ToList());
                    searchableText.AddRange(rendered.Skill.PetStats.Select(ToString).ToList());
                    searchableText.Add(rendered.Skill.Name);
                    searchableText.Add(rendered.Skill.Description);
                    searchableText.Add(rendered.Skill.Trigger);
                }

                searchableText.Add(rendered.Extras);
                item.SearchableText = string.Join("\n", searchableText);

                if (string.IsNullOrEmpty(item.SearchableText))
                {
                    if (string.IsNullOrEmpty(item.Name))
                    {
                        continue;
                    }
                    else
                    {
                        // Typically potions and writs, they wont have any stats listed, so set a dummy value to prevent an infinite loop here.
                        item.SearchableText = "-";
                    }
                }
            }

            _playerItemDao.UpdateCachedStats(items);
            return(true);
        }