package vooga.fighter.controller.levels; import vooga.fighter.controller.Controller; import vooga.fighter.controller.gameinformation.GameInfo; import vooga.fighter.controller.interfaces.ControllerDelegate; import vooga.fighter.controller.interfaces.ModeCondition; import vooga.fighter.view.Canvas; import java.util.ResourceBundle; /** * * controller for selecting game mode (1v1, 2v2) * * @author Jerry Li * @author Jack Matteucci * */ public class ModeSelectMenuController extends MenuController { private static final String FILE_NAME = "config.ModeCharacterNumbers"; private String myFileName; private ResourceBundle myResources; /** * Initial constructor */ public ModeSelectMenuController () { super(); } /** * COncrete constructor * @param name controller name * @param frame canvas * @param manager controllermanager * @param gameinfo gameinfo * @param pathway filepath */ public ModeSelectMenuController(String name, Canvas frame, ControllerDelegate manager, GameInfo gameinfo, String pathway) { super(name, frame, manager, gameinfo, pathway); myFileName = getHardFilePath() + FILE_NAME; myResources = ResourceBundle.getBundle(myFileName); } /** * Return concrete controller */ @Override public Controller getController(String name, Canvas frame, ControllerDelegate manager, GameInfo gameinfo, String pathway) { Controller controller = new ModeSelectMenuController(name, frame, manager, gameinfo, pathway); return controller; } /** * Checks this controller's end conditions */ @Override public void notifyEndCondition(String choice) { removeListener(); getMode().resetChoice(); getGameInfo().setGameMode(choice); getGameInfo().setNumCharacters(Integer.parseInt(myResources.getString(choice))); getManager().notifyEndCondition(getMode().getMenusNext(choice)); } /** * removes input listener */ @Override public void removeListener(){ super.removeListener(); getInput().removeListener(this); } /** * check modecondition */ @Override public void checkConditions(){ for(ModeCondition condition: getConditions()) if(condition.checkCondition(getMode())) notifyEndCondition(getMode().peekChoice()); } }