83 lines
3.6 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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