diff options
| author | Andriy Cherniy <qugalet@m0e.space> | 2024-06-08 22:58:45 +0300 |
|---|---|---|
| committer | Andriy Cherniy <qugalet@m0e.space> | 2024-06-08 22:58:45 +0300 |
| commit | 249c10030fe27ef6a3a0afcacf53d4024143a054 (patch) | |
| tree | f0ef624783997f9b46be6057f12d05f5e0537e3b /src/main/java/space/m0e/quga/oop/lab56maven/threads | |
| download | oop-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.java | 57 |
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(); + } + } + } + } + } + + +} |
