public static Sequence CreateSequence(this Transform transform,
                                          Vector3 value,
                                          float duration              = 0.05f,
                                          int vibrato                 = 2,
                                          float elasticity            = 0.5f,
                                          int loop                    = 1,
                                          Ease ease                   = Ease.OutQuad,
                                          ESequenceType eSequenceType = ESequenceType.PunchScale,
                                          Action onStart              = null,
                                          Action onError              = null)
    {
        var sequence = DOTween.Sequence();

        try
        {
            switch (eSequenceType)
            {
            case ESequenceType.Scale:
                sequence.Append(transform.DOScale(value, duration)).SetEase(ease);
                break;

            case ESequenceType.PunchScale:
                sequence.Append(transform.DOPunchScale(value, duration, vibrato, elasticity)).SetEase(ease);
                break;

            case ESequenceType.PunchPosition:
                sequence.Append(transform.DOPunchPosition(value, duration, vibrato, elasticity)).SetEase(ease);
                break;

            case ESequenceType.Move:
                sequence.Append(transform.DOMove(value, duration)).SetEase(ease);
                break;

            case ESequenceType.LocalMove:
                sequence.Append(transform.DOLocalMove(value, duration)).SetEase(ease);
                break;

            default:
                sequence.Append(transform.DOScale(value, duration)).SetEase(ease);
                break;
            }

            sequence.SetLoops(loop);
            sequence.SetRelative(false);

            sequence.OnPlay(() => { onStart?.Invoke(); });
        }
        catch (Exception)
        {
            onError?.Invoke();
        }

        return(sequence);
    }
Ejemplo n.º 2
0
    private IEnumerator OnSequenceCompleted(List <SequencePipe> orderedPipes, ESequenceType sResult)
    {
        // count points, remove pipes from sequence
        long points     = 0;
        int  multiplyer = (int)sResult;

        for (int i = 1; i <= SIZE; ++i)
        {
            points      += _sequence[i].Param * multiplyer;
            _sequence[i] = null;
        }
        // fly pipes to center and explode
        for (int i = 0; i < orderedPipes.Count; ++i)
        {
            orderedPipes[i].OnSequenceAnimation(SIZE - 1 - i);
        }
        yield return(new WaitForSeconds(Consts.PIPES_ON_SEQUENCE_ANIMATION_TIME));

        // shake screen
        GameManager.Instance.Game.ShakeCamera(Consts.SHAKE_POWER_ON_SEQUENCE, Consts.SHAKE_POWER_ON_SEQUENCE, Consts.SHAKE_TIME_ON_SEQUENCE);
        // show popup with points
        GameObject popupObj = (GameObject)GameObject.Instantiate(SequenceCompletePopupPrefab, Vector3.zero, Quaternion.identity);

        popupObj.transform.SetParent(transform, false);
        popupObj.transform.localPosition = new Vector3(0, 52, 0);
        popupObj.GetComponent <Canvas>().overrideSorting = true;
        Transform textsContainer = popupObj.transform.Find("Container");
        Text      typeText       = textsContainer.Find("Text0").GetComponent <Text>();

        typeText.text = Localer.GetText(sResult.ToString());
        Text pointsText = textsContainer.Find("Text1").GetComponent <Text>();

        pointsText.text = Localer.GetText(points.ToString());
        GameObject.Destroy(popupObj, 5.0f);
        // add points
        GameManager.Instance.Game.AddPointsForSequence(points);
        //
        yield return(null);
    }
    public static Sequence CreateSequence(this Image image,
                                          float value,
                                          float duration = 0.5f,
                                          int loop       = 1,
                                          Ease ease      = Ease.Linear,
                                          ESequenceType eSequenceType = ESequenceType.Fade,
                                          Action onStart = null,
                                          Action onError = null)
    {
        var sequence = DOTween.Sequence();

        try
        {
            // ReSharper disable once SwitchStatementMissingSomeCases
            switch (eSequenceType)
            {
            case ESequenceType.Fade:
                sequence.Append(image.DOFade(value, duration)).SetEase(ease);
                break;

            case ESequenceType.FillAmount:
                sequence.Append(image.DOFillAmount(value, duration)).SetEase(ease);
                break;
            }

            sequence.SetLoops(loop);
            sequence.SetRelative(false);

            sequence.OnPlay(() => { onStart?.Invoke(); });
        }
        catch (Exception)
        {
            onError?.Invoke();
        }

        return(sequence);
    }