PIbd-21_Kouvshinoff_T._A._W.../laba1Loco/DrawingLoco.java

127 lines
4.5 KiB
Java
Raw Normal View History

package laba1Loco;
import java.awt.*;
import java.util.*;
import javax.swing.*;
import javax.swing.Timer;
import java.awt.event.*;
2023-10-08 01:10:54 +04:00
public class DrawingLoco extends DrawingTrain{
/// <summary>
/// Инициализация свойств
/// </summary>
/// <param name="speed">Скорость</param>
/// <param name="weight">Вес</param>
/// <param name="bodyColor">Цвет кузова</param>
/// <param name="additionalColor">Дополнительный цвет</param>
/// <param name="tube">Признак наличия трубы</param>
/// <param name="fuelTank">Признак наличия бака</param>
/// <param name="locoLine">Признак наличия паровозной полосы</param>
/// <param name="width">Ширина картинки</param>
/// <param name="height">Высота картинки</param>
public DrawingLoco(int speed, double weight, Color bodyColor, int _numWheel, Color additionalColor, boolean tube, boolean fuelTank, boolean locoLine, int width, int height)
{
super(speed, weight, bodyColor, _numWheel, width, height);
EntityTrain = new EntityLoco(speed, weight, bodyColor, _numWheel, additionalColor, tube, fuelTank, locoLine);
_locoWidth = ((EntityLoco)EntityTrain).FuelTank ? 169 : 83;
}
/// <summary>
/// Установка позиции
/// </summary>
/// <param name="x">Координата X</param>
/// <param name="y">Координата Y</param>
public void SetPosition(int x, int y)
{
_startPosX = Math.min(x, _pictureWidth-_locoWidth);
_startPosY = Math.min(y, _pictureHeight-_locoHeight);
}
/// <summary>
/// Прорисовка объекта
/// </summary>
/// <param name="g"></param>
public void DrawTransport(Graphics2D g2d)
{
if (EntityTrain == null)
{
2023-10-08 01:10:54 +04:00
return;
}
2023-10-08 01:10:54 +04:00
super.DrawTransport(g2d);
g2d.setColor(((EntityLoco)EntityTrain).AdditionalColor);
if (((EntityLoco)EntityTrain).Tube)
{
2023-10-08 01:10:54 +04:00
g2d.drawPolyline(new int[] {
_startPosX + 40,_startPosX + 40,_startPosX + 45,_startPosX + 41,_startPosX + 41,_startPosX + 44,_startPosX + 44,_startPosX + 45,_startPosX + 45,
},new int[] {
_startPosY+9,_startPosY+3,_startPosY+3,_startPosY+3,_startPosY,_startPosY,_startPosY+3,_startPosY+3,_startPosY+9,
},9);
}
2023-10-08 01:10:54 +04:00
if (((EntityLoco)EntityTrain).LocoLine)
{
2023-10-08 01:10:54 +04:00
g2d.drawPolyline(new int[] {
_startPosX + 60,_startPosX + 38,
},new int[] {
_startPosY+10,_startPosY+32
},2);
g2d.drawPolyline(new int[] {
_startPosX + 65,_startPosX + 43,
},new int[] {
_startPosY+10,_startPosY+32
},2);
g2d.drawPolyline(new int[] {
_startPosX + 70,_startPosX + 48,
},new int[] {
_startPosY+10,_startPosY+32
},2);
}
2023-10-08 01:10:54 +04:00
if (((EntityLoco)EntityTrain).FuelTank)
{
// body
2023-10-08 01:10:54 +04:00
g2d.setColor(EntityTrain.BodyColor);
g2d.drawPolyline(new int[]{
_startPosX + 89, _startPosX + 164, _startPosX + 164, _startPosX + 89, _startPosX + 89,
}, new int[]{
_startPosY+10, _startPosY+10, _startPosY+32, _startPosY+32, _startPosY+10
}, 5);
g2d.drawPolyline(new int[]{
_startPosX + 89, _startPosX + 164,
}, new int[]{
_startPosY+21, _startPosY+21,
}, 2);
// trucks
g2d.fillPolygon(new int[]{
_startPosX + 0+85,_startPosX + 5+85,_startPosX + 32+85,_startPosX + 36+85,
2023-10-08 01:10:54 +04:00
}, new int[]{
_startPosY+37,_startPosY+33,_startPosY+33,_startPosY+37
2023-10-08 01:10:54 +04:00
}, 4);
g2d.fillPolygon(new int[]{
_startPosX + 44+85,_startPosX + 49+85,_startPosX + 76+85,_startPosX + 80+85,
2023-10-08 01:10:54 +04:00
}, new int[]{
_startPosY+37,_startPosY+33,_startPosY+33,_startPosY+37
2023-10-08 01:10:54 +04:00
}, 4);
2023-10-08 01:10:54 +04:00
//back
g2d.fillPolygon(new int[]{
_startPosX + 79+85,_startPosX + 82+85,_startPosX + 82+85,_startPosX + 79+85,
2023-10-08 01:10:54 +04:00
}, new int[]{
_startPosY+12,_startPosY+12,_startPosY+30,_startPosY+30
2023-10-08 01:10:54 +04:00
}, 4);
2023-10-08 01:10:54 +04:00
//front
g2d.fillPolygon(new int[]{
_startPosX + 86,_startPosX + 89,_startPosX + 89,_startPosX + 86,
2023-10-08 01:10:54 +04:00
}, new int[]{
_startPosY+12,_startPosY+12,_startPosY+30,_startPosY+30
2023-10-08 01:10:54 +04:00
}, 4);
}
2023-10-09 21:35:00 +04:00
//wheels
wheelDrawing.Draw(_startPosX, _startPosY, ((EntityLoco)EntityTrain).FuelTank, EntityTrain.BodyColor, g2d);
2023-10-08 01:10:54 +04:00
}
}