Ejemplo n.º 1
0
    private void ChooseNextDirection()
    {
        bool col = true;

        while (col == true)
        {
            _direction = GetRandomDirection(_direction);

            List <int> moveGroupIndicesAfterTurn = _direction.FrontMoveGroup();

            int collisionCount = 0;

            for (int i = 0; i < moveGroupIndicesAfterTurn.Count; i++)
            {
                CollisionType obstacle = MyCollision.Check(Cubes[moveGroupIndicesAfterTurn[i]], _direction, MyGameManager.MyGrid);
                if (obstacle == CollisionType.GridEdge || obstacle == CollisionType.Stone)
                {
                    Debug.Log("Collided with " + obstacle);
                    collisionCount++;
                }
            }

            if (collisionCount == 0)
            {
                col = false;
            }
        }
    }
Ejemplo n.º 2
0
    private IEnumerator MineStone()
    {
        List <int> moveGroupIndices = _direction.FrontMoveGroup();



        List <Direction> minePatternDirection;


        for (int i = 0; i < moveGroupIndices.Count; i++)
        {
            CollisionType obstacle = MyCollision.Check(Cubes[moveGroupIndices[i]], _direction, MyGameManager.MyGrid);
            if (obstacle == CollisionType.Stone)
            {
                int nextX = (int)_direction.DirectionToVector().x + (int)GridTools.GridPosition(Cubes[moveGroupIndices[i]].transform.position).x;
                int nextY = (int)_direction.DirectionToVector().y + (int)GridTools.GridPosition(Cubes[moveGroupIndices[i]].transform.position).y;

                if (i == 0)
                {
                    minePatternDirection = new List <Direction> {
                        _direction.TurnLeft(), _direction.TurnLeft().TurnRight(), _direction.TurnLeft().TurnRight().TurnLeft()
                    };
                }
                else
                {
                    minePatternDirection = new List <Direction> {
                        _direction.TurnRight(), _direction.TurnRight().TurnLeft(), _direction.TurnRight().TurnLeft().TurnRight()
                    };
                }

                _direction = minePatternDirection[0];
                yield return(StartCoroutine(MoveParts(_direction.FrontMoveGroup(), timeToMove)));

                _direction = minePatternDirection[1];
                yield return(StartCoroutine(MoveParts(_direction.FrontMoveGroup(), timeToMove)));

                yield return(StartCoroutine(MoveParts(_direction.Opposite().FrontMoveGroup(), timeToMove)));

                yield return(StartCoroutine(MoveParts(_direction.FrontMoveGroup(), timeToMove)));

                yield return(new WaitForSeconds(2f));


                Destroy(MyGameManager.StoneInstances[new Vector2(nextX, nextY)]);
                MyGameManager.MyGrid.Cells[nextX, nextY] = 0;

                yield return(StartCoroutine(MoveParts(_direction.Opposite().FrontMoveGroup(), timeToMove)));

                _direction = minePatternDirection[2];
                yield return(StartCoroutine(MoveParts(_direction.Opposite().FrontMoveGroup(), timeToMove)));
            }
        }

        yield return(null);
    }