@Override
	public MultiMenuPlacePlanetChoices doSelection(Factory factory) {
		updateState();
		while (state != -1) {
			Menu<?> menu = getMenu(state, factory);

			switch (state) {
			case 1:
				choices.setChosenPlanet((Planet) menu.selectChoice(false));
				break;
			case 2:
				rotatePlanetChoice = (StaticChoice) menu.selectChoice(true);
				break;
			case 3:
				choices.setChosenSpot((PlanetEntrance) menu.selectChoice(true));
				break;
			case 4:
				StaticChoice placeFirstBaseChoice = (StaticChoice) menu.selectChoice(true);
				if (placeFirstBaseChoice == null) {
					choices.setPlaceFirstBase(null);
				} else if (placeFirstBaseChoice == StaticChoice.PLACE_FIRST_BASE_YES) {
					choices.setPlaceFirstBase(true);
				} else {
					choices.setPlaceFirstBase(false);
				}
				break;
			case 5:
				choices.setChosenBaseArea((Area) menu.selectChoice(true));
				break;
			default:
				throw new IllegalStateException("This state shouldn't happen.");
			}
			updateState();
		}

		return choices;
	}