package space.m0e.quga.oop.lab56maven.handlers; import javafx.application.Platform; import javafx.event.ActionEvent; import javafx.event.EventHandler; import space.m0e.quga.oop.lab56maven.Main; import space.m0e.quga.oop.lab56maven.decisions.Decision; import space.m0e.quga.oop.lab56maven.decisions.GoToDwarvesContainerDecision; import space.m0e.quga.oop.lab56maven.decisions.GoToThroneRoomDecision; import space.m0e.quga.oop.lab56maven.decisions.GoToWorkstationDecision; 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.macro.ThroneRoom; import space.m0e.quga.oop.lab56maven.entities.micro.Dwarf; import space.m0e.quga.oop.lab56maven.entities.micro.Nobel; import java.util.Objects; import java.util.Random; public class NobelHandler implements EventHandler { public Nobel getNobel() { return nobel; } private int timer = 0; public void setNobel(Nobel nobel) { this.nobel = nobel; } private Nobel nobel; public NobelHandler(Nobel nobel) { super(); this.nobel = nobel; } @Override public void handle(ActionEvent event) { if (nobel != null && !nobel.isActive()) { timer++; if (nobel.getFortress() == null) { Fortress fortress = nobel.findNearestFortress(); if (fortress != null) { Coordinates moveToFortress = nobel.getCoordinatesToFortress(fortress); nobel.move(moveToFortress); if (moveToFortress.isThere(nobel)) { Platform.runLater(() -> { nobel.setFortress(fortress); fortress.add(nobel); fortress.removeFromContainer(nobel); }); } } } else { ThroneRoom throneRoom = nobel.findNearestThroneRoom(); if (throneRoom != null) { Coordinates moveToThroneRoom = nobel.getCoordinatesToThroneRoom(throneRoom); nobel.move(moveToThroneRoom); if (moveToThroneRoom.isThere(nobel)) { Platform.runLater(() -> { throneRoom.add(nobel); }); } } } } } }