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()); } }
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; }