Beispiel #1
0
        private void HandleDamageProcessed(object sender, DamageProcessedEvent processed)
        {
            if (LastFightProcessTime != processed.BeginTime)
            {
                DataManager.Instance.CheckExpireFights(processed.BeginTime);
            }

            if (IsValidAttack(processed.Record, out bool defender))
            {
                if (!double.IsNaN(LastFightProcessTime))
                {
                    var seconds = processed.BeginTime - LastFightProcessTime;
                    if (seconds >= GROUP_TIMEOUT)
                    {
                        CurrentGroupID++;
                    }
                }

                string origTimeString = processed.OrigTimeString.Substring(4, 15);

                Fight fight = Get(processed.Record, processed.BeginTime, origTimeString, defender);

                if (defender)
                {
                    Helpers.AddAction(fight.DamageBlocks, processed.Record, processed.BeginTime);
                    AddPlayerTime(fight, processed.Record, processed.Record.Attacker, processed.BeginTime);
                    fight.Total          += processed.Record.Total;
                    fight.BeginDamageTime = double.IsNaN(fight.BeginDamageTime) ? processed.BeginTime : fight.BeginDamageTime;
                    fight.LastDamageTime  = processed.BeginTime;
                    fight.DamageHits++;
                }
                else
                {
                    Helpers.AddAction(fight.TankingBlocks, processed.Record, processed.BeginTime);
                    AddPlayerTime(fight, processed.Record, processed.Record.Defender, processed.BeginTime);
                    fight.BeginTankingTime = double.IsNaN(fight.BeginTankingTime) ? processed.BeginTime : fight.BeginTankingTime;
                    fight.LastTankingTime  = processed.BeginTime;
                    fight.TankHits++;
                }

                fight.LastTime       = processed.BeginTime;
                LastFightProcessTime = processed.BeginTime;

                var ttl = fight.LastTime - fight.BeginTime + 1;
                fight.TooltipText = string.Format(CultureInfo.CurrentCulture, "#Hits To Players: {0}, #Hits From Players: {1}, Time Alive: {2}s", fight.TankHits, fight.DamageHits, ttl);

                DataManager.Instance.UpdateIfNewFightMap(fight.CorrectMapKey, fight);

                if (defender)
                {
                    EventsPlayerAttackProcessed?.Invoke(processed.Record, processed);
                }
            }
        }
        private void HandleDamageProcessed(object sender, DamageProcessedEvent processed)
        {
            if (IsValidAttack(processed.Record, processed.BeginTime, out bool defender))
            {
                if (!double.IsNaN(LastUpdateTime))
                {
                    var seconds = processed.BeginTime - LastUpdateTime;
                    if (seconds >= GROUP_TIMEOUT)
                    {
                        CurrentGroupID++;
                    }
                }

                string origTimeString = processed.OrigTimeString.Substring(4, 15);

                Fight fight = Get(processed.Record, processed.BeginTime, origTimeString, defender);

                if (defender)
                {
                    Helpers.AddAction(fight.DamageBlocks, processed.Record, processed.BeginTime);
                    fight.Total += processed.Record.Total;
                }
                else
                {
                    Helpers.AddAction(fight.TankingBlocks, processed.Record, processed.BeginTime);
                }

                fight.LastTime = processed.BeginTime;
                LastUpdateTime = processed.BeginTime;

                DataManager.Instance.UpdateIfNewFightMap(fight.CorrectMapKey, fight);

                if (defender)
                {
                    EventsPlayerAttackProcessed?.Invoke(processed.Record, processed);
                }
            }
        }