// TODO: everything that isnt here public void ProcessEntries(params LogFileEntry[] entries) { bool changed = false; foreach (var e in entries) { // this is used to get the current player id if (e.Timestamp == 0) { continue; } // only care about players if (e.Source.Id < 10000000) { continue; } // discard zanverse for now if (e.Action == 2106601422) { continue; } if (Math.Sign(e.Damage) > 0) { if (_Infos.ContainsKey(e.Source.Id)) { var current = _Infos[e.Source.Id]; var largerMaxHit = Math.Max(current.MaxHitDamage, e.Damage) > 0; _Infos[e.Source.Id] = new Info { Name = e.Source.Name, TotalDamage = current.TotalDamage + e.Damage, MaxHitDamage = largerMaxHit ? e.Damage : current.MaxHitDamage, MaxHitAction = largerMaxHit ? e.Action : current.MaxHitAction }; } else { _Infos[e.Source.Id] = new Info { Name = e.Source.Name, TotalDamage = e.Damage, MaxHitDamage = e.Damage, MaxHitAction = e.Action }; } changed = true; } } if (changed) { InfosChanged?.Invoke(this, _Infos.Values.ToArray()); } }
public void Reset() { _Infos.Clear(); InfosChanged?.Invoke(this, _Infos.Values.ToArray()); }