예제 #1
0
 void _ToggleArrow(Cell cell, Direction dir)
 {
     if (cell.ToggleArrow(dir))
     {
         playerCursor.AddAndExpireArrows(cell);
     }
     else
     {
         playerCursor.RemoveArrow(cell);
     }
 }
예제 #2
0
        IEnumerator Play()
        {
            done = false;

            while (!done)
            {
                var size = board.boardDesc.size;

                Cell cell;
                if (Cell.CellsBeingWalkedOn.Count > 0 && Random.value > 0.2f)
                {
                    cell = Cell.CellsBeingWalkedOn.ElementAt(Random.Range(0, Cell.CellsBeingWalkedOn.Count));
                }
                else
                {
                    cell = board.CellAtCoord(new Vector2Int(Random.Range(0, size.x), Random.Range(0, size.y)));
                }

                var screenPt = Camera.main.WorldToScreenPoint(cell.GetSurfaceCenter());
                targetScreenPos = screenPt;

                yield return(RandomDelay(1.0f, 2.0f));

                if (cell.IsEmpty())
                {
                    playerCursor.VisualClick();

                    var toHomebase = homebase.transform.position - cell.transform.position;
                    toHomebase.y = 0;

                    var dirToHomebase = NearestDirection(toHomebase.normalized);

                    //var dir = Cell.RandomDirection();
                    var dir = dirToHomebase;

                    if (cell.ToggleArrow(dir, PlayerIndex))
                    {
                        playerCursor.AddAndExpireArrows(cell);
                    }
                }

                yield return(RandomDelay(0.2f, 0.5f));
            }

            coro = null;
        }