Example #1
0
        private void initialize_series(FileTraceManagment.GarageDamageRecord rec)
        {
            string name = Translate.TranslateString(rec.Weapon, session, translations);

            ch_live_feed.Series.Add(new Series(name));
            ch_live_feed.Series[name].LegendText = name;

            if (rec.Flags.Contains("HIGH_RATE_FIRE") || rec.Flags.Contains("CONTINUOUS"))
            {
                ch_live_feed.Series[name].ChartType = SeriesChartType.StepLine;
            }
            else
            {
                ch_live_feed.Series[name].ChartType = SeriesChartType.StepLine;
            }

            ch_live_feed.Series[name].ToolTip        = name;
            ch_live_feed.Series[name].LabelBackColor = session.BackColor;
            ch_live_feed.Series[name].LabelForeColor = session.ForeColor;
            ch_live_feed.Series[name].Points.Clear();
        }
Example #2
0
        public void add_damage_record(FileTraceManagment.GarageDamageRecord rec)
        {
            if (trial_start_time == DateTime.MinValue)
            {
                trial_start_time = rec.Time;
            }

            if (damage_cutoff != Double.MinValue && total_damage > damage_cutoff)
            {
                return;
            }

            if (time_cutoff != Double.MinValue && rec.Time.Subtract(trial_start_time).TotalSeconds > time_cutoff)
            {
                return;
            }

            total_damage += rec.Damage;

            if (rec.Flags.Contains("HUD_IMPORTANT"))
            {
                total_hull_damage += rec.Damage;
            }
            else
            {
                total_body_damage += rec.Damage;
            }

            //translate.translate_string(x.Key, session, translations)

            current_total_series.Points.AddXY(rec.Time.Subtract(trial_start_time).TotalSeconds, total_damage);

            if (weapon_totals.FirstOrDefault(x => x.weapon == Translate.TranslateString(rec.Weapon, session, translations)) == null)
            {
                initialize_series(rec);
                ch_live_feed.Series[Translate.TranslateString(rec.Weapon, session, translations)].Points.AddXY(0, 0);
                add_vertical_annotation(ch_live_feed, ch_live_feed.Series[Translate.TranslateString(rec.Weapon, session, translations)]);
                weapon_totals.Add(new WeaponTotals {
                    weapon = Translate.TranslateString(rec.Weapon, session, translations), total = rec.Damage
                });
            }
            else
            {
                weapon_totals.FirstOrDefault(x => x.weapon == Translate.TranslateString(rec.Weapon, session, translations)).total += rec.Damage;
            }

            if (weapon_rows.FirstOrDefault(x => x.weapon_name == Translate.TranslateString(rec.Weapon, session, translations)) == null)
            {
                weapon_rows.Add(new WeaponRow
                {
                    percent         = 0,
                    weapon_name     = Translate.TranslateString(rec.Weapon, session, translations),
                    total_damage    = rec.Damage,
                    burst_damage    = rec.Damage,
                    bursts          = 1,
                    hits            = 1,
                    first_hit       = rec.Time,
                    last_hit        = rec.Time,
                    burst_start     = rec.Time,
                    burst_duration  = 0.0,
                    reload_duration = 0.0
                });
            }
            else
            {
                WeaponRow weapon_rec = weapon_rows.FirstOrDefault(x => x.weapon_name == Translate.TranslateString(rec.Weapon, session, translations));
                weapon_rec.total_damage += rec.Damage;

                if (rec.Time != weapon_rec.last_hit)
                {
                    weapon_rec.hits += 1;
                }

                if ((rec.Time - weapon_rec.last_hit).TotalSeconds > 0.5)
                {
                    weapon_rec.bursts         += 1;
                    weapon_rec.burst_duration  = (weapon_rec.last_hit - weapon_rec.burst_start).TotalSeconds;
                    weapon_rec.reload_duration = (rec.Time - weapon_rec.last_hit).TotalSeconds;

                    weapon_rec.burst_start  = rec.Time;
                    weapon_rec.burst_damage = rec.Damage;
                }
                else
                {
                    weapon_rec.burst_damage += rec.Damage;
                }

                weapon_rec.dps      = weapon_rec.total_damage / (rec.Time - weapon_rec.first_hit).TotalSeconds;
                weapon_rec.last_hit = rec.Time;
            }



            double current_total = 0;

            for (int i = weapon_totals.Count() - 1; i >= 0; i--)
            {
                current_total += weapon_totals[i].total;
                ch_live_feed.Series[weapon_totals[i].weapon].Points.AddXY(rec.Time.Subtract(trial_start_time).TotalSeconds, current_total);
            }

            foreach (WeaponRow row in weapon_rows)
            {
                row.percent = row.total_damage / total_damage;
            }

            current_damage_records.Add(rec);
            draw_text_elements();
            weapon_table_source.ResetBindings(false);
        }