Ejemplo n.º 1
0
    public void Raycast(Vector3 worldPoint)
    {
        var hit = Physics2D.Raycast(worldPoint, Vector3.zero,
                                    0, _layerMask);

        if (hit.collider != null)
        {
            var checker = hit.collider.GetComponent <Checker>();

            if (checker == null)
            {
                Debug.Log("Checker is not null");

                var move       = _ghosts[hit.collider.gameObject];
                var moveResult = _board.TryMove(_ghosts[hit.collider.gameObject], !move.isKill);

                if (move.isKill)
                {
                    var moves = _grabbedChecker.GetValidMoves(false);

                    _locked = moves.Count > 0;

                    if (!_locked)
                    {
                        ClearAvailableMoves();
                        _board.EndMove();
                    }
                    else
                    {
                        ShowAvailableMoves(moves);
                    }
                }
                else
                {
                    ClearAvailableMoves();
                }

                Debug.Log(moveResult ? "Move was successful" : "Move was NOT successful");
            }
            else if (!_locked)
            {
                _grabbedChecker = checker;

                Debug.Log("Getting valid moves");
                var moves = checker.GetValidMoves(true);
                ShowAvailableMoves(moves);
            }
        }
    }