diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..f77873e
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/kvr/missilecruiser_hard/ControllerMissileCruiser.java b/src/main/java/kvr/missilecruiser_hard/ControllerMissileCruiser.java
index 0a56714..3a5ae2f 100644
--- a/src/main/java/kvr/missilecruiser_hard/ControllerMissileCruiser.java
+++ b/src/main/java/kvr/missilecruiser_hard/ControllerMissileCruiser.java
@@ -1,16 +1,65 @@
package kvr.missilecruiser_hard;
+import javafx.event.ActionEvent;
import javafx.fxml.FXML;
+import javafx.scene.control.Button;
+import javafx.scene.paint.Color;
+import javafx.scene.canvas.Canvas;
+import javafx.scene.canvas.GraphicsContext;
+
+import java.util.Random;
public class ControllerMissileCruiser
{
+ private DrawingMissileCruiser drawingMissileCruiser;
+ private GraphicsContext graphicsContext;
+ private Random random;
+
+ @FXML
+ private Canvas mainCanvas;
+
+ @FXML
+ private void initialize() {
+ drawingMissileCruiser = new DrawingMissileCruiser();
+ graphicsContext = mainCanvas.getGraphicsContext2D();
+
+ random = new Random();
+ }
+
+ private void DrawOnCanvas(){
+ drawingMissileCruiser.DrawTransport(graphicsContext);
+ }
+
@FXML
protected void buttonCreate_Click() {
+ drawingMissileCruiser.Init(
+ random.nextInt(100, 300), random.nextInt(1000, 3000),
+ Color.rgb(random.nextInt(0, 256), random.nextInt(0, 256), random.nextInt(0, 256)),
+ Color.rgb(random.nextInt(0, 256), random.nextInt(0, 256), random.nextInt(0, 256)),
+ random.nextBoolean(), random.nextBoolean(), random.nextBoolean()
+ );
+ drawingMissileCruiser.SetPictureSize((int) mainCanvas.getWidth(), (int) mainCanvas.getHeight());
+ drawingMissileCruiser.SetPosition(random.nextInt(10, 100), random.nextInt(10, 100));
+
+ DrawOnCanvas();
}
@FXML
- protected void buttonsMove_Click() {
- //System.out.println(System.getProperty("java.class.path"));
+ protected void buttonsMove_Click(ActionEvent event) {
+ String name = ((Button) event.getSource()).getId();
+
+ boolean result = switch (name) {
+ case "buttonUp" -> drawingMissileCruiser.MoveTransport(DirectionType.Up);
+ case "buttonDown" -> drawingMissileCruiser.MoveTransport(DirectionType.Down);
+ case "buttonLeft" -> drawingMissileCruiser.MoveTransport(DirectionType.Left);
+ case "buttonRight" -> drawingMissileCruiser.MoveTransport(DirectionType.Right);
+ default -> false;
+ };
+
+ if (result)
+ {
+ DrawOnCanvas();
+ }
}
}
\ No newline at end of file
diff --git a/src/main/java/kvr/missilecruiser_hard/DrawingMissileCruiser.java b/src/main/java/kvr/missilecruiser_hard/DrawingMissileCruiser.java
index 945f9ac..18f0859 100644
--- a/src/main/java/kvr/missilecruiser_hard/DrawingMissileCruiser.java
+++ b/src/main/java/kvr/missilecruiser_hard/DrawingMissileCruiser.java
@@ -4,6 +4,8 @@ import javafx.scene.canvas.GraphicsContext;
import javafx.scene.image.Image;
import javafx.scene.paint.Color;
+import java.util.Objects;
+
public class DrawingMissileCruiser {
/// Класс-сущность
private EntityMissileCruiser entityMissileCruiser;
@@ -139,10 +141,10 @@ public class DrawingMissileCruiser {
}
}
- private final Image cruiserContourImg = new Image("images/cruiser_contour.png");
- private final Image vlsSideImg = new Image("images/cruiser_vls_sides.png");
- private final Image vlsCenterImg = new Image("images/cruiser_vls_center.png");
- private final Image helipadImg = new Image("images/cruiser_helipad.png");
+ public Image cruiserContourImg = new Image(Objects.requireNonNull(getClass().getResource("images/cruiser_contour.png")).toExternalForm());
+ public Image vlsSideImg = new Image(Objects.requireNonNull(getClass().getResource("images/cruiser_vls_sides.png")).toExternalForm());
+ public Image vlsCenterImg = new Image(Objects.requireNonNull(getClass().getResource("images/cruiser_vls_center.png")).toExternalForm());
+ public Image helipadImg = new Image(Objects.requireNonNull(getClass().getResource("images/cruiser_helipad.png")).toExternalForm());
///
/// Прорисовка объекта
@@ -155,20 +157,18 @@ public class DrawingMissileCruiser {
return;
}
- double[][] contourPolygon = new double[][] {
- {posX + 11, posY},
- {posX + 116, posY},
- {posX + 149, posY + 17},
- {posX + 116, posY + 34},
- {posX + 10, posY + 34},
- {posX, posY + 29},
- {posX, posY + 5}
+ // Fuck JavaFX, I had to use SUBPIXEL offsets to not see antialiasing artifacts
+ double[] contourPolygonX = new double[] {
+ posX + 10.75, posX + 116.25, posX + 150, posX + 116.25, posX + 10.75, posX + 0.5, posX + 0.5
+ };
+ double[] contourPolygonY = new double[] {
+ posY + 0.5, posY + 0.5, posY + 17.5, posY + 34.5, posY + 34.5, posY + 29.5, posY + 5.5
};
gc.clearRect(0, 0, pictureWidth, pictureHeight);
gc.setFill(entityMissileCruiser.getPrimaryColor());
- gc.fillPolygon(contourPolygon[0], contourPolygon[1], contourPolygon.length);
+ gc.fillPolygon(contourPolygonX, contourPolygonY, contourPolygonX.length);
if (entityMissileCruiser.getVLS_Sides())
{
@@ -186,7 +186,7 @@ public class DrawingMissileCruiser {
if (entityMissileCruiser.getHelipad())
{
gc.setFill(entityMissileCruiser.getSecondaryColor());
- gc.fillOval(posX + 2, posY + 9, 16, 16);
+ gc.fillOval(posX + 2.5, posY + 9.5, 16, 16);
gc.drawImage(helipadImg, posX, posY, entityWidth, entityHeight);
}
diff --git a/src/main/resources/kvr/missilecruiser_hard/ViewMissileCruiser.fxml b/src/main/resources/kvr/missilecruiser_hard/ViewMissileCruiser.fxml
index b460049..48f5cea 100644
--- a/src/main/resources/kvr/missilecruiser_hard/ViewMissileCruiser.fxml
+++ b/src/main/resources/kvr/missilecruiser_hard/ViewMissileCruiser.fxml
@@ -1,13 +1,15 @@
+
+
diff --git a/src/main/resources/kvr/missilecruiser_hard/images/cruiser_contour.png b/src/main/resources/kvr/missilecruiser_hard/images/cruiser_contour.png
new file mode 100644
index 0000000..9de3393
Binary files /dev/null and b/src/main/resources/kvr/missilecruiser_hard/images/cruiser_contour.png differ
diff --git a/src/main/resources/kvr/missilecruiser_hard/images/cruiser_helipad.png b/src/main/resources/kvr/missilecruiser_hard/images/cruiser_helipad.png
new file mode 100644
index 0000000..76138d9
Binary files /dev/null and b/src/main/resources/kvr/missilecruiser_hard/images/cruiser_helipad.png differ
diff --git a/src/main/resources/kvr/missilecruiser_hard/images/cruiser_vls_center.png b/src/main/resources/kvr/missilecruiser_hard/images/cruiser_vls_center.png
new file mode 100644
index 0000000..3275625
Binary files /dev/null and b/src/main/resources/kvr/missilecruiser_hard/images/cruiser_vls_center.png differ
diff --git a/src/main/resources/kvr/missilecruiser_hard/images/cruiser_vls_sides.png b/src/main/resources/kvr/missilecruiser_hard/images/cruiser_vls_sides.png
new file mode 100644
index 0000000..2baf8c9
Binary files /dev/null and b/src/main/resources/kvr/missilecruiser_hard/images/cruiser_vls_sides.png differ