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