package game.tournament.blinds;
import org.apache.log4j.Logger;
import java.util.ArrayList;
import java.util.List;
public class BlindsStructure {
private static final Logger log = Logger.getLogger(BlindsStructure.class);
private List<Level> blindsLevels = new ArrayList<Level>();
private int totalPlayers;
private int handsPerLevel;
public BlindsStructure(int totalPlayers, int handsPerLevel, double initialChipAmount) {
this.totalPlayers = totalPlayers;
this.handsPerLevel = handsPerLevel;
createBlindsLevels(initialChipAmount);
}
private void createBlindsLevels(double initialChipAmount) {
double bigBlind = Math.round(initialChipAmount / 50);
double smallBlind = Math.round(bigBlind / 2);
double maxBigBlind = initialChipAmount * 2 * ((totalPlayers / 10) + 1);
while (bigBlind < maxBigBlind) {
blindsLevels.add(new Level(smallBlind, bigBlind));
log.trace(blindsLevels.size() + ": " + smallBlind + "/" + bigBlind);
smallBlind = smallBlind * 2;
bigBlind = bigBlind * 2;
}
}
public Level getCurrentLevel(int handNumber) {
int level = (int) (((double) handNumber / handsPerLevel));
return getBlindsLevel(level);
}
public Level getBlindsLevel(int blindsLevel) {
if (blindsLevel >= blindsLevels.size()) {
log.trace("blindsLevel " + blindsLevel + " requested, but we only have " + blindsLevels.size() + " levels. Returning last one.");
return blindsLevels.get(blindsLevels.size() - 1);
}
return blindsLevels.get(blindsLevel);
}
public int getNumLevels() {
return blindsLevels.size();
}
}