private void MoveShipIfPossible(Model.Data.Vector pos, bool rotate) { if (rotate) { _draggedShip.IsHorizontal = !_lastIsHorizontal; _draggedShip.Replace(pos - _difference + _difference.Inverted()); _difference = _difference.Inverted(); } else { _draggedShip.Replace(pos + _difference); } if (CollisionDetection(_draggedShip) || (_draggedShip.Coordinates[0].X < 0) || (_draggedShip.Coordinates[0].Y < 0) || (_draggedShip.Coordinates[_draggedShip.Length - 1].X > 9) || (_draggedShip.Coordinates[_draggedShip.Length - 1].Y > 9)) { Logger.Log("Collision detected..."); _draggedShip.IsHorizontal = _lastIsHorizontal; _draggedShip.Replace(_lastPosition); if (rotate) { _difference = _difference.Inverted(); } } _lastIsHorizontal = _draggedShip.IsHorizontal; _lastPosition = _draggedShip.Coordinates[0]; }