Example #1
0
        /// <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);
        }
Example #2
0
        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);
        }