private double GetUnstackTicketRatio(PerModeSettings perMode)
{
Phase phase = GetPhase(perMode, false);
Population pop = GetPopulation(perMode, false);
double unstackTicketRatio = 0;
if (perMode.CheckTeamStackingAfterFirstMinutes == 0) return 0;
switch (phase) {
case Phase.Early:
switch (pop) {
case Population.Low: unstackTicketRatio = EarlyPhaseTicketPercentageToUnstack[0]; break;
case Population.Medium: unstackTicketRatio = EarlyPhaseTicketPercentageToUnstack[1]; break;
case Population.High: unstackTicketRatio = EarlyPhaseTicketPercentageToUnstack[2]; break;
default: break;
}
break;
case Phase.Mid:
switch (pop) {
case Population.Low: unstackTicketRatio = MidPhaseTicketPercentageToUnstack[0]; break;
case Population.Medium: unstackTicketRatio = MidPhaseTicketPercentageToUnstack[1]; break;
case Population.High: unstackTicketRatio = MidPhaseTicketPercentageToUnstack[2]; break;
default: break;
}
break;
case Phase.Late:
switch (pop) {
case Population.Low: unstackTicketRatio = LatePhaseTicketPercentageToUnstack[0]; break;
case Population.Medium: unstackTicketRatio = LatePhaseTicketPercentageToUnstack[1]; break;
case Population.High: unstackTicketRatio = LatePhaseTicketPercentageToUnstack[2]; break;
default: break;
}
break;
default: break;
}
// apply rush adjustment
if (IsRush() && fRushStage > 0 && fRushStage <= 5 && unstackTicketRatio > 100) {
double adj = 0;
switch (fRushStage) {
case 1: adj = perMode.Stage1TicketPercentageToUnstackAdjustment; break;
case 2: adj = perMode.Stage2TicketPercentageToUnstackAdjustment; break;
case 3: adj = perMode.Stage3TicketPercentageToUnstackAdjustment; break;
case 4: adj = perMode.Stage4And5TicketPercentageToUnstackAdjustment; break;
case 5: adj = perMode.Stage4And5TicketPercentageToUnstackAdjustment; break;
default: break;
}
if (adj != 0) unstackTicketRatio = unstackTicketRatio + adj;
}
if (unstackTicketRatio <= 100) unstackTicketRatio = 0;
if (AdjustForMetro(perMode)) {
double old = unstackTicketRatio;
switch (phase) {
case Phase.Early: unstackTicketRatio = 0; break;
// case Phase.Mid: speed = Speed.Slow; break; // use whatever is specified
case Phase.Late: unstackTicketRatio = 0; break;
}
if (old != unstackTicketRatio) ConsoleDebug("GetUnstackTicketRatio: Adjusted for Metro from " + old + " to " + unstackTicketRatio);
}
return (unstackTicketRatio/100.0);
}