Example #1
0
    private bool CanMove(int currentX, int currentY, Direction direction, int length)
    {
        bool result = true;

        for (int i = 1; i <= length; i++)
        {
            switch (direction)
            {
            case Direction.North:
                if (tiles.CanMove(currentX, currentY + i) ||
                    barriers.GetBarrier(currentX, currentY, direction) ||
                    entities.GetEntity(currentX, currentY + i) ||
                    shift)
                {
                    result = false;
                }
                break;

            case Direction.East:
                if (tiles.CanMove(currentX + i, currentY) ||
                    barriers.GetBarrier(currentX, currentY, direction) ||
                    entities.GetEntity(currentX + i, currentY) ||
                    shift)
                {
                    result = false;
                }
                break;

            case Direction.South:
                if (tiles.CanMove(currentX, currentY - i) ||
                    barriers.GetBarrier(currentX, currentY, direction) ||
                    entities.GetEntity(currentX, currentY - i) ||
                    shift)
                {
                    result = false;
                }
                break;

            case Direction.West:
                if (tiles.CanMove(currentX - i, currentY) ||
                    barriers.GetBarrier(currentX, currentY, direction) ||
                    entities.GetEntity(currentX - i, currentY) ||
                    shift)
                {
                    result = false;
                }
                break;
            }
        }
        return(result);
    }