PRoConEvents.MULTIbalancer.GetAverageTicketLossRate C# (CSharp) Method

GetAverageTicketLossRate() private method

private GetAverageTicketLossRate ( int team, bool verbose ) : double
team int
verbose bool
return double
        private double GetAverageTicketLossRate(int team, bool verbose)
        {
            if (team < 1 || team > 2) return 0;
            double rate = 0;
            try {
            PerModeSettings perMode = GetPerModeSettings();
            if (perMode.TicketLossSampleCount < MIN_SAMPLE_COUNT) return 0;
            List<double> copy = null;
            lock (fAverageTicketLoss) {
            while (fAverageTicketLoss[team].Count > perMode.TicketLossSampleCount) {
                fAverageTicketLoss[team].Dequeue();
            }
            copy = new List<double>(fAverageTicketLoss[team].ToArray());
            }
            // If not enough samples, force average to 0
            if (copy.Count < perMode.TicketLossSampleCount) return 0;
            String debug = null;
            foreach (double sample in copy) {
            rate = rate + sample;
            if (verbose) {
                if (debug == null) {
                    debug = "[" + sample.ToString("F2");
                } else {
                    debug = debug + "," + sample.ToString("F2");
                }
            }
            }
            double actual = Math.Max(1.0, copy.Count);
            rate = (rate / actual) * 60.0; // loss per minute
            if (verbose) {
            if (debug != null) DebugWrite("^7" + GetTeamName(team) + " (" + copy.Count + ") = " + debug + "]", 8);
            }
            } catch (Exception e) {
            ConsoleException(e);
            }
            return rate;
        }
MULTIbalancer