From 943bc45a13256d57c82ed58f22aa2cb802292744 Mon Sep 17 00:00:00 2001 From: Andriy Cherniy Date: Mon, 17 Jun 2024 05:10:58 +0300 Subject: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA --- .../quga/oop/lab56maven/handlers/DwarfHandler.java | 42 ++++++++++++++-------- .../oop/lab56maven/handlers/ImmigrantHandler.java | 2 +- 2 files changed, 29 insertions(+), 15 deletions(-) (limited to 'src/main/java/space/m0e/quga/oop/lab56maven/handlers') diff --git a/src/main/java/space/m0e/quga/oop/lab56maven/handlers/DwarfHandler.java b/src/main/java/space/m0e/quga/oop/lab56maven/handlers/DwarfHandler.java index 7ba5466..1e6b0c7 100644 --- a/src/main/java/space/m0e/quga/oop/lab56maven/handlers/DwarfHandler.java +++ b/src/main/java/space/m0e/quga/oop/lab56maven/handlers/DwarfHandler.java @@ -10,9 +10,10 @@ import space.m0e.quga.oop.lab56maven.entities.common.Coordinates; import space.m0e.quga.oop.lab56maven.entities.common.Item; 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.Nobel; -import java.util.Objects; import java.util.Random; +import java.util.concurrent.atomic.AtomicBoolean; public class DwarfHandler implements EventHandler { public Dwarf getDwarf() { @@ -25,10 +26,6 @@ public class DwarfHandler implements EventHandler { private int timer = 0; - public Decision getDecision() { - return decision; - } - public void setDecision(Decision decision) { this.decision = decision; } @@ -78,30 +75,47 @@ public class DwarfHandler implements EventHandler { } } else { if (decision == null) { - String decisionName = availableDecisions[new Random().nextInt(availableDecisions.length)]; - while (Objects.equals(lastDecision, decisionName)) { - decisionName = availableDecisions[new Random().nextInt(availableDecisions.length)]; - } - lastDecision = decisionName; + Fortress fortress = dwarf.getFortress(); + String decisionName = fortress.getAvailableDecisions().get(new Random().nextInt(fortress.getAvailableDecisions().size())); +// while (Objects.equals(lastDecision, decisionName)) { +// decisionName = availableDecisions[new Random().nextInt(availableDecisions.length)]; +// } +// lastDecision = decisionName; switch (decisionName) { case "GoToWorkstation" -> { if (dwarf.getAge() > 12 && dwarf.getAge() < 70 && dwarf.getAbility() != Ability.COMMUNICATION ) { - decision = new GoToWorkstationDecision(new Random().nextInt(timer + 200, timer + 500), dwarf); + decision = new GoToWorkstationDecision(new Random().nextInt(timer + 5, timer + 50), dwarf); } } case "GoToDwarvesContainer" -> { if (dwarf.getFortress().contains(dwarf)) break; - decision = new GoToDwarvesContainerDecision(new Random().nextInt(timer + 200, timer + 500), dwarf); + decision = new GoToDwarvesContainerDecision(new Random().nextInt(timer + 5, timer + 50), dwarf); } case "GoToThroneRoom" -> { if (dwarf.getAge() > 35 && dwarf.getAge() < 70) { - decision = new GoToThroneRoomDecision(new Random().nextInt(timer + 200, timer + 500), dwarf); +// if (!dwarf.getFortress().getDwarves().stream().anyMatch(dwarf1 -> { +// DwarfHandler dwarfHandler = (DwarfHandler) dwarf1.getHandler(); +// return dwarfHandler.decision.getClass().getSimpleName().equals("GoToThroneRoomDecision"); +// })) + AtomicBoolean isThroneEmpty = new AtomicBoolean(false); + dwarf.getFortress().getDwarves().stream().forEach(dwarf1 -> { + if (dwarf1 instanceof Nobel) { + return; + } + + DwarfHandler dwarfHandler = (DwarfHandler) dwarf1.getHandler(); + if (dwarfHandler.decision != null && dwarfHandler.decision.getClass().getSimpleName().equals("GoToThroneRoomDecision")) { + isThroneEmpty.set(true); + } + }); + if (!isThroneEmpty.get()) { + decision = new GoToThroneRoomDecision(new Random().nextInt(timer + 5, timer + 50), dwarf); + } } } case "GoTrading" -> { if (dwarf.getAbility() == Ability.COMMUNICATION) { - Fortress fortress = dwarf.getFortress(); Item itemToTrade; int amountToTrade; if (fortress.getWoodCount() > 0 && fortress.getWoodCount() >= fortress.getStoneCount()) { diff --git a/src/main/java/space/m0e/quga/oop/lab56maven/handlers/ImmigrantHandler.java b/src/main/java/space/m0e/quga/oop/lab56maven/handlers/ImmigrantHandler.java index fe9a3f0..28edbb9 100644 --- a/src/main/java/space/m0e/quga/oop/lab56maven/handlers/ImmigrantHandler.java +++ b/src/main/java/space/m0e/quga/oop/lab56maven/handlers/ImmigrantHandler.java @@ -37,10 +37,10 @@ public class ImmigrantHandler implements EventHandler { Platform.runLater(() -> { immigrant.getTimeline().stop(); Dwarf dwarf = new Dwarf(immigrant, fortress); - dwarf.getTimeline().play(); Main.immigrants.remove(immigrant); Main.immigrants.add(dwarf); fortress.add(dwarf); +// dwarf.getTimeline().play(); Main.root.getChildren().remove(immigrant.getGroup()); }); } -- cgit v1.3-3-ga95d