summaryrefslogtreecommitdiff
path: root/src/main/java/space/m0e/quga/oop/lab56maven/handlers
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/space/m0e/quga/oop/lab56maven/handlers')
-rw-r--r--src/main/java/space/m0e/quga/oop/lab56maven/handlers/DwarfHandler.java42
-rw-r--r--src/main/java/space/m0e/quga/oop/lab56maven/handlers/ImmigrantHandler.java2
2 files changed, 29 insertions, 15 deletions
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<ActionEvent> {
public Dwarf getDwarf() {
@@ -25,10 +26,6 @@ public class DwarfHandler implements EventHandler<ActionEvent> {
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<ActionEvent> {
}
} 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<ActionEvent> {
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());
});
}