From 249c10030fe27ef6a3a0afcacf53d4024143a054 Mon Sep 17 00:00:00 2001 From: Andriy Cherniy Date: Sat, 8 Jun 2024 22:58:45 +0300 Subject: initial commit --- .../oop/lab56maven/threads/ImmigrantThread.java | 57 ++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 src/main/java/space/m0e/quga/oop/lab56maven/threads/ImmigrantThread.java (limited to 'src/main/java/space/m0e/quga/oop/lab56maven/threads') 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(); + } + } + } + } + } + + +} -- cgit v1.3-3-ga95d