MenuScreenProvider.java

package com.github.quizclash.application.screen.provider;

import com.github.quizclash.application.screen.ScreenFactory;
import com.github.quizclash.application.screen.menu.MainMenuEnum;
import com.github.quizclash.application.screen.menu.MenuCreator;
import com.github.quizclash.domain.Repository;

public class MenuScreenProvider implements ScreenProvider {
  private final Repository repository;
  private final ScreenFactory screenFactory;
  private ScreenProviderType nextScreenProviderType;

  public MenuScreenProvider(Repository repository, ScreenFactory screenFactory) {
    this.repository = repository;
    this.screenFactory = screenFactory;
  }

  @Override
  public void execute() {
    String userName = this.repository.getUserRepository().getUsers().get(0).getName();
    String menuTitle = "Hello " + userName + ", select an entry from the menu";
    MenuCreator menuCreator = new MenuCreator(menuTitle, MainMenuEnum.values(), screenFactory);
    int selectedMenuItem = menuCreator.displayAndGetSelection();
    switch (selectedMenuItem) {
      case 1 -> this.nextScreenProviderType = ScreenProviderType.GAME_MODE;
      case 2 -> this.nextScreenProviderType = ScreenProviderType.GAME_SETTINGS;
      case 3 -> this.nextScreenProviderType = ScreenProviderType.USER_MENU;
    }
  }

  public ScreenProviderType getNextScreenProviderType() {
    return this.nextScreenProviderType;
  }
}