package com.igorcrevar.goingunder.statemachine; import java.util.Random; import com.igorcrevar.goingunder.ObstacleTypeEnum; public class MyRandom implements IMyRandom { private IGeneratorStateMachine generator; private ObstacleTypeEnum current; private boolean isFirstRetrieved; private Random random; public MyRandom() { this.random = new Random(); } @Override public ObstacleTypeEnum getNext() { if (generator == null) { throw new NullPointerException(); } ObstacleTypeEnum[] choices; if (!isFirstRetrieved) { choices = generator.getFirst(); isFirstRetrieved = true; } else { choices = generator.getPossibilitiesFor(current); } int pos = random.nextInt(choices.length); current = choices[pos]; return current; } @Override public void reset() { this.isFirstRetrieved = false; } @Override public void setGenerator(IGeneratorStateMachine generator) { this.generator = generator; } }