public void Update(SkillResult skillResult) { if (skillResult.SourcePlayer != null) { var playerStats = GetOrCreate(skillResult.SourcePlayer); var statsChange = StatsChange(skillResult); playerStats.Dealt.Add(statsChange); TotalDealt.Add(statsChange); } if (skillResult.TargetPlayer != null) { var playerStats = GetOrCreate(skillResult.TargetPlayer); var statsChange = StatsChange(skillResult); playerStats.Received.Add(statsChange); TotalReceived.Add(statsChange); } if (skillResult.SourcePlayer != null && (skillResult.Damage > 0) && (skillResult.Source.Id != skillResult.Target.Id)) { LastAttack = skillResult.Time; if (FirstAttack == null) { FirstAttack = skillResult.Time; } } }
public void Update(EachSkillResultServerMessage message) { var skillResult = new SkillResult(message, _entityTracker, _playerTracker, _skillDatabase); if (skillResult.SourcePlayer != null) { var playerStats = GetOrCreate(skillResult.SourcePlayer); var statsChange = StatsChange(skillResult); playerStats.Dealt.Add(statsChange); TotalDealt.Add(statsChange); } if (skillResult.TargetPlayer != null) { var playerStats = GetOrCreate(skillResult.TargetPlayer); var statsChange = StatsChange(skillResult); playerStats.Received.Add(statsChange); TotalReceived.Add(statsChange); } if (skillResult.SourcePlayer != null && (skillResult.Damage > 0) && (skillResult.Source.Id != skillResult.Target.Id)) { LastAttack = skillResult.Time; if (FirstAttack == null) { FirstAttack = skillResult.Time; } } }
public void Update(SkillResult skillResult) { if (IsArchived) { return; //prevent archived trackers from accidentally recording stats } if (skillResult.SourcePlayer != null) { var playerStats = GetOrCreate(skillResult); if (playerStats == null) { return; //if this is null, that means we should ignore it } var statsChange = StatsChange(skillResult); if (statsChange == null) { Logger.Warn($"Generated null SkillStats from {skillResult}"); } playerStats.LogSkillUsage(skillResult); TotalDealt.Add(statsChange); playerStats.Dealt.Add(statsChange); } if (IsValidAttack(skillResult)) { if (FirstAttack == null) { FirstAttack = skillResult.Time; } LastAttack = skillResult.Time; } foreach (var playerStat in StatsByUser) { //force update of calculated dps metrics playerStat.Dealt.UpdateStats(); } }