-
jez04 authoreddbab0775
App.java 2.40 KiB
package lab.gui;
import java.io.IOException;
import java.net.URL;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.stage.WindowEvent;
import lab.Config;
/**
* Class <b>App</b> - extends class Application and it is an entry point of the
* program
*
* @author Java I
*/
public class App extends Application {
private static Logger log = LogManager.getLogger(App.class);
private GameController gameController;
private Stage primaryStage;
public static void main(String[] args) {
log.info("Application lauched");
Config.configure(Config.getInstanceForHardcoreGame());
launch(args);
}
@Override
public void start(Stage primaryStage) {
try {
this.primaryStage = primaryStage;
switchToMenu();
primaryStage.setTitle("Java 2 - 2th laboratory");
primaryStage.show();
// Exit program when main window is closed
primaryStage.setOnCloseRequest(this::exitProgram);
} catch (Exception e) {
log.error("Error during game play.", e);
}
}
public void switchToGame(String name, int numberOfMonsters) throws IOException {
// Construct a main window with a canvas.
FXMLLoader gameLoader = new FXMLLoader(getClass().getResource("/lab/gui/gameWindow.fxml"));
Parent root = gameLoader.load();
gameController = gameLoader.getController();
Scene scene = new Scene(root);
URL cssUrl = getClass().getResource("application.css");
scene.getStylesheets().add(cssUrl.toString());
primaryStage.setScene(scene);
gameController.startGame(name, numberOfMonsters);
}
private void switchToMenu() throws IOException {
// Construct a main window with a canvas.
FXMLLoader menuLoader = new FXMLLoader(getClass().getResource("/lab/gui/mainScreen.fxml"));
Parent root = menuLoader.load();
MainScreenController menuController = menuLoader.getController();
menuController.setApp(this);
Scene scene = new Scene(root);
URL cssUrl = getClass().getResource("application.css");
scene.getStylesheets().add(cssUrl.toString());
primaryStage.setScene(scene);
}
@Override
public void stop() throws Exception {
if(gameController != null) {
gameController.stop();
}
super.stop();
log.info("Gamne stoped");
}
private void exitProgram(WindowEvent evt) {
log.info("Exiting game");
System.exit(0);
}
}