@Override
	public StaticChoice askChoice(boolean cancel) {
		String playerName = control.getPlayer().getName();
		System.out.println(playerName + ", " + promptMessage);
		int choice = -1;

		List<StaticChoice> choices = new ArrayList<>();
		choices.addAll(Arrays.asList(control.getMenuName().getChoices()));
		choices.removeAll(Arrays.asList(control.getDisabledChoices()));

		int cancelChoiceNb = choices.size() + 1;
		int maxSize;
		if (cancel) {
			maxSize = cancelChoiceNb;
		} else {
			maxSize = choices.size();
		}

		while (choice < 1 || choice > maxSize) {

			Iterator<StaticChoice> it = choices.iterator();
			int i = 1;
			while (it.hasNext()) {
				StaticChoice c = it.next();
				String msg = getChoiceMessage(c);
				System.out.println(i + " : " + msg);
				i++;
			}

			if (cancel) {
				System.out.println(cancel + " : Cancel");
			}

			choice = TextIHM.scanner.nextInt();
			if (Game.IS_TEST) {
				System.out.println(choice);
			}
			System.out.println();
		}

		StaticChoice result;
		if (choice == cancelChoiceNb) {
			result = null;
		} else {
			result = choices.get(choice - 1);
		}

		return result;
	}