summaryrefslogtreecommitdiff
path: root/src/main/java/space/m0e/quga/oop/lab56maven/Main.java
diff options
context:
space:
mode:
authorAndriy Cherniy <qugalet@m0e.space>2024-06-17 02:59:32 +0300
committerAndriy Cherniy <qugalet@m0e.space>2024-06-17 02:59:32 +0300
commit3401d742ca53dce6bb1464cc12f94d107cfc285d (patch)
tree4640d50fbbb738e6ae63dac87c0ade6bd21a9523 /src/main/java/space/m0e/quga/oop/lab56maven/Main.java
parentfdfd7040a283b15d7c2346b6a20bda64900244b1 (diff)
downloadoop-kursach-3401d742ca53dce6bb1464cc12f94d107cfc285d.tar.gz
oop-kursach-3401d742ca53dce6bb1464cc12f94d107cfc285d.zip
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Diffstat (limited to 'src/main/java/space/m0e/quga/oop/lab56maven/Main.java')
-rw-r--r--src/main/java/space/m0e/quga/oop/lab56maven/Main.java103
1 files changed, 83 insertions, 20 deletions
diff --git a/src/main/java/space/m0e/quga/oop/lab56maven/Main.java b/src/main/java/space/m0e/quga/oop/lab56maven/Main.java
index 25ba617..65a0f5d 100644
--- a/src/main/java/space/m0e/quga/oop/lab56maven/Main.java
+++ b/src/main/java/space/m0e/quga/oop/lab56maven/Main.java
@@ -1,21 +1,30 @@
package space.m0e.quga.oop.lab56maven;
+import javafx.animation.AnimationTimer;
+import javafx.animation.KeyFrame;
+import javafx.animation.Timeline;
import javafx.application.Application;
import javafx.application.Platform;
+import javafx.event.ActionEvent;
+import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.Scene;
+import javafx.scene.SnapshotParameters;
import javafx.scene.control.Alert;
import javafx.scene.control.Label;
-import javafx.scene.input.KeyCode;
-import javafx.scene.layout.BorderPane;
+import javafx.scene.image.ImageView;
+import javafx.scene.image.WritableImage;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
+import javafx.scene.transform.Scale;
import javafx.stage.FileChooser;
import javafx.stage.Stage;
+import javafx.util.Duration;
import space.m0e.quga.oop.lab56maven.dialogs.CountDialog;
import space.m0e.quga.oop.lab56maven.dialogs.InsertDialog;
import space.m0e.quga.oop.lab56maven.dialogs.SearchDialog;
import space.m0e.quga.oop.lab56maven.entities.common.Ability;
+import space.m0e.quga.oop.lab56maven.entities.common.MiniMap;
import space.m0e.quga.oop.lab56maven.entities.common.Utils;
import space.m0e.quga.oop.lab56maven.entities.macro.Fortress;
import space.m0e.quga.oop.lab56maven.entities.macro.ThroneRoom;
@@ -23,8 +32,8 @@ import space.m0e.quga.oop.lab56maven.entities.macro.Workstation;
import space.m0e.quga.oop.lab56maven.entities.micro.Dwarf;
import space.m0e.quga.oop.lab56maven.entities.micro.Immigrant;
import space.m0e.quga.oop.lab56maven.entities.micro.Nobel;
-import space.m0e.quga.oop.lab56maven.threads.DwarfThread;
-import space.m0e.quga.oop.lab56maven.threads.ImmigrantThread;
+import space.m0e.quga.oop.lab56maven.handlers.DwarfHandler;
+import space.m0e.quga.oop.lab56maven.handlers.ImmigrantHandler;
import java.io.*;
import java.util.ArrayList;
@@ -38,32 +47,54 @@ import java.util.stream.Collectors;
public class Main extends Application {
public static Group root = new Group();
+ public static Group group = new Group();
public static ArrayList<Immigrant> immigrants = new ArrayList<>();
public static ArrayList<Fortress> fortresses = new ArrayList<>();
public static Label status = new Label();
+ public static MiniMap miniMap;
+
public static final double width = 3555;
public static final double height = 2000;
+ public static ImageView imgviewmap;
+ public static Rectangle rectMinimap;
+
@Override
public void start(Stage stage) throws IOException, InterruptedException {
Rectangle rect = new Rectangle(width, height, Color.WHITE);
-// rect.setStroke(Color.BLUE);
-// rect.setStrokeWidth(10);
FileChooser fileChooser = new FileChooser();
fileChooser.setInitialFileName("serial.csv");
root.getChildren().add(rect);
- Fortress fortress = new Fortress("Eartha", 150, 150, new ArrayList<>(List.of(new Workstation("Torgrus"))), new ArrayList<>(List.of(new ThroneRoom("Halzorga"))));
+ Fortress fortress = new Fortress("Eartha", 150, 150,
+ new ArrayList<>(List.of(
+ new Workstation("Torgrus", Ability.MASONIST),
+ new Workstation("Abbacus", Ability.WOODCUTTER)
+ )),
+ new ArrayList<>(List.of(
+ new ThroneRoom("Halzorga"))
+ ));
+
+ Fortress fortressTrade = new Fortress("Aboba", 1000, 150,
+ new ArrayList<>(List.of(
+ new Workstation("Torgrass", Ability.WOODCUTTER)
+ )),
+ new ArrayList<>(List.of(
+ )));
+ fortresses.add(fortressTrade);
fortresses.add(fortress);
+ fortressTrade.setWoodCount(999);
- immigrants.add(new Immigrant("1", "0", 50, 0,0, Ability.MASONIST));
- immigrants.getFirst().setX(100);
- immigrants.getFirst().setY(100);
+// immigrants.add(new Immigrant("Melbil", "Lancerpaddle", 50, 100,100, Ability.WOODCUTTER));
+// immigrants.add(new Immigrant("Atír", "Razorpaddle", 50, 0,0, Ability.WOODCUTTER));
+// immigrants.add(new Immigrant("Onget", "Sabreletter", 52, 200,150, Ability.WOODCUTTER));
+ immigrants.add(new Immigrant("Limul", "Rockrack", 52, 700,150, Ability.WOODCUTTER));
root.getChildren().add(status);
- Scene scene = new Scene(root, width/4, height/4);
+ group.getChildren().add(root);
+ Scene scene = new Scene(group, width/4, height/4);
scene.setOnKeyPressed(event -> {
switch (event.getCode()) {
@@ -181,7 +212,7 @@ public class Main extends Application {
fortress1.remove((Dwarf) immigrant);
});
}
- immigrant.getThread().interrupt();
+ immigrant.getTimeline().stop();
});
immigrants.clear();
StringBuilder finalDeserializeData = new StringBuilder();
@@ -195,20 +226,17 @@ public class Main extends Application {
switch (params[0]) {
case "Immigrant" -> {
Immigrant immigrant = new Immigrant(data);
- immigrant.setThread(new ImmigrantThread(immigrant));
- immigrant.getThread().start();
+ immigrant.getTimeline().play();
immigrants.add(immigrant);
}
case "Dwarf" -> {
Dwarf dwarf = new Dwarf(data);
- dwarf.setThread(new DwarfThread(dwarf));
- dwarf.getThread().start();
+ dwarf.getTimeline().play();
immigrants.add(dwarf);
}
case "Nobel" -> {
Dwarf nobel = new Nobel(data);
- nobel.setThread(new DwarfThread(nobel));
- nobel.getThread().start();
+ nobel.getTimeline().play();
immigrants.add(nobel);
}
}
@@ -235,14 +263,49 @@ public class Main extends Application {
stage.setScene(scene);
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
scheduler.scheduleWithFixedDelay(() -> immigrants.forEach(immigrant -> {
- immigrant.getThread().start();
+ immigrant.getTimeline().play();
}), 1, 1, TimeUnit.SECONDS);
+// isMiniMapVisible = !isMiniMapVisible;
+// if (isMiniMapVisible){
+//
+// mainGroup.getChildren().add(miniMap);
+// mainGroup.getChildren().add(miniMap.rect);
+// UpdateTimer.play();
+// }
+// else{
+// mainGroup.getChildren().remove(miniMap);
+// mainGroup.getChildren().remove(miniMap.rect);
+// UpdateTimer.stop();
+// }
+ miniMap = new MiniMap(400, 225, stage.getWidth()/10, stage.getHeight()/10, root);
+ mapTimer = new Timeline(new KeyFrame(Duration.seconds(1), new EventHandler<ActionEvent>()
+ {
+ @Override
+ public void handle(ActionEvent event)
+ {
+ Platform.runLater(() -> {
+ miniMap.updateMap();
+ miniMap.setHeight(height/10);
+ miniMap.setWidth(width/10);
+ miniMap.rect.setHeight(stage.getHeight()/10);
+ miniMap.rect.setWidth(stage.getWidth()/10);
+ });
- stage.show();
+ miniMap.rect.setX(-root.getLayoutX() / 10);
+ miniMap.rect.setY(-root.getLayoutY() / 10);
+ }
+ }));
+ mapTimer.setCycleCount(Timeline.INDEFINITE);
+ group.getChildren().add(miniMap);
+ group.getChildren().add(miniMap.rect);
+ mapTimer.play();
+ stage.show();
}
+ public static Timeline mapTimer;
+
private void moveImmigrants(double dx, double dy) {
immigrants.forEach(immigrant -> {
if (immigrant.isActive()) {