Beispiel #1
0
    public void Show(string message, RectTransform rectTransform, TooltipAnchorPosition anchorPosition)
    {
        if (rectTransform == null)
        {
            return;
        }

        resizerText.text = message;

        switch (State)
        {
        case TooltipState.HIDDEN:

            State = TooltipState.WAITING_FOR_DISPLAY;

            break;

        case TooltipState.FADING_OUT:

            State = TooltipState.FADING_IN;

            break;
        }

        StartCoroutine(waitForAndOfAFrameAndReposition(rectTransform, anchorPosition));
    }
Beispiel #2
0
    private void Update()
    {
        switch (State)
        {
        case TooltipState.FADING_IN:

        {
            float newAlpha = canvasGroup.alpha + showRate * Time.deltaTime;

            if (newAlpha >= 1f)
            {
                State = TooltipState.VISIBLE;
            }

            canvasGroup.alpha = newAlpha;
        }

        break;

        case TooltipState.FADING_OUT:

        {
            float newAlpha = canvasGroup.alpha - showRate * Time.deltaTime;

            if (newAlpha <= 0f)
            {
                State = TooltipState.HIDDEN;
            }

            canvasGroup.alpha = newAlpha;
        }

        break;

        case TooltipState.HIDDEN:

            break;

        case TooltipState.VISIBLE:

            break;

        case TooltipState.WAITING_FOR_DISPLAY:

            timer += Time.deltaTime;

            if (timer >= waitTime)
            {
                timer = 0;
                State = TooltipState.FADING_IN;
            }

            break;
        }
    }
Beispiel #3
0
 private void Awake()
 {
     if (Instance != null)
     {
         Destroy(this.gameObject);
     }
     else
     {
         Instance = this;
         State    = TooltipState.HIDDEN;
     }
 }
Beispiel #4
0
        /// <summary>
        ///     呼叫狀態處理含式
        /// </summary>
        /// <param name="anotherState">狀態</param>
        /// <param name="anotherEvent">事件類別</param>
        /// <param name="mouseEvent">滑鼠事件</param>
        /// <returns>回傳下一個狀態</returns>
        public TooltipState CallTransitionFunction(TooltipState anotherState, TooltipEvent anotherEvent,
                                                   MouseEvent mouseEvent)
        {
            // 取得狀態轉移函式
            if (!this.TransitionFunctions.TryGetValue(anotherState, out var transitionFunction))
            {
                throw new UnexpectedStateException();
            }

            // 呼叫狀態轉移函式
            var nextState = transitionFunction.HandledEvent(anotherEvent, mouseEvent);

            return(nextState);
        }
Beispiel #5
0
        /// <summary>
        ///     轉移至新狀態
        /// </summary>
        /// <param name="newState">新狀態</param>
        /// <returns>移轉後的狀態</returns>
        public TooltipState StateTransition(TooltipState newState)
        {
            // 狀態相同,不移轉
            if (newState == this.CurrentState)
            {
                return(this.CurrentState);
            }

            // 取得新狀態的狀態轉移函式
            if (!this.TransitionFunctions.TryGetValue(newState, out this.CurrentTransitionFunction))
            {
                throw new UnexpectedStateException();
            }

            this.CurrentState = newState;

            return(this.CurrentState);
        }
Beispiel #6
0
        public override void Process(TagHelperContext context, TagHelperOutput output)
        {
            if (!String.IsNullOrWhiteSpace(Tooltip))
            {
                output.Attributes.RemoveAll("tooltip");

                output.Attributes.Add("data-toggle", "kt-tooltip");

                output.Attributes.Add("data-original-title", Tooltip);

                output.Attributes.Add("data-container", "body");

                output.Attributes.Add("data-html", "true");

                if (TooltipState.IsUsed())
                {
                    output.Attributes.RemoveAll("tooltip-skin");

                    output.Attributes.Add("data-skin", TooltipState.ToValue());
                }

                if (TooltipPlacement.IsUsed())
                {
                    output.Attributes.RemoveAll("tooltip-placement");

                    output.Attributes.Add("data-placement", TooltipPlacement.ToValue());
                }

                if (TooltipTrigger.IsUsed())
                {
                    output.Attributes.RemoveAll("tooltip-trigger");

                    output.Attributes.Add("data-trigger", TooltipTrigger.ToValue());
                }

                if (TooltipOffset != default)
                {
                    output.Attributes.RemoveAll("tooltip-offset");

                    output.Attributes.Add("data-offset", $"{TooltipOffset.Item1}px {TooltipOffset.Item2}px");
                }
            }
        }
Beispiel #7
0
    public void Hide()
    {
        switch (State)
        {
        case TooltipState.VISIBLE:
        case TooltipState.FADING_IN:

            State = TooltipState.FADING_OUT;

            break;

        case TooltipState.WAITING_FOR_DISPLAY:

            State = TooltipState.HIDDEN;
            timer = 0f;

            break;
        }
    }