/*
* Copyright (c) 2017
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*/
package jsettlers.main.android.mainmenu.presenters;
import jsettlers.main.android.core.GameManager;
import jsettlers.main.android.core.resources.scanner.ResourcesLocationManager;
import jsettlers.main.android.mainmenu.navigation.MainMenuNavigator;
import jsettlers.main.android.mainmenu.views.MainMenuView;
/**
* Created by tompr on 04/03/2017.
*/
public class MainMenuPresenter {
private final MainMenuView view;
private final MainMenuNavigator navigator;
private final GameManager gameManager;
private final ResourcesLocationManager resourceLocationScanner;
private boolean resourcesLoaded;
public MainMenuPresenter(MainMenuView view, MainMenuNavigator navigator, GameManager gameManager, ResourcesLocationManager resourceLocationScanner) {
this.view = view;
this.navigator = navigator;
this.gameManager = gameManager;
this.resourceLocationScanner = resourceLocationScanner;
this.resourcesLoaded = resourceLocationScanner.scanForResources();
}
public void initView() {
if (!resourcesLoaded) {
view.showResourcePicker();
}
}
public void newSinglePlayerSelected() {
if (resourcesLoaded) {
navigator.showNewSinglePlayerPicker();
}
}
public void loadSinglePlayerSelected() {
if (resourcesLoaded) {
navigator.showLoadSinglePlayerPicker();
}
}
public void newMultiPlayerSelected() {
if (resourcesLoaded) {
navigator.showNewMultiPlayerPicker();
}
}
public void joinMultiPlayerSelected() {
if (resourcesLoaded) {
navigator.showJoinMultiPlayerPicker();
}
}
public void resumeSelected() {
navigator.resumeGame();
}
public void quitSelected() {
if (gameManager.getGameMenu().canQuitConfirm()) {
gameManager.getGameMenu().quitConfirm();
} else {
gameManager.getGameMenu().quit();
}
}
public void pauseSelected() {
if (gameManager.getGameMenu().isPaused()) {
gameManager.getGameMenu().unPause();
} else {
gameManager.getGameMenu().pause();
}
updateResumeGameView();
}
public void updateResumeGameView() {
if (gameManager.isGameInProgress()) {
view.updatePauseButton(gameManager.getGameMenu().isPaused());
view.updateQuitButton(gameManager.getGameMenu().canQuitConfirm());
view.showResumeGameView();
} else {
view.hideResumeGameView();
}
}
public void resourceDirectoryChosen() {
resourcesLoaded = resourceLocationScanner.scanForResources();
if (resourcesLoaded) {
view.hideResourcePicker();
} else {
throw new RuntimeException("Resources not found or not valid after directory chosen by user");
}
}
}