Beispiel #1
0
        public static SkillExp For(ComponentTag tag)
        {
            var exp = new SkillExp();
            exp.Name = tag.Id;
            exp.Ranks = Regex.Replace(tag.Value, Rank_Regex, "$1.$2");

            var mindState = Regex.Replace(tag.Value, Rank_Regex, "$3");
            exp.LearningRate = LearningRate.For(mindState);

            exp.IsNew = tag.IsNewExp;

            return exp;
        }
Beispiel #2
0
        public void Update(SkillExp skill)
        {
            if(!StartedTracking.HasValue)
                StartedTracking = DateTime.Now;

            SkillExp target = null;
            bool calcDiff = false;

            if(_skills.ContainsKey(skill.Name))
            {
                target = _skills[skill.Name];
                calcDiff = true;
            }
            else
            {
                target = skill;
                target.OriginalRanks = skill.Ranks;
                _skills[skill.Name] = target;
            }

            if(string.IsNullOrWhiteSpace(target.OriginalRanks))
            {
                target.OriginalRanks = skill.Ranks;
            }

            if(calcDiff && !string.IsNullOrWhiteSpace(target.Ranks) && !string.IsNullOrWhiteSpace(skill.Ranks))
            {
                target.Gained = Difference(target.OriginalRanks, skill.Ranks);
            }

            if(!string.IsNullOrWhiteSpace(skill.Ranks)) {
                target.Ranks = skill.Ranks;
            }
            target.LearningRate = skill.LearningRate;
            target.IsNew = skill.IsNew;
        }