Implement engines renderer

This commit is contained in:
ShabOl 2023-11-27 20:18:42 +04:00
parent be6065021e
commit 7044b3eac3
4 changed files with 79 additions and 11 deletions

View File

@ -2,12 +2,12 @@ import java.awt.Color;
public class BomberEntity public class BomberEntity
{ {
public int Speed; private int Speed;
public double Weight; private double Weight;
public Color BodyColor; private Color BodyColor;
public Color AdditionalColor; private Color AdditionalColor;
public boolean Bombs; private boolean Bombs;
public boolean FuelTanks; private boolean FuelTanks;
public double Step; public double Step;
public void Init(int Speed, double Weight, Color BodyColor, Color AdditionalColor, boolean FuelTanks, boolean Bombs) public void Init(int Speed, double Weight, Color BodyColor, Color AdditionalColor, boolean FuelTanks, boolean Bombs)
@ -21,4 +21,16 @@ public class BomberEntity
this.Step = (double)Speed * 100 / Weight * 5 / 2; this.Step = (double)Speed * 100 / Weight * 5 / 2;
} }
public int GetSpeed() { return Speed; }
public double GetWeight() { return Weight; }
public Color GetBodyColor() { return BodyColor; }
public Color GetAdditionalColor() { return AdditionalColor; }
public boolean GetBombs() { return Bombs; }
public boolean GetFuelTanks() { return FuelTanks; }
} }

View File

@ -1,8 +1,9 @@
import java.awt.*; import java.awt.*;
import java.util.Random;
public class BomberRenderer public class BomberRenderer
{ {
public BomberEntity EntityBomber; private BomberEntity EntityBomber;
private int _pictureWidth; private int _pictureWidth;
private int _pictureHeight; private int _pictureHeight;
@ -13,6 +14,8 @@ public class BomberRenderer
private int _bomberWidth = 200; private int _bomberWidth = 200;
private int _bomberHeight = 200; private int _bomberHeight = 200;
public EngineRenderer EngineRenderer;
public boolean Init(int Speed, double Weight, Color BodyColor, Color AdditionalColor, boolean FuelTanks, boolean Bombs, int Width, int Height) public boolean Init(int Speed, double Weight, Color BodyColor, Color AdditionalColor, boolean FuelTanks, boolean Bombs, int Width, int Height)
{ {
if (Width < _bomberWidth || Height < _bomberHeight) if (Width < _bomberWidth || Height < _bomberHeight)
@ -23,10 +26,17 @@ public class BomberRenderer
EntityBomber = new BomberEntity(); EntityBomber = new BomberEntity();
EntityBomber.Init(Speed, Weight, BodyColor, AdditionalColor, FuelTanks, Bombs); EntityBomber.Init(Speed, Weight, BodyColor, AdditionalColor, FuelTanks, Bombs);
EngineRenderer = new EngineRenderer();
Random Random = new Random();
EngineRenderer.SetAmount(Random.nextInt(1, 7));
return true; return true;
} }
public BomberEntity GetEntityBomber() { return EntityBomber; }
public void SetPosition(int x, int y) public void SetPosition(int x, int y)
{ {
if (EntityBomber == null) if (EntityBomber == null)
@ -86,7 +96,7 @@ public class BomberRenderer
return; return;
/** Отрисовка основной части */ /** Отрисовка основной части */
g.setColor(EntityBomber.BodyColor); g.setColor(EntityBomber.GetBodyColor());
int[] LeftWingX = { int[] LeftWingX = {
_startPosX + 90, _startPosX + 90,
@ -172,9 +182,9 @@ public class BomberRenderer
g.drawPolygon(BackRightWingX, BackRightWingY, 4); g.drawPolygon(BackRightWingX, BackRightWingY, 4);
/** Отрисовка дополнительных элементов */ /** Отрисовка дополнительных элементов */
g.setColor(EntityBomber.AdditionalColor); g.setColor(EntityBomber.GetAdditionalColor());
if (EntityBomber.FuelTanks) if (EntityBomber.GetFuelTanks())
{ {
int[] LeftGasTankX = { int[] LeftGasTankX = {
_startPosX + 50, _startPosX + 50,
@ -205,10 +215,12 @@ public class BomberRenderer
g.fillPolygon(RightGasTankX, RightGasTankY, 4); g.fillPolygon(RightGasTankX, RightGasTankY, 4);
} }
if (EntityBomber.Bombs) if (EntityBomber.GetBombs())
{ {
g.fillOval(_startPosX + 110, _startPosY + 115, 50, 25); g.fillOval(_startPosX + 110, _startPosY + 115, 50, 25);
g.fillOval(_startPosX + 110, _startPosY + 60, 50, 25); g.fillOval(_startPosX + 110, _startPosY + 60, 50, 25);
} }
EngineRenderer.DrawEngines(g, EntityBomber.GetBodyColor(), _startPosX, _startPosY);
} }
} }

38
src/EngineRenderer.java Normal file
View File

@ -0,0 +1,38 @@
import java.awt.*;
public class EngineRenderer
{
private EnginesAmount Amount;
public void SetAmount(int Amount)
{
if (Amount <= 2)
this.Amount = EnginesAmount.Two;
else if (Amount > 2 && Amount <= 4)
this.Amount = EnginesAmount.Four;
else
this.Amount = EnginesAmount.Six;
}
public void DrawEngines(Graphics g, Color BodyColor, int _startPosX, int _startPosY)
{
g.setColor(BodyColor);
g.fillOval(_startPosX + 83, _startPosY + 50, 30, 15);
g.fillOval(_startPosX + 83, _startPosY + 135, 30, 15);
if (Amount == EnginesAmount.Two)
return;
g.fillOval(_startPosX + 83, _startPosY + 30, 30, 15);
g.fillOval(_startPosX + 83, _startPosY + 155, 30, 15);
if (Amount == EnginesAmount.Four)
return;
g.fillOval(_startPosX + 83, _startPosY + 10, 30, 15);
g.fillOval(_startPosX + 83, _startPosY + 175, 30, 15);
}
}

6
src/EnginesAmount.java Normal file
View File

@ -0,0 +1,6 @@
public enum EnginesAmount
{
Two,
Four,
Six
}