Пример #1
0
    private void OnArrowPress(int i)
    {
        ArrowButtonDirection direction = ArrowButtonDirection.Up;

        switch (i)
        {
        case 0:
            direction = ArrowButtonDirection.Up;
            break;

        case 1:
            direction = ArrowButtonDirection.Left;
            break;

        case 2:
            direction = ArrowButtonDirection.Right;
            break;

        case 3:
            direction = ArrowButtonDirection.Down;
            break;

        default:
            throw new InvalidOperationException();
        }

        var nextButton = CrackboxLogic.GetNextIndex(currentlySelectedItem, gridItems, direction);

        BoxRenderers[currentlySelectedItem].material = gridItems[currentlySelectedItem].IsBlack ? GridBoxBlack : GridBoxNormal;
        BoxRenderers[nextButton].material            = GridBoxSelected;
        currentlySelectedItem = nextButton;
    }
Пример #2
0
        public static int GetNextIndex(int currentIndex, CrackboxGridItem[] gridItems, ArrowButtonDirection direction)
        {
            int neighbour = 0;

            if (currentIndex < 0 || currentIndex + 1 > gridItems.Length)
            {
                throw new ArgumentException("Current index is incorrect " + currentIndex);
            }

            var currentGridItem = gridItems[currentIndex];

            switch (direction)
            {
            case ArrowButtonDirection.Up:
                neighbour = currentGridItem.UpNeighbour;
                break;

            case ArrowButtonDirection.Down:
                neighbour = currentGridItem.DownNeighbour;
                break;

            case ArrowButtonDirection.Right:
                neighbour = currentGridItem.RightNeighbour;
                break;

            case ArrowButtonDirection.Left:
                neighbour = currentGridItem.LeftNeighbour;
                break;

            default:
                throw new InvalidOperationException();
            }

            //var newGridItem = gridItems[neighbour];
            //if (newGridItem.IsBlack)
            //{
            //    return GetNextIndex(neighbour, gridItems, direction);
            //}


            return(neighbour);
        }