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;
}