private void ApplySkills(List <PlayerItem> items) { Logger.Debug($"Applying skills to items"); var skills = _itemSkillDao.List(); foreach (var item in items) { item.Skill = skills.FirstOrDefault(skill => skill.PlayerItemRecord == item.BaseRecord); } var itemsWithSkills = items.Where(m => m.Skill != null).Select(m => m.Skill.StatsId).ToList(); if (itemsWithSkills.Count > 0) { Logger.Debug($"Applying stats to skills for {itemsWithSkills.Count} items"); Dictionary <long, List <DBSTatRow> > statMap = _databaseItemStatDao.GetStats(itemsWithSkills, StatFetch.Skills); foreach (var item in items.Where(m => m.Skill != null)) { if (statMap.ContainsKey(item.Skill.StatsId)) { item.Skill.Tags = process(statMap[item.Skill.StatsId]); } else { Logger.Warn($"Could not map skill with stat id {item.Skill.StatsId} for item {item.Name}"); } } } else { Logger.Debug("No items with skills, skipping stat application"); } Logger.Debug("Skills applied"); }
public IList <PlayerItemSkill> List() { return(_threadExecuter.Execute( () => _repo.List() )); }