diff --git a/oolab/src/main/java/agh/ics/oop/SimulationEngine.java b/oolab/src/main/java/agh/ics/oop/SimulationEngine.java index 951abe4..a61eb93 100644 --- a/oolab/src/main/java/agh/ics/oop/SimulationEngine.java +++ b/oolab/src/main/java/agh/ics/oop/SimulationEngine.java @@ -14,7 +14,7 @@ public class SimulationEngine implements Runnable{ private Map map; private int howManyDays = 0; private MainViewApp observer; - + private boolean threadSuspended=false; public SimulationEngine(SimulationVar variables, MainViewApp observer){ @@ -91,6 +91,18 @@ public void dayRitual(){ protected int getDays(){ return howManyDays; } + public void pause(){ + threadSuspended=true; + } + public void play(){ + if (threadSuspended) { + threadSuspended = false; + synchronized(this) { + notify(); + } + } + } + public void stop(){} @Override public void run() { @@ -109,11 +121,14 @@ public void run() { Platform.runLater(()->{observer.newDayUpdate();}); try { Thread.sleep(variables.getRefreshTime()); + synchronized(this) { + while (threadSuspended) + wait(); + } } catch (InterruptedException e) { e.printStackTrace(); } } - } public Statistics getMapStats(){return map.getStats();} diff --git a/oolab/src/main/java/agh/ics/oop/gui/MainViewApp.java b/oolab/src/main/java/agh/ics/oop/gui/MainViewApp.java index 7c6614d..5dbfed5 100644 --- a/oolab/src/main/java/agh/ics/oop/gui/MainViewApp.java +++ b/oolab/src/main/java/agh/ics/oop/gui/MainViewApp.java @@ -27,7 +27,7 @@ public void start(Stage primaryStage) throws IOException { FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/mainView.fxml")); Scene scene = new Scene(fxmlLoader.load()); controller=fxmlLoader.getController(); - controller.initial(engine, engineThread); + controller.initial(engine); primaryStage.setTitle("Evolution simulation"); primaryStage.setScene(scene); primaryStage.show(); diff --git a/oolab/src/main/java/agh/ics/oop/gui/MainViewController.java b/oolab/src/main/java/agh/ics/oop/gui/MainViewController.java index c1aa76b..e9043d5 100644 --- a/oolab/src/main/java/agh/ics/oop/gui/MainViewController.java +++ b/oolab/src/main/java/agh/ics/oop/gui/MainViewController.java @@ -1,12 +1,8 @@ package agh.ics.oop.gui; import agh.ics.oop.*; -import javafx.application.Platform; -import javafx.event.ActionEvent; import javafx.fxml.FXML; -import javafx.fxml.Initializable; import javafx.geometry.HPos; -import javafx.geometry.Pos; import javafx.scene.control.Label; import javafx.scene.layout.*; import javafx.scene.shape.Circle; @@ -45,23 +41,21 @@ public class MainViewController { @FXML private HBox mapBox; private GridPane map=new GridPane(); - private Thread engineThread; private SimulationEngine engine; - public void initial(SimulationEngine engine, Thread engineThread) { + public void initial(SimulationEngine engine) { this.engine=engine; - this.engineThread=engineThread; updateLabels(); map.setGridLinesVisible(true); mapBox.getChildren().addAll(map); } @FXML public void playButtonAction(){ - + engine.play(); } @FXML public void pauseButtonAction(){ - + engine.pause(); } @FXML public void stopFollowingAnimal(){ @@ -120,7 +114,7 @@ public void newDayUpdate(){ } public void stopSimulation(){ - engineThread.interrupt(); + engine.stop(); //cos tam nam zrob } diff --git a/oolab/src/main/resources/TestPO.csv b/oolab/src/main/resources/TestPO.csv index 93ac36c..509aacc 100644 --- a/oolab/src/main/resources/TestPO.csv +++ b/oolab/src/main/resources/TestPO.csv @@ -1 +1 @@ -GlobMap;ToxicCorpses;TotalRandom;HijinksBehavior;20;20;2;3;3;1;4;2;30;6 \ No newline at end of file +GlobMap;ToxicCorpses;TotalRandom;HijinksBehavior;20;20;2;3;3;1;4;2;200;6 \ No newline at end of file diff --git a/oolab/src/main/resources/mainView.fxml b/oolab/src/main/resources/mainView.fxml index ed571b5..1cbde84 100644 --- a/oolab/src/main/resources/mainView.fxml +++ b/oolab/src/main/resources/mainView.fxml @@ -1,11 +1,18 @@ - - - - + + + + + + + + + + + - + @@ -22,7 +29,7 @@
-