Beispiel #1
0
 public SkillInfo(string name, float value, DateTime stamp, float?gain)
 {
     NameNormalized = WurmSkills.NormalizeSkillName(name);
     Value          = value;
     Stamp          = stamp;
     Gain           = gain;
 }
        public override float?TryGetSkillLevel(string skillName)
        {
            float value;

            if (skillLevels.TryGetValue(WurmSkills.NormalizeSkillName(skillName), out value))
            {
                return(value);
            }
            else
            {
                return(null);
            }
        }
        Dictionary <string, float> ParseDump()
        {
            var fileLines = File.ReadAllLines(dumpInfo.FileInfo.FullName);
            Dictionary <string, float> skills = new Dictionary <string, float>();
            var parser = new SkillEntryParser(logger);

            foreach (var line in fileLines)
            {
                if (line.StartsWith("Skills") ||
                    line.StartsWith("Characteristics") ||
                    line.StartsWith("Religion") ||
                    line.StartsWith("-----"))
                {
                    continue;
                }
                var match     = Regex.Match(line, @"(.+): (.+) .+ .+", RegexOptions.Compiled | RegexOptions.CultureInvariant);
                var skillName = match.Groups[1].Value.Trim();
                if (string.IsNullOrEmpty(skillName))
                {
                    logger.Log(LogLevel.Error,
                               string.Format("Unparseable skill name in dump file {0}, raw line: {1}",
                                             dumpInfo.FileInfo.FullName,
                                             line),
                               this,
                               null);
                    continue;
                }
                var level = parser.TryParseFloatInvariant(match.Groups[2].Value);
                if (level == null)
                {
                    logger.Log(LogLevel.Error,
                               string.Format("Unparseable skill value in dump file {0}, raw line: {1}",
                                             dumpInfo.FileInfo.FullName,
                                             line),
                               this,
                               null);
                    continue;
                }
                skills[WurmSkills.NormalizeSkillName(skillName)] = level.Value;
            }
            return(skills);
        }
Beispiel #4
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);
                }
            }
        }