From 7356425dd4f0b09d984e794598c67cfaad351599 Mon Sep 17 00:00:00 2001 From: Andriy Cherniy Date: Sat, 15 Jun 2024 03:04:36 +0300 Subject: tilepane + thread for dwarf --- .../quga/oop/lab56maven/threads/DwarfThread.java | 62 ++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 src/main/java/space/m0e/quga/oop/lab56maven/threads/DwarfThread.java (limited to 'src/main/java/space/m0e/quga/oop/lab56maven/threads') diff --git a/src/main/java/space/m0e/quga/oop/lab56maven/threads/DwarfThread.java b/src/main/java/space/m0e/quga/oop/lab56maven/threads/DwarfThread.java new file mode 100644 index 0000000..a662a6a --- /dev/null +++ b/src/main/java/space/m0e/quga/oop/lab56maven/threads/DwarfThread.java @@ -0,0 +1,62 @@ +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 DwarfThread extends Thread { + public Dwarf getDwarf() { + return dwarf; + } + + public void setDwarf(Dwarf dwarf) { + this.dwarf = dwarf; + } + + private Dwarf dwarf; + + public DwarfThread(Dwarf dwarf) { + super(); + this.setName(String.format("DwarfThread_%s", dwarf.getFullName())); + this.dwarf = dwarf; + } + + @Override + public void run() { + while (!isInterrupted()) { + if (dwarf != null && !dwarf.isActive()) { + try { + TimeUnit.MILLISECONDS.sleep(10); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } +// Fortress fortress = dwarf.findNearestFortress(); +// if (fortress != null) { +// Coordinates moveTo = dwarf.getCoordinatesToFortress(fortress); +// dwarf.move(moveTo); +// } + if (dwarf.getFortress() == null) { + Fortress fortress = dwarf.findNearestFortress(); + if (fortress != null) { + Coordinates moveTo = dwarf.getCoordinatesToFortress(fortress); + dwarf.move(moveTo); + if (moveTo.isThere(dwarf)) { + Platform.runLater(() -> { + dwarf.setFortress(fortress); + fortress.add(dwarf); + Main.root.getChildren().remove(dwarf.getGroup()); + }); + } + } + } + } + } + } + + +} -- cgit v1.3-3-ga95d