PRoConEvents.MULTIbalancer.GetBalanceSpeed C# (CSharp) Method

GetBalanceSpeed() private method

private GetBalanceSpeed ( PerModeSettings perMode ) : Speed
perMode PerModeSettings
return Speed
        private Speed GetBalanceSpeed(PerModeSettings perMode)
        {
            Phase phase = GetPhase(perMode, true);
            Population pop = GetPopulation(perMode, true);
            Speed speed = Speed.Adaptive;

            switch (phase) {
            case Phase.Early:
            switch (pop) {
                case Population.Low: speed = EarlyPhaseBalanceSpeed[0]; break;
                case Population.Medium: speed = EarlyPhaseBalanceSpeed[1]; break;
                case Population.High: speed = EarlyPhaseBalanceSpeed[2]; break;
                default: break;
            }
            break;
            case Phase.Mid:
            switch (pop) {
                case Population.Low: speed = MidPhaseBalanceSpeed[0]; break;
                case Population.Medium: speed = MidPhaseBalanceSpeed[1]; break;
                case Population.High: speed = MidPhaseBalanceSpeed[2]; break;
                default: break;
            }
            break;
            case Phase.Late:
            switch (pop) {
                case Population.Low: speed = LatePhaseBalanceSpeed[0]; break;
                case Population.Medium: speed = LatePhaseBalanceSpeed[1]; break;
                case Population.High: speed = LatePhaseBalanceSpeed[2]; break;
                default: break;
            }
            break;
            default: break;
            }
            if (AdjustForMetro(perMode)) {
            Speed old = speed;
            switch (phase) {
            case Phase.Early: speed = Speed.Stop; break;
            case Phase.Mid: speed = Speed.Slow; break;
            case Phase.Late: speed = Speed.Stop; break;
            }
            if (old != speed) ConsoleDebug("GetBalanceSpeed: Adjusted for Metro from " + old + " to " + speed);
            }
            return speed;
        }
MULTIbalancer