PRoConEvents.MULTIbalancer.ComputeTicketRatio C# (CSharp) Method

ComputeTicketRatio() private method

private ComputeTicketRatio ( double a, double b, double goal, bool countDown, String &msg ) : double
a double
b double
goal double
countDown bool
msg String
return double
        private double ComputeTicketRatio(double a, double b, double goal, bool countDown, out String msg)
        {
            if (IsRush() && fMaxTickets != -1) {
            // normalize Rush ticket ratio
            b = fMaxTickets - (fRushMaxTickets - b);
            b = Math.Max(b, 1);
            }

            double ratio = 0;
            if (countDown) {
            // ratio of difference from max
            if (a < b) {
                ratio = (goal - a) / Math.Max(1, (goal - b));
                msg = "Ratio T1/T2: " + a + " vs " + b + " <- [" + goal + "]: " + (goal-a) + "/" + Math.Max(1, (goal-b)) + " = " + ratio.ToString("F2");
            } else {
                ratio = (goal - b) / Math.Max(1, (goal - a));
                msg = "Ratio T2/T1: " + a + " vs " + b + " <- [" + goal + "]: " + (goal-b) + "/" + Math.Max(1, (goal-a)) + " = " + ratio.ToString("F2");
            }
            } else {
            // direct ratio
            if (a > b) {
                ratio = a / Math.Max(1, b);
                msg = "Ratio T1/T2: " + a + " vs " + b + " -> [" + goal + "]: " + a + "/" + Math.Max(1, b) + " = " + ratio.ToString("F2");
            } else {
                ratio = b / Math.Max(1, a);
                msg = "Ratio T2/T2: " + a + " vs " + b + " -> [" + goal + "]: " + b + "/" + Math.Max(1, a) + " = " + ratio.ToString("F2");
            }
            }
            return ratio;
        }
MULTIbalancer