예제 #1
0
        public bool UpdateSkill([NotNull] SkillInfo newSkillInfo, [NotNull] IWurmServer server)
        {
            if (newSkillInfo == null)
            {
                throw new ArgumentNullException(nameof(newSkillInfo));
            }
            if (server == null)
            {
                throw new ArgumentNullException(nameof(server));
            }

            var  key          = new CompositeSkillKey(newSkillInfo.NameNormalized, server.ServerGroup);
            bool skillUpdated = false;

            lock (locker)
            {
                SkillInfo info;
                if (skillsMap.TryGetValue(key, out info))
                {
                    if (info.Stamp < newSkillInfo.Stamp)
                    {
                        skillsMap[key] = newSkillInfo;
                        skillUpdated   = true;
                    }
                }
                else
                {
                    skillsMap.Add(key, newSkillInfo);
                    skillUpdated = true;
                }
            }
            return(skillUpdated);
        }
예제 #2
0
        public SkillInfo TryGetSkill([NotNull] string skillName, ServerGroup serverGroup)
        {
            if (skillName == null)
            {
                throw new ArgumentNullException(nameof(skillName));
            }
            skillName = WurmSkills.NormalizeSkillName(skillName);

            var key = new CompositeSkillKey(skillName, serverGroup);

            lock (locker)
            {
                SkillInfo info;
                if (skillsMap.TryGetValue(key, out info))
                {
                    return(info);
                }
                else
                {
                    return(null);
                }
            }
        }