добавил Enum и Класс рисования усложнённой части

This commit is contained in:
Kaehvaman 2025-02-18 23:57:52 +04:00
parent ad362f0fab
commit 56f57afc19
6 changed files with 92 additions and 42 deletions

View File

@ -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));

View File

@ -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())
{

View File

@ -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;
}
}
}

View File

@ -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;
}
}

View File

@ -0,0 +1,7 @@
package kvr.missilecruiser_hard;
public enum VlsBlockCount {
two,
four,
six
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 647 B