summaryrefslogtreecommitdiff
path: root/src/main/java/space/m0e/quga/oop/lab56maven/threads
diff options
context:
space:
mode:
authorAndriy Cherniy <qugalet@m0e.space>2024-06-08 22:58:45 +0300
committerAndriy Cherniy <qugalet@m0e.space>2024-06-08 22:58:45 +0300
commit249c10030fe27ef6a3a0afcacf53d4024143a054 (patch)
treef0ef624783997f9b46be6057f12d05f5e0537e3b /src/main/java/space/m0e/quga/oop/lab56maven/threads
downloadoop-kursach-249c10030fe27ef6a3a0afcacf53d4024143a054.tar.gz
oop-kursach-249c10030fe27ef6a3a0afcacf53d4024143a054.zip
initial commit
Diffstat (limited to 'src/main/java/space/m0e/quga/oop/lab56maven/threads')
-rw-r--r--src/main/java/space/m0e/quga/oop/lab56maven/threads/ImmigrantThread.java57
1 files changed, 57 insertions, 0 deletions
diff --git a/src/main/java/space/m0e/quga/oop/lab56maven/threads/ImmigrantThread.java b/src/main/java/space/m0e/quga/oop/lab56maven/threads/ImmigrantThread.java
new file mode 100644
index 0000000..105f997
--- /dev/null
+++ b/src/main/java/space/m0e/quga/oop/lab56maven/threads/ImmigrantThread.java
@@ -0,0 +1,57 @@
+package space.m0e.quga.oop.lab56maven.threads;
+
+import javafx.application.Platform;
+import space.m0e.quga.oop.lab56maven.Main;
+import space.m0e.quga.oop.lab56maven.entities.common.Coordinates;
+import space.m0e.quga.oop.lab56maven.entities.macro.Fortress;
+import space.m0e.quga.oop.lab56maven.entities.micro.Dwarf;
+import space.m0e.quga.oop.lab56maven.entities.micro.Immigrant;
+
+import java.util.concurrent.TimeUnit;
+
+public class ImmigrantThread extends Thread {
+ public Immigrant getImmigrant() {
+ return immigrant;
+ }
+
+ public void setImmigrant(Immigrant immigrant) {
+ this.immigrant = immigrant;
+ }
+
+ private Immigrant immigrant;
+
+ public ImmigrantThread(Immigrant immigrant) {
+ super();
+ this.setName(String.format("ImmigrantThread_%s", immigrant.getFullName()));
+ this.immigrant = immigrant;
+ }
+
+ @Override
+ public void run() {
+ while (!isInterrupted()) {
+ if (immigrant != null && !immigrant.isActive()) {
+ try {
+ TimeUnit.MILLISECONDS.sleep(10);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ Fortress fortress = immigrant.findNearestFortress();
+ if (fortress != null) {
+ Coordinates moveTo = immigrant.getCoordinatesToFortress(fortress);
+ immigrant.move(moveTo);
+ if (moveTo.isThere(immigrant)) {
+ Platform.runLater(() -> {
+ Dwarf dwarf = new Dwarf(immigrant, fortress);
+ Main.immigrants.add(dwarf);
+ fortress.add(dwarf);
+ Main.root.getChildren().remove(immigrant.getGroup());
+ });
+ this.interrupt();
+ }
+ }
+ }
+ }
+ }
+
+
+}