From 56f57afc1996b46afe6fc5a81466d7b345f21337 Mon Sep 17 00:00:00 2001 From: Kaehvaman Date: Tue, 18 Feb 2025 23:57:52 +0400 Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20En?= =?UTF-8?q?um=20=D0=B8=20=D0=9A=D0=BB=D0=B0=D1=81=D1=81=20=D1=80=D0=B8?= =?UTF-8?q?=D1=81=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F=20=D1=83=D1=81=D0=BB?= =?UTF-8?q?=D0=BE=D0=B6=D0=BD=D1=91=D0=BD=D0=BD=D0=BE=D0=B9=20=D1=87=D0=B0?= =?UTF-8?q?=D1=81=D1=82=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ControllerMissileCruiser.java | 3 +- .../DrawingMissileCruiser.java | 27 ++++----- .../kvr/missilecruiser_hard/DrawingVLS.java | 54 ++++++++++++++++++ .../EntityMissileCruiser.java | 43 ++++++-------- .../missilecruiser_hard/VlsBlockCount.java | 7 +++ .../missilecruiser_hard/images/doubleVLS.png | Bin 0 -> 647 bytes 6 files changed, 92 insertions(+), 42 deletions(-) create mode 100644 src/main/java/kvr/missilecruiser_hard/DrawingVLS.java create mode 100644 src/main/java/kvr/missilecruiser_hard/VlsBlockCount.java create mode 100644 src/main/resources/kvr/missilecruiser_hard/images/doubleVLS.png diff --git a/src/main/java/kvr/missilecruiser_hard/ControllerMissileCruiser.java b/src/main/java/kvr/missilecruiser_hard/ControllerMissileCruiser.java index 3a5ae2f..defb089 100644 --- a/src/main/java/kvr/missilecruiser_hard/ControllerMissileCruiser.java +++ b/src/main/java/kvr/missilecruiser_hard/ControllerMissileCruiser.java @@ -36,8 +36,9 @@ public class ControllerMissileCruiser 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() + random.nextBoolean(), random.nextBoolean() ); + drawingMissileCruiser.getDrawingVLS().setVlsBlockCount(random.nextInt(0, 7)); drawingMissileCruiser.SetPictureSize((int) mainCanvas.getWidth(), (int) mainCanvas.getHeight()); drawingMissileCruiser.SetPosition(random.nextInt(10, 100), random.nextInt(10, 100)); diff --git a/src/main/java/kvr/missilecruiser_hard/DrawingMissileCruiser.java b/src/main/java/kvr/missilecruiser_hard/DrawingMissileCruiser.java index 18f0859..ae03559 100644 --- a/src/main/java/kvr/missilecruiser_hard/DrawingMissileCruiser.java +++ b/src/main/java/kvr/missilecruiser_hard/DrawingMissileCruiser.java @@ -14,6 +14,12 @@ public class DrawingMissileCruiser { return entityMissileCruiser; } + private DrawingVLS drawingVLS; + + public DrawingVLS getDrawingVLS() { + return drawingVLS; + } + /// Ширина окна private int pictureWidth; @@ -39,13 +45,13 @@ public class DrawingMissileCruiser { /// @param weight Вес крейсера /// @param primaryColor Основной цвет /// @param secondaryColor Дополнительный цвет - /// @param vls_sides Признак наличия боковых установок вертикального пуска - /// @param vls_center Признак наличия центральных установок вертикального пуска + /// @param vls Признак наличия установок вертикального пуска /// @param helipad Признак наличия вертолётной площадки - public void Init(int speed, int weight, Color primaryColor, Color secondaryColor, boolean vls_sides, boolean vls_center, boolean helipad) + public void Init(int speed, int weight, Color primaryColor, Color secondaryColor, boolean vls, boolean helipad) { entityMissileCruiser = new EntityMissileCruiser(); - entityMissileCruiser.Init(speed, weight, primaryColor, secondaryColor, vls_sides, vls_center, helipad); + drawingVLS = new DrawingVLS(); + entityMissileCruiser.Init(speed, weight, primaryColor, secondaryColor, vls, helipad); pictureWidth = 0; pictureHeight = 0; posX = 0; @@ -170,18 +176,9 @@ public class DrawingMissileCruiser { gc.setFill(entityMissileCruiser.getPrimaryColor()); gc.fillPolygon(contourPolygonX, contourPolygonY, contourPolygonX.length); - if (entityMissileCruiser.getVLS_Sides()) + if (entityMissileCruiser.getVLS()) { - gc.setFill(entityMissileCruiser.getSecondaryColor()); - gc.fillRect(posX + 44, posY + 5, 24, 6); - gc.fillRect(posX + 44, posY + 23, 24, 6); - gc.drawImage(vlsSideImg, posX, posY, entityWidth, entityHeight); - } - if (entityMissileCruiser.getVLS_Center()) - { - gc.setFill(entityMissileCruiser.getSecondaryColor()); - gc.fillRect(posX + 44, posY + 14, 24, 6); - gc.drawImage(vlsCenterImg, posX, posY, entityWidth, entityHeight); + drawingVLS.drawVLS(gc, posX, posY, entityMissileCruiser.getSecondaryColor()); } if (entityMissileCruiser.getHelipad()) { diff --git a/src/main/java/kvr/missilecruiser_hard/DrawingVLS.java b/src/main/java/kvr/missilecruiser_hard/DrawingVLS.java new file mode 100644 index 0000000..767b46b --- /dev/null +++ b/src/main/java/kvr/missilecruiser_hard/DrawingVLS.java @@ -0,0 +1,54 @@ +package kvr.missilecruiser_hard; + +import javafx.scene.canvas.GraphicsContext; +import javafx.scene.image.Image; +import javafx.scene.paint.Color; + +import java.util.Objects; + +public class DrawingVLS { + private VlsBlockCount vlsBlockCount; + + public VlsBlockCount getVlsBlockCount() { + return vlsBlockCount; + } + + public void setVlsBlockCount(int vlsBlockCount) { + if (vlsBlockCount > 4) { + this.vlsBlockCount = VlsBlockCount.six; + } else if (vlsBlockCount > 2) { + this.vlsBlockCount = VlsBlockCount.four; + } else { + this.vlsBlockCount = VlsBlockCount.two; + } + } + + private final Image doubleVlsImage = new Image( + Objects.requireNonNull(getClass().getResource("images/doubleVLS.png")).toExternalForm() + ); + public void drawVLS(GraphicsContext gc, double x, double y, Color secondaryColor) { + gc.setFill(secondaryColor); + + switch (vlsBlockCount) { + case VlsBlockCount.six: + gc.fillRect(x + 43, y + 14, 12, 6); + gc.fillRect(x + 57, y + 14, 12, 6); + gc.drawImage(doubleVlsImage, x, y + 9); + case VlsBlockCount.four: + gc.fillRect(x + 43, y + 5, 12, 6); + gc.fillRect(x + 57, y + 5, 12, 6); + + gc.fillRect(x + 43, y + 23, 12, 6); + gc.fillRect(x + 57, y + 23, 12, 6); + + gc.drawImage(doubleVlsImage, x, y); + gc.drawImage(doubleVlsImage, x, y + 18); + break; + case VlsBlockCount.two: + gc.fillRect(x + 43, y + 14, 12, 6); + gc.fillRect(x + 57, y + 14, 12, 6); + gc.drawImage(doubleVlsImage, x, y + 9); + break; + } + } +} diff --git a/src/main/java/kvr/missilecruiser_hard/EntityMissileCruiser.java b/src/main/java/kvr/missilecruiser_hard/EntityMissileCruiser.java index 86692c3..332c3cf 100644 --- a/src/main/java/kvr/missilecruiser_hard/EntityMissileCruiser.java +++ b/src/main/java/kvr/missilecruiser_hard/EntityMissileCruiser.java @@ -32,18 +32,11 @@ public class EntityMissileCruiser { return secondaryColor; } - /// Боковые установки вертикального пуска - private boolean vls_sides; + /// Установки вертикального пуска + private boolean vls; - public boolean getVLS_Sides(){ - return vls_sides; - } - - /// Центральные установки вертикального пуска - private boolean vls_center; - - public boolean getVLS_Center() { - return vls_center; + public boolean getVLS(){ + return vls; } /// Вертолётная площадка @@ -60,22 +53,20 @@ public class EntityMissileCruiser { /** * Инициализация полей объекта-класса ракетного крейсера - * @param Speed Скорость - * @param Weight Вес крейсера - * @param PrimaryColor Основной цвет - * @param SecondaryColor Дополнительный цвет - * @param VLS_Sides Признак наличия боковых установок вертикального пуска - * @param VLS_Center Признак наличия центральных установок вертикального пуска - * @param Helipad Признак наличия вертолётной площадки + * @param speed Скорость + * @param weight Вес крейсера + * @param primaryColor Основной цвет + * @param secondaryColor Дополнительный цвет + * @param vls Признак наличия установок вертикального пуска + * @param helipad Признак наличия вертолётной площадки */ - public void Init(int Speed, int Weight, Color PrimaryColor, Color SecondaryColor, boolean VLS_Sides, boolean VLS_Center, boolean Helipad) + public void Init(int speed, int weight, Color primaryColor, Color secondaryColor, boolean vls, boolean helipad) { - speed = Speed; - weight = Weight; - primaryColor = PrimaryColor; - secondaryColor = SecondaryColor; - vls_sides = VLS_Sides; - vls_center = VLS_Center; - helipad = Helipad; + this.speed = speed; + this.weight = weight; + this.primaryColor = primaryColor; + this.secondaryColor = secondaryColor; + this.vls = vls; + this.helipad = helipad; } } diff --git a/src/main/java/kvr/missilecruiser_hard/VlsBlockCount.java b/src/main/java/kvr/missilecruiser_hard/VlsBlockCount.java new file mode 100644 index 0000000..3ddc85b --- /dev/null +++ b/src/main/java/kvr/missilecruiser_hard/VlsBlockCount.java @@ -0,0 +1,7 @@ +package kvr.missilecruiser_hard; + +public enum VlsBlockCount { + two, + four, + six +} diff --git a/src/main/resources/kvr/missilecruiser_hard/images/doubleVLS.png b/src/main/resources/kvr/missilecruiser_hard/images/doubleVLS.png new file mode 100644 index 0000000000000000000000000000000000000000..c136efdf7b59987c9db74e66dfd14a042f92e6fc GIT binary patch literal 647 zcmeAS@N?(olHy`uVBq!ia0vp^(|}l+gAGWQv3*tnQY`6?zK#qG8~eHcB(gFvFt%hm zI|q0=J1Z0v<)>xlq%tsQOst(~>v7mYqV4`NFV`rRw+fFYEPRzDE?TG)s?*eZDJgi*lIq#bGxi|a5X*P@7Vod$qOaby6GZOM=FjN^1rWrfBJ5D z!-X|QSKo9pu1b@9=@N71Y536t+AKVm<~VpHEt_{nC+(r-zIP8F|BjuKUU~hmrIXje zlm>s5KEt~kI?OxL&2{H~wkw=5RkiiUoQg{exP|PCV#|K^7N1OPOmFMWshVfuqcd$+ z#Ji+0vyexUk2)4*P0@c66K0WL7`D3f+CKIA#0?A9rtI*`7U9%U>=bc1v0`zPmX1s2 zbq~Xd%RcXDuRro}`3cp@tC`&TSg$N_D*E%F{=@F=X@ym%e7TM_-V?w5PlB0gx5Mhh z+xL%eyKBYx=lp@G*FIjKb>NQr%icaQOD48$joq*N)ZQ~rw?6P;vYzB5<)4|HN0mO* zx!s?_-j>(+&vbkK+u}KP43V#{e&Q`C;OLpIQGNIE-P*ggzqc>DyI+2xd(qC%zvs^a z#t&PPx4R3&e-K=-cll(X2xoyuWHAGSo-znCRxGtI0}8U2c>21szhn{;X0m=Dv`Y{u zBw6AbQR1ARo12WMJso&~|qAQS)c)yB}UWzRNQGF(219QH9o^4iPU!kA)&k dKr`UL;U;4|ljN62mz+XDVxF#kF6*2UngBDy3!(r3 literal 0 HcmV?d00001