83 lines
3.6 KiB
C#
83 lines
3.6 KiB
C#
using System;
|
||
using System.Collections.Generic;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using System.Threading.Tasks;
|
||
using ProjectSeaplane.Entities;
|
||
|
||
namespace ProjectSeaplane.DrawningObjects
|
||
{
|
||
/// <summary>
|
||
/// Класс, отвечающий за прорисовку и перемещение объекта-сущности
|
||
/// </summary>
|
||
public class DrawningSeaplane : DrawningPlane
|
||
{
|
||
public void setAdditionalColor(Color color)
|
||
{
|
||
(EntityPlane as EntitySeaplane).AdditionalColor = color;
|
||
}
|
||
/// <summary>
|
||
/// Инициализация свойств
|
||
/// </summary>
|
||
/// <param name="speed">Скорость</param>
|
||
/// <param name="weight">Вес</param>
|
||
/// <param name="bodyColor">Цвет кузова</param>
|
||
/// <param name="additionalColor">Дополнительный цвет</param>
|
||
/// /// <param name="boat">Лодка</param>
|
||
/// /// <param name="floater">Дополнительный цвет</param>
|
||
/// <param name="width">Ширина картинки</param>
|
||
/// <param name="height">Высота картинки</param>
|
||
/// <returns>true - объект создан, false - проверка не пройдена, нельзя создать объект в этих размерах</returns>
|
||
public DrawningSeaplane(int speed, double weight, Color bodyColor, Color additionalColor, bool boat, bool floater, int width, int height) :
|
||
base(speed, weight, bodyColor, width, height, 200, 110)
|
||
{
|
||
if (EntityPlane != null)
|
||
{
|
||
EntityPlane = new EntitySeaplane(speed, weight, bodyColor, additionalColor, boat, floater);
|
||
}
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// Прорисовка объекта
|
||
/// </summary>
|
||
/// <param name="g"></param>
|
||
public override void DrawTransport(Graphics g)
|
||
{
|
||
if (EntityPlane is not EntitySeaplane seaPlane)
|
||
{
|
||
return;
|
||
}
|
||
|
||
Pen pen = new(Color.Black);
|
||
Brush additionalBrush = new SolidBrush(seaPlane.AdditionalColor);
|
||
|
||
// лодка
|
||
if (seaPlane.Boat)
|
||
{
|
||
g.DrawEllipse(pen, _startPosX + 40, _startPosY, 90, 20);
|
||
g.DrawLine(pen, _startPosX + 60, _startPosY + 20, _startPosX + 50, _startPosY + 30);
|
||
g.DrawLine(pen, _startPosX + 60, _startPosY + 20, _startPosX + 70, _startPosY + 30);
|
||
g.DrawLine(pen, _startPosX + 110, _startPosY + 20, _startPosX + 100, _startPosY + 30);
|
||
g.DrawLine(pen, _startPosX + 110, _startPosY + 20, _startPosX + 120, _startPosY + 30);
|
||
g.FillEllipse(additionalBrush, _startPosX + 40, _startPosY, 90, 20);
|
||
}
|
||
//поплавок
|
||
if(seaPlane.Floater)
|
||
{
|
||
g.DrawLine(pen, _startPosX + 70, _startPosY + 80, _startPosX + 50, _startPosY + 100);
|
||
g.DrawLine(pen, _startPosX + 70, _startPosY + 80, _startPosX + 70, _startPosY + 100);
|
||
g.DrawLine(pen, _startPosX + 120, _startPosY + 80, _startPosX + 90, _startPosY + 100);
|
||
g.DrawLine(pen, _startPosX + 120, _startPosY + 80, _startPosX + 110, _startPosY + 100);
|
||
g.DrawLine(pen, _startPosX + 120, _startPosY + 80, _startPosX + 140, _startPosY + 100);
|
||
g.DrawEllipse(pen, _startPosX + 30, _startPosY + 100, 140, 10);
|
||
g.FillEllipse(additionalBrush, _startPosX + 30, _startPosY + 100, 140, 10);
|
||
}
|
||
base.DrawTransport(g);
|
||
|
||
|
||
}
|
||
|
||
}
|
||
}
|