Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 17 additions & 2 deletions oolab/src/main/java/agh/ics/oop/SimulationEngine.java
Original file line number Diff line number Diff line change
Expand Up @@ -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){
Expand Down Expand Up @@ -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() {
Expand All @@ -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();}
Expand Down
2 changes: 1 addition & 1 deletion oolab/src/main/java/agh/ics/oop/gui/MainViewApp.java
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down
14 changes: 4 additions & 10 deletions oolab/src/main/java/agh/ics/oop/gui/MainViewController.java
Original file line number Diff line number Diff line change
@@ -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;
Expand Down Expand Up @@ -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(){
Expand Down Expand Up @@ -120,7 +114,7 @@ public void newDayUpdate(){
}

public void stopSimulation(){
engineThread.interrupt();
engine.stop();
//cos tam nam zrob
}

Expand Down
2 changes: 1 addition & 1 deletion oolab/src/main/resources/TestPO.csv
Original file line number Diff line number Diff line change
@@ -1 +1 @@
GlobMap;ToxicCorpses;TotalRandom;HijinksBehavior;20;20;2;3;3;1;4;2;30;6
GlobMap;ToxicCorpses;TotalRandom;HijinksBehavior;20;20;2;3;3;1;4;2;200;6
23 changes: 15 additions & 8 deletions oolab/src/main/resources/mainView.fxml
Original file line number Diff line number Diff line change
@@ -1,11 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.shape.*?>
<?import javafx.scene.text.*?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.layout.ColumnConstraints?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.RowConstraints?>
<?import javafx.scene.layout.VBox?>
<?import javafx.scene.shape.Circle?>
<?import javafx.scene.shape.Rectangle?>
<?import javafx.scene.text.Font?>

<GridPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="800.0" prefWidth="1000.0" xmlns="http://javafx.com/javafx/11.0.14-internal" xmlns:fx="http://javafx.com/fxml/1" fx:controller="agh.ics.oop.gui.MainViewController">
<GridPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="800.0" prefWidth="1000.0" xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1" fx:controller="agh.ics.oop.gui.MainViewController">
<columnConstraints>
<ColumnConstraints maxWidth="10.0" minWidth="10.0" prefWidth="10.0" />
<ColumnConstraints hgrow="SOMETIMES" maxWidth="313.01947021484375" minWidth="313.01947021484375" prefWidth="313.01947021484375" />
Expand All @@ -22,7 +29,7 @@
<children>
<BorderPane prefHeight="60.0" prefWidth="171.0">
<center>
<Button fx:id="playButtonAction" alignment="CENTER" contentDisplay="CENTER" mnemonicParsing="false" prefHeight="30.0" prefWidth="70.0" text="Play" textFill="#ff00c3" BorderPane.alignment="CENTER">
<Button alignment="CENTER" contentDisplay="CENTER" mnemonicParsing="false" onAction="#playButtonAction" prefHeight="30.0" prefWidth="70.0" text="Play" textFill="#ff00c3" BorderPane.alignment="CENTER">
<font>
<Font size="14.0" />
</font>
Expand All @@ -31,7 +38,7 @@
</BorderPane>
<BorderPane prefHeight="50.0" prefWidth="164.0">
<center>
<Button fx:id="pauseButtonAction" alignment="CENTER" contentDisplay="CENTER" mnemonicParsing="false" prefHeight="30.0" prefWidth="70.0" text="Pause" textFill="#ff00c3" BorderPane.alignment="CENTER">
<Button alignment="CENTER" contentDisplay="CENTER" mnemonicParsing="false" onAction="#pauseButtonAction" prefHeight="30.0" prefWidth="70.0" text="Pause" textFill="#ff00c3" BorderPane.alignment="CENTER">
<font>
<Font size="14.0" />
</font>
Expand Down Expand Up @@ -93,7 +100,7 @@
<Font name="System Bold" size="14.0" />
</font>
</Label>
<Button fx:id="stopFollowingAnimal" mnemonicParsing="false" text="Stop following" GridPane.columnIndex="1" GridPane.halignment="CENTER" GridPane.valignment="CENTER" />
<Button mnemonicParsing="false" onAction="#stopFollowingAnimal" text="Stop following" GridPane.columnIndex="1" GridPane.halignment="CENTER" GridPane.valignment="CENTER" />
</children>
</GridPane>
<GridPane gridLinesVisible="true" prefHeight="242.0" prefWidth="314.0">
Expand Down