<commit_before>package model;

import controller.Controller;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
import view.View;

import java.io.IOException;
import java.io.Serializable;
import java.net.URL;

/**
 * Inicializálja a játékhoz szükséges objektumokat.
 * <p>
 * Létrehozza a model.SimulationTimer és a model.MapManager objektumokat.
 * Rajra keresztül állítható a játék állapota.
 */
public class Game extends Application implements Serializable {
    private SimulationTimer timer;
    private MapManager mapManager;
    private boolean wasRunning = false;
    private boolean simRunning = false;
    private View view;
    private String level;

    /**
     * Instantiates a new model.Game.
     * <p>
     * Init szekvencia.
     * </p>
     */
    public Game() {
        FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("game.fxml"));
        Parent root = null;
        try {
            root = fxmlLoader.load();
        } catch (IOException e) {
            e.printStackTrace();
        }
        Controller ctrl = fxmlLoader.getController();
        ctrl.setModel(this);
        timer = new SimulationTimer();
        mapManager = new MapManager(timer, this);
        view = new View(mapManager, ctrl);
        view.setScene(new Scene(root, view.getWidth(), view.getHeight()));
        timer.setView(view);
    }

    /**
     * The entry point of application.
     *
     * @param args the input arguments
     */
    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) throws Exception {
        primaryStage.setTitle("Szoftlab");
        primaryStage.setScene(view.getScene());
        primaryStage.show();
    }

    public void activate(double x, double y) {
        timer.addEvent("activate " + x + " " + y);
    }

    public void loadGame(String level) {
        stopGame();
        mapManager.loadMap(level);
        startGame();
    }

    public void saveGame(String level) {
        stopGame();
        mapManager.saveMap(level);
        resumeGame();
    }

    /**
     * Start game.
     * <p>
     * Elindítja a szimulációt. A SimulationTimernek start üzenetet küld, aminek hatására elindul az időzítés.
     * </p>
     */
    public void startGame() {
        wasRunning = simRunning;
        timer.start();
        simRunning = true;
    }

    /**
     * Stop game.
     * <p>
     * Megállítja a szimulációt. A SimulationTimernek stop üzenetet küld, aminek a hatására az időzítés megáll.
     * </p>
     */
    public void stopGame() {
        wasRunning = simRunning;
        timer.stop();
        simRunning = false;
    }

    /**
     * Resume game.
     * <p>
     * A játék előző állapota alapján dönt. Ha futott a játék akkor újra elindítja azt.
     * </p>
     */
    public void resumeGame() {
        if (wasRunning)
            timer.start();
    }

    /**
     *  Megadja, hogy jelenleg fut-e a játék
     */
    public boolean isRunning() { return simRunning; }

    /**
     * New game.
     * <br>
     * Megállítja a szimulációt, majd szól a MapManagernek, hogy hozzon létre egy új pályát, végül pedig elindítja azt.
     *
     * @param nextLevel the next level
     */
    public void newGame(String nextLevel) {
        stopGame();
        level="levels/" + nextLevel + ".xml";
        mapManager.newMap(level);
        startGame();
    }

    /**
     * A játék megnyerése esetén hívjuk a függvényt (ha kiürült minden kocsi)
     */
    public void won() {
    }


    /**
     * A játék elvesztése esetén hívjuk a függvényt (ha felrobbant egy kocsi)
     */
    public void lost() {
        System.out.println("EXPLODE");
        mapManager.newMap(level);
    }

    public void step(int n) {
        if (mapManager.getMap() != null) {
            timer.step(n);<commit_msg>explode write deleted<commit_after>package model;

import controller.Controller;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
import view.View;

import java.io.IOException;
import java.io.Serializable;
import java.net.URL;

/**
 * Inicializálja a játékhoz szükséges objektumokat.
 * <p>
 * Létrehozza a model.SimulationTimer és a model.MapManager objektumokat.
 * Rajra keresztül állítható a játék állapota.
 */
public class Game extends Application implements Serializable {
    private SimulationTimer timer;
    private MapManager mapManager;
    private boolean wasRunning = false;
    private boolean simRunning = false;
    private View view;
    private String level;

    /**
     * Instantiates a new model.Game.
     * <p>
     * Init szekvencia.
     * </p>
     */
    public Game() {
        FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("game.fxml"));
        Parent root = null;
        try {
            root = fxmlLoader.load();
        } catch (IOException e) {
            e.printStackTrace();
        }
        Controller ctrl = fxmlLoader.getController();
        ctrl.setModel(this);
        timer = new SimulationTimer();
        mapManager = new MapManager(timer, this);
        view = new View(mapManager, ctrl);
        view.setScene(new Scene(root, view.getWidth(), view.getHeight()));
        timer.setView(view);
    }

    /**
     * The entry point of application.
     *
     * @param args the input arguments
     */
    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) throws Exception {
        primaryStage.setTitle("Szoftlab");
        primaryStage.setScene(view.getScene());
        primaryStage.show();
    }

    public void activate(double x, double y) {
        timer.addEvent("activate " + x + " " + y);
    }

    public void loadGame(String level) {
        stopGame();
        mapManager.loadMap(level);
        startGame();
    }

    public void saveGame(String level) {
        stopGame();
        mapManager.saveMap(level);
        resumeGame();
    }

    /**
     * Start game.
     * <p>
     * Elindítja a szimulációt. A SimulationTimernek start üzenetet küld, aminek hatására elindul az időzítés.
     * </p>
     */
    public void startGame() {
        wasRunning = simRunning;
        timer.start();
        simRunning = true;
    }

    /**
     * Stop game.
     * <p>
     * Megállítja a szimulációt. A SimulationTimernek stop üzenetet küld, aminek a hatására az időzítés megáll.
     * </p>
     */
    public void stopGame() {
        wasRunning = simRunning;
        timer.stop();
        simRunning = false;
    }

    /**
     * Resume game.
     * <p>
     * A játék előző állapota alapján dönt. Ha futott a játék akkor újra elindítja azt.
     * </p>
     */
    public void resumeGame() {
        if (wasRunning)
            timer.start();
    }

    /**
     *  Megadja, hogy jelenleg fut-e a játék
     */
    public boolean isRunning() { return simRunning; }

    /**
     * New game.
     * <br>
     * Megállítja a szimulációt, majd szól a MapManagernek, hogy hozzon létre egy új pályát, végül pedig elindítja azt.
     *
     * @param nextLevel the next level
     */
    public void newGame(String nextLevel) {
        stopGame();
        level="levels/" + nextLevel + ".xml";
        mapManager.newMap(level);
        startGame();
    }

    /**
     * A játék megnyerése esetén hívjuk a függvényt (ha kiürült minden kocsi)
     */
    public void won() {
    }


    /**
     * A játék elvesztése esetén hívjuk a függvényt (ha felrobbant egy kocsi)
     */
    public void lost() {
        mapManager.newMap(level);
    }

    public void step(int n) {
        if (mapManager.getMap() != null) {
            timer.step(n);
{'fraction_non_alphanumeric': 0.10764908696207381, 'fraction_numerical': 0.0, 'mean_word_length': 2.188925081433225, 'pattern_counts': {'":': 0, '<': 23, '<?xml version=': 0, '>': 23, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 12}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '342993', 'n_tokens_mistral': 2514, 'n_tokens_neox': 2544, 'n_words': 640}