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); }
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); } } }