summaryrefslogtreecommitdiff
path: root/src/main/java/space/m0e/quga/oop/lab56maven/threads
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/space/m0e/quga/oop/lab56maven/threads')
-rw-r--r--src/main/java/space/m0e/quga/oop/lab56maven/threads/DwarfThread.java62
1 files changed, 62 insertions, 0 deletions
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());
+ });
+ }
+ }
+ }
+ }
+ }
+ }
+
+
+}