using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Sailboat { class DrawingObjectBoat : IDrawingObject { private DrawingBoat _boat; public DrawingObjectBoat(DrawingBoat boat) { _boat = boat; } public float Step => _boat?.Boat?.Step ?? 0; public void DrawingObject(Graphics g) { _boat.DrawTransport(g); } public (float Left, float Right, float Top, float Bottom) GetCurrentPosition() { return _boat?.GetCurrentPosition() ?? default; } void IDrawingObject.MoveObject(Direction direction) { _boat?.MoveTransport(direction); } public void SetObject(int x, int y, int width, int height) { _boat.SetPosition(x, y, width, height); } public string GetInfo() => _boat?.GetDataForSave(); public DrawingBoat GetBoat => _boat; public static IDrawingObject Create(string data) => new DrawingObjectBoat(data.CreateDrawningBoat()); public bool Equals(IDrawingObject? other) { if (other == null) { return false; } var otherBoat = other as DrawingObjectBoat; if (otherBoat == null) { return false; } var boat = _boat.Boat; var otherBoatBoat = otherBoat._boat.Boat; if (boat.GetType().Name != otherBoatBoat.GetType().Name) { return false; } if (boat.Speed != otherBoatBoat.Speed) { return false; } if (boat.Weight != otherBoatBoat.Weight) { return false; } if (boat.BodyColor != otherBoatBoat.BodyColor) { return false; } if (boat is Sailboat sailboat && otherBoatBoat is Sailboat otherSailboat) { if (sailboat.EdgeColor != otherSailboat.EdgeColor) { return false; } if (sailboat.Sail != otherSailboat.Sail) { return false; } if (sailboat.ExtendedBody != otherSailboat.ExtendedBody) { return false; } } return true; } } }