Example #1
0
        void Start()
        {
            _initialized = true;

            _isRadioButton = _toggleGroupid != "";

            List <IHOtk2dBase> childrenSprites = null;
            bool hasChildrenToTween            = false;
            bool hasTextMeshesToTween          = false;

            if (_tweenChildren && _tweenColorOn != ButtonActionType.None)
            {
                Component[] children = gameObject.GetComponentsInChildren(typeof(IHOtk2dBase));
                childrenSprites = new List <IHOtk2dBase>();
                foreach (Component child in children)
                {
                    if (child == sprite)
                    {
                        continue;
                    }
                    childrenSprites.Add(child as IHOtk2dBase);
                    IHOtk2dTextMesh txtMesh = child as IHOtk2dTextMesh;
                    if (txtMesh != null)
                    {
                        _txtMeshesToUpdate.Add(txtMesh);
                    }
                }
                hasChildrenToTween   = childrenSprites.Count > 0;
                hasTextMeshesToTween = _txtMeshesToUpdate.Count > 0;
            }

            // Hide eventual tooltip
            if (_tooltip != null)
            {
                _tooltip.SetActive(false);
                _showTooltip = true;
            }

            // Create tweens
            TweenParms seqParms = new TweenParms();

            if (hasRollover)
            {
                seqParms.Clear()
                .SetUpdate(true)
                .SetAutoKill(false);
                if (hasTextMeshesToTween)
                {
                    seqParms.OnUpdate(UpdateTextMeshes);
                }
                _rolloutTween = DOTween.Sequence().SetAs(seqParms)
                                .OnKill(() => _rolloutTween = null)
                                .Pause();
                if (_tweenScaleOn == ButtonActionType.OnRollover)
                {
                    _rolloutTween.Insert(0, trans.DOScaleFrom(trans.localScale * _tweenScaleMultiplier, _TweenDuration));
                }
                if (_tweenColorOn == ButtonActionType.OnRollover)
                {
                    _rolloutTween.Insert(0, DOTween.From(() => sprite.color, x => sprite.color = x, _tweenColor, _TweenDuration));
                    if (hasChildrenToTween)
                    {
                        foreach (IHOtk2dBase childSprite in childrenSprites)
                        {
                            IHOtk2dBase s = childSprite;
                            _rolloutTween.Insert(0, DOTween.From(() => s.color, x => s.color = x, _tweenColor, _TweenDuration));
                        }
                    }
                }
                _rolloutTween.Complete();
            }
            if (_tweenColorOn == ButtonActionType.OnPress || _tweenScaleOn == ButtonActionType.OnPress)
            {
                seqParms = seqParms.Clear()
                           .SetUpdate(true)
                           .SetAutoKill(false);
                if (hasTextMeshesToTween)
                {
                    seqParms.OnUpdate(UpdateTextMeshes);
                }
                _unpressTween = DOTween.Sequence().SetAs(seqParms)
                                .OnKill(() => _unpressTween = null)
                                .Pause();
                if (_tweenScaleOn == ButtonActionType.OnPress)
                {
                    _unpressTween.Insert(0, trans.DOScaleFrom(trans.localScale * _tweenScaleMultiplier, _TweenDuration));
                }
                if (_tweenColorOn == ButtonActionType.OnPress)
                {
                    _unpressTween.Insert(0, DOTween.From(() => sprite.color, x => sprite.color = x, _tweenColor, _TweenDuration));
                    if (hasChildrenToTween)
                    {
                        foreach (IHOtk2dBase childSprite in childrenSprites)
                        {
                            IHOtk2dBase s = childSprite;
                            _rolloutTween.Insert(0, DOTween.From(() => s.color, x => s.color = x, _tweenColor, _TweenDuration));
                        }
                    }
                }
                _unpressTween.Complete();
            }
            if (_tweenColorOn == ButtonActionType.OnClick || _tweenScaleOn == ButtonActionType.OnClick)
            {
                seqParms = seqParms.Clear()
                           .SetUpdate(true)
                           .SetAutoKill(false);
                if (hasTextMeshesToTween)
                {
                    seqParms.OnUpdate(UpdateTextMeshes);
                }
                _unclickTween = DOTween.Sequence().SetAs(seqParms)
                                .OnKill(() => _unclickTween = null)
                                .Pause();
                if (_tweenScaleOn == ButtonActionType.OnClick)
                {
                    _unclickTween.Insert(0.15f, trans.DOScaleFrom(trans.localScale * _tweenScaleMultiplier, _TweenDuration));
                }
                if (_tweenColorOn == ButtonActionType.OnClick)
                {
                    _unclickTween.Insert(0.15f, DOTween.From(() => sprite.color, x => sprite.color = x, _tweenColor, _TweenDuration));
                    if (hasChildrenToTween)
                    {
                        foreach (IHOtk2dBase childSprite in childrenSprites)
                        {
                            IHOtk2dBase s = childSprite;
                            _rolloutTween.Insert(0, DOTween.From(() => s.color, x => s.color = x, _tweenColor, _TweenDuration));
                        }
                    }
                }
                _unclickTween.Complete();
            }

            // Execute eventual cued actions
            if (_preinitActionsQueue != null)
            {
                foreach (PreinitActionType visualActionType in _preinitActionsQueue)
                {
                    switch (visualActionType)
                    {
                    case PreinitActionType.ToggleOn:
                        ToggleOn();
                        break;

                    case PreinitActionType.ToggleOnWithoutEventDispatching:
                        ToggleOn(false);
                        break;

                    case PreinitActionType.ToggleOff:
                        ToggleOff();
                        break;

                    case PreinitActionType.ToggleOffWithoutEventDispatching:
                        ToggleOff(false);
                        break;
                    }
                }
            }
        }