package org.mafagafogigante.dungeon.util.library;
import org.mafagafogigante.dungeon.util.ShuffledRange;
/**
* An automated ShuffledRange.
*
* <p>Objects of this class wrap a {@code ShuffledRange} and allow infinitely many calls to {@code getNext}. When the
* end of the underlying {@code ShuffledRange} is reached, the index is reset and {@code shuffle} is called on the
* {@code ShuffledRange}.
*/
class AutomaticShuffledRange {
private final ShuffledRange shuffledRange;
private int index;
/**
* Constructs a new {@code AutomaticShuffledRange} of lower bound 0 given an upper bound.
*
* @param end the higher bound (exclusive)
*/
AutomaticShuffledRange(int end) {
shuffledRange = new ShuffledRange(0, end);
}
/**
* Returns the next integer in the {@code ShuffledRange}.
*/
public int getNext() {
int value = shuffledRange.get(index);
index++;
if (index == shuffledRange.getSize()) {
index = 0;
shuffledRange.shuffle();
}
return value;
}
}