Exemplo n.º 1
0
    public void AddRemoveToken(bool add)
    {
        if (!add && !_onlyMoveOnActivate)
        {
            GameController.Instance.SetTimerPlay(false);
        }
        if (!_onlyMoveOnActivate && _timerRoutine != null)
        {
            StopCoroutine(_timerRoutine);
        }
        if (!_onlyMoveOnActivate || _moveRoutine == null)
        {
            HasToken = add;
            _token.transform.DOKill();
            _token.transform.DOScale(add ? 0.25f : 0f, 0.5f);
            TokenAddRemove?.Invoke(add);
        }
        if (add && _timer > 0f)
        {
            _timerRoutine = StartCoroutine(TokenTimer());
        }

        if (add && _onlyMoveOnActivate)
        {
            _moveRoutine = StartCoroutine(MoveLoop());
        }
    }
Exemplo n.º 2
0
    private IEnumerator MoveLoop()
    {
        var home = transform.position;

        while (true)
        {
            if (!_onlyMoveOnActivate)
            {
                yield return(new WaitForSeconds(3f));
            }
            IsMoving = true;
            yield return(transform.DOMove(_endPosition.position, 5f).SetSpeedBased().WaitForCompletion());

            IsMoving = false;
            yield return(new WaitForSeconds(3f));

            IsMoving = true;
            yield return(transform.DOMove(home, 5f).SetSpeedBased().WaitForCompletion());

            IsMoving = false;
            if (_onlyMoveOnActivate)
            {
                HasToken = false;
                _token.transform.DOKill();
                _token.transform.DOScale(0f, 0.5f);
                TokenAddRemove?.Invoke(false);
                GameController.Instance.SetTimerPlay(false);
                break;
            }
        }

        _moveRoutine = null;
    }