Ejemplo n.º 1
0
        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");
        }
Ejemplo n.º 2
0
 public IList <PlayerItemSkill> List()
 {
     return(_threadExecuter.Execute(
                () => _repo.List()
                ));
 }