/// <summary> Проверяет можно ли осуществить поворот </summary> /// <param name="transformArg"> Изначальная позиция </param> /// <param name="isByClockArg"> true - поворот по часовой стрелке </param> /// <returns> Возвращает можно ли осуществить поворот </returns> public bool IsCanRotate(Vector3Int curPositionArg, Vector3Int centerArg, bool isByClockArg) { bool isCanRotate = false; float angle = (isByClockArg) ? 90 : -90; Vector3Int newPosition; _transform.position = curPositionArg; _transform.RotateAround(centerArg, new Vector3(0, 0, 1), angle); newPosition = Vector3Int.RoundToInt(_transform.position); if (_mover.IsCanMove(newPosition)) { isCanRotate = true; } return(isCanRotate); }
public bool Move(IMover moverArg, Vector3Int moveParamArg) { List <IMovable> borderPlane; Vector3Int moveParamInt = moveParamArg; borderPlane = GetBorderArea(moveParamInt); foreach (var item in borderPlane) { if (!moverArg.IsCanMove(item.Position, moveParamInt)) { return(false); } } foreach (var item in _figures) { item.Move(moverArg, moveParamArg); } _positionFact = moverArg.Move(this, moveParamArg); return(true); }