/// <summary>
        /// Handler on owner pointer exit event.
        /// </summary>
        /// <param name="owner">Tooltip owner.</param>
        public static void OnTooltipOwnerExit(TooltipOwnerScript owner)
        {
            DebugEx.VerboseFormat("TooltipAreaScript.OnTooltipOwnerExit(owner = {0})", owner);

            if (sInstance != null)
            {
                sInstance.mNextOwner = null;

                if (sInstance.mCurrentOwner != null)
                {
                    if (sInstance.mCurrentOwner == owner)
                    {
                        sInstance.mTimer.Start(sInstance.OnHideTimeout, HIDE_DELAY);
                    }
                }
                else
                {
                    sInstance.mTimer.Stop();
                }
            }
            else
            {
                DebugEx.Error("There is no TooltipAreaScript instance");
            }
        }
        /// <summary>
        /// Script starting callback.
        /// </summary>
        void Start()
        {
            DebugEx.Verbose("TooltipAreaScript.Start()");

            if (sInstance == null)
            {
                sInstance = this;
            }
            else
            {
                DebugEx.Error("Two instances of TooltipAreaScript not supported");
            }

            mCurrentOwner = null;
            mNextOwner    = null;
            mTimer        = new Timer();
        }
        /// <summary>
        /// Destroies previously created tooltip if present.
        /// </summary>
        private void DestroyTooltip()
        {
            DebugEx.Verbose("TooltipAreaScript.DestroyTooltip()");

            if (transform.childCount > 0)
            {
                if (transform.childCount == 1)
                {
                    UnityEngine.Object.Destroy(transform.GetChild(0).gameObject);
                }
                else
                {
                    DebugEx.Fatal("Unexpected behaviour in TooltipAreaScript.DestroyTooltip()");
                }
            }

            mCurrentOwner = null;
        }
Exemplo n.º 4
0
 /// <summary>
 /// Handler on owner disable event.
 /// </summary>
 /// <param name="owner">Tooltip owner.</param>
 public static void OnTooltipOwnerDisable(TooltipOwnerScript owner)
 {
     if (instance != null)
     {
         if (instance.mCurrentOwner == owner)
         {
             instance.DestroyTooltip();
         }
         else
         if (instance.mNextOwner == owner)
         {
             instance.mNextOwner = null;
             instance.StopTimer();
         }
     }
     else
     {
         Debug.LogError("There is no TooltipAreaScript instance");
     }
 }
        /// <summary>
        /// Handler on owner destroy event.
        /// </summary>
        /// <param name="owner">Tooltip owner.</param>
        public static void OnTooltipOwnerDestroy(TooltipOwnerScript owner)
        {
            DebugEx.VerboseFormat("TooltipAreaScript.OnTooltipOwnerDestroy(owner = {0})", owner);

            if (sInstance != null)
            {
                if (sInstance.mCurrentOwner == owner)
                {
                    sInstance.DestroyTooltip();
                }
                else
                if (sInstance.mNextOwner == owner)
                {
                    sInstance.mNextOwner = null;
                    sInstance.mTimer.Stop();
                }
            }
            else
            {
                DebugEx.Error("There is no TooltipAreaScript instance");
            }
        }
        /// <summary>
        /// Handler on owner pointer enter event.
        /// </summary>
        /// <param name="owner">Tooltip owner.</param>
        public static void OnTooltipOwnerEnter(TooltipOwnerScript owner)
        {
            DebugEx.VerboseFormat("TooltipAreaScript.OnTooltipOwnerEnter(owner = {0})", owner);

            if (sInstance != null)
            {
                if (sInstance.mCurrentOwner != null)
                {
                    if (sInstance.mCurrentOwner == owner)
                    {
                        sInstance.mNextOwner = null;
                        sInstance.mTimer.Stop();
                    }
                    else
                    {
                        sInstance.mNextOwner = owner;

                        if (sInstance.mTimer.active)
                        {
                            sInstance.CreateTooltip();
                            sInstance.mTimer.Stop();
                        }
                        else
                        {
                            sInstance.mTimer.Start(sInstance.OnShowTimeout, SHOW_DELAY);
                        }
                    }
                }
                else
                {
                    sInstance.mNextOwner = owner;
                    sInstance.mTimer.Start(sInstance.OnShowTimeout, SHOW_DELAY);
                }
            }
            else
            {
                DebugEx.Error("There is no TooltipAreaScript instance");
            }
        }
Exemplo n.º 7
0
        /// <summary>
        /// Handler on owner pointer enter event.
        /// </summary>
        /// <param name="owner">Tooltip owner.</param>
        public static void OnTooltipOwnerEnter(TooltipOwnerScript owner)
        {
            if (instance != null)
            {
                if (instance.mCurrentOwner != null)
                {
                    if (instance.mCurrentOwner == owner)
                    {
                        instance.mNextOwner = null;
                        instance.StopTimer();
                    }
                    else
                    {
                        instance.mNextOwner = owner;

                        if (instance.IsTimerActive())
                        {
                            instance.CreateTooltip();
                            instance.StopTimer();
                        }
                        else
                        {
                            instance.StartTimer(SHOW_DELAY, instance.CreateTooltip);
                        }
                    }
                }
                else
                {
                    instance.mNextOwner = owner;
                    instance.StartTimer(SHOW_DELAY, instance.CreateTooltip);
                }
            }
            else
            {
                Debug.LogError("There is no TooltipAreaScript instance");
            }
        }
        /// <summary>
        /// Creates tooltip for current tooltip owner.
        /// </summary>
        private void CreateTooltip()
        {
            DebugEx.Verbose("TooltipAreaScript.CreateTooltip()");

            DestroyTooltip();

            mCurrentOwner = mNextOwner;
            mNextOwner    = null;

            //***************************************************************************
            // Tooltip GameObject
            //***************************************************************************
            #region Tooltip GameObject
            GameObject tooltip = new GameObject("Tooltip");
            Utils.InitUIObject(tooltip, transform);

            //===========================================================================
            // RectTransform Component
            //===========================================================================
            #region RectTransform Component
            RectTransform tooltipTransform = tooltip.AddComponent <RectTransform>();
            #endregion

            //===========================================================================
            // CanvasRenderer Component
            //===========================================================================
            #region CanvasRenderer Component
            tooltip.AddComponent <CanvasRenderer>();
            #endregion

            //===========================================================================
            // Image Component
            //===========================================================================
            #region Image Component
            Image tooltipImage = tooltip.AddComponent <Image>();

            tooltipImage.sprite = Assets.Common.Tooltips.Textures.tooltipBackground.sprite;
            tooltipImage.type   = Image.Type.Sliced;

            Vector4 tooltipBorders = tooltipImage.sprite.border;

            float tooltipBorderLeft   = tooltipBorders.x + 2f;
            float tooltipBorderTop    = tooltipBorders.w + 4f;
            float tooltipBorderRight  = tooltipBorders.y + 2f;
            float tooltipBorderBottom = tooltipBorders.z + 4f;
            #endregion

            //===========================================================================
            // Image CanvasGroup
            //===========================================================================
            #region CanvasGroup Component
            CanvasGroup tooltipCanvasGroup = tooltip.AddComponent <CanvasGroup>();

            tooltipCanvasGroup.blocksRaycasts = false;
            #endregion

            //***************************************************************************
            // TooltipText GameObject
            //***************************************************************************
            #region TooltipText GameObject
            GameObject tooltipTextObject = new GameObject("Text");
            Utils.InitUIObject(tooltipTextObject, tooltip.transform);

            //===========================================================================
            // RectTransform Component
            //===========================================================================
            #region RectTransform Component
            RectTransform tooltipTextTransform = tooltipTextObject.AddComponent <RectTransform>();
            Utils.AlignRectTransformStretchStretch(
                tooltipTextTransform
                , tooltipBorderLeft
                , tooltipBorderTop
                , tooltipBorderRight
                , tooltipBorderBottom
                );
            #endregion

            //===========================================================================
            // Text Component
            //===========================================================================
            #region Text Component
            Text tooltipText = tooltipTextObject.AddComponent <Text>();

            Assets.Common.Tooltips.TextStyles.tooltipText.Apply(tooltipText);

            tooltipText.text = Translator.GetString(mCurrentOwner.tokenId);
            #endregion
            #endregion

            float mouseX = Mouse.scaledX;
            float mouseY = Mouse.scaledY;

            float tooltipWidth = tooltipText.preferredWidth + tooltipBorderLeft + tooltipBorderRight;
            float screenWidth  = Utils.scaledScreenWidth;

            if (tooltipWidth > screenWidth)
            {
                tooltipWidth = screenWidth;
            }

            tooltipTransform.sizeDelta = new Vector2(tooltipWidth, 0f);
            float tooltipHeight = tooltipText.preferredHeight + tooltipBorderTop + tooltipBorderBottom;

            Utils.FitRectTransformToScreen(tooltipTransform, tooltipWidth, tooltipHeight, mouseX, mouseY);
            #endregion
        }
Exemplo n.º 9
0
        /// <summary>
        /// Script starting callback.
        /// </summary>
        void Start()
        {
            if (instance == null)
            {
                instance = this;
            }
            else
            {
                Debug.LogError("Two instances of TooltipAreaScript not supported");
            }

            mCurrentOwner  = null;
            mNextOwner     = null;
            mRemainingTime = TIMER_NOT_ACTIVE;
            mOnTimeout     = null;
        }
Exemplo n.º 10
0
        /// <summary>
        /// Destroies previously created tooltip if present.
        /// </summary>
        private void DestroyTooltip()
        {
            if (transform.childCount > 0)
            {
                if (transform.childCount == 1)
                {
                    UnityEngine.Object.Destroy(transform.GetChild(0).gameObject);
                }
                else
                {
                    Debug.LogError("Unexpected behaviour in TooltipAreaScript.DestroyTooltip");
                }
            }

            mCurrentOwner = null;
        }
Exemplo n.º 11
0
        /// <summary>
        /// Creates tooltip for current tooltip owner.
        /// </summary>
        private void CreateTooltip()
        {
            DestroyTooltip();

            mCurrentOwner = mNextOwner;
            mNextOwner    = null;

            //***************************************************************************
            // Tooltip GameObject
            //***************************************************************************
            #region Tooltip GameObject
            GameObject tooltip = new GameObject("Tooltip");
            Utils.InitUIObject(tooltip, transform);

            //===========================================================================
            // RectTransform Component
            //===========================================================================
            #region RectTransform Component
            RectTransform tooltipTransform = tooltip.AddComponent<RectTransform>();
            #endregion

            //===========================================================================
            // CanvasRenderer Component
            //===========================================================================
            #region CanvasRenderer Component
            tooltip.AddComponent<CanvasRenderer>();
            #endregion

            //===========================================================================
            // Image Component
            //===========================================================================
            #region Image Component
            Image tooltipImage = tooltip.AddComponent<Image>();

            tooltipImage.sprite = Assets.Tooltips.Textures.tooltipBackground;
            tooltipImage.type   = Image.Type.Sliced;

            Vector4 tooltipBorders = tooltipImage.sprite.border;

            float tooltipBorderLeft   = tooltipBorders.x + 2f;
            float tooltipBorderTop    = tooltipBorders.w + 4f;
            float tooltipBorderRight  = tooltipBorders.y + 2f;
            float tooltipBorderBottom = tooltipBorders.z + 4f;
            #endregion

            //===========================================================================
            // Image CanvasGroup
            //===========================================================================
            #region CanvasGroup Component
            CanvasGroup tooltipCanvasGroup = tooltip.AddComponent<CanvasGroup>();

            tooltipCanvasGroup.blocksRaycasts = false;
            #endregion

            //***************************************************************************
            // TooltipText GameObject
            //***************************************************************************
            #region TooltipText GameObject
            GameObject tooltipTextObject = new GameObject("Text");
            Utils.InitUIObject(tooltipTextObject, tooltip.transform);

            //===========================================================================
            // RectTransform Component
            //===========================================================================
            #region RectTransform Component
            RectTransform tooltipTextTransform = tooltipTextObject.AddComponent<RectTransform>();
            Utils.AlignRectTransformStretchStretch(
                                                     tooltipTextTransform
                                                   , tooltipBorderLeft
                                                   , tooltipBorderTop
                                                   , tooltipBorderRight
                                                   , tooltipBorderBottom
                                                  );
            #endregion

            //===========================================================================
            // Text Component
            //===========================================================================
            #region Text Component
            Text tooltipText = tooltipTextObject.AddComponent<Text>();

            tooltipText.font     = Assets.Common.Fonts.microsoftSansSerif;
            tooltipText.fontSize = 11;
            tooltipText.color    = new Color(0f, 0f, 0f, 1f);
            tooltipText.text     = Translator.getString(mCurrentOwner.tokenId);
            #endregion
            #endregion

            Vector3 mousePos = InputControl.mousePosition;

            float tooltipWidth = tooltipText.preferredWidth + tooltipBorderLeft + tooltipBorderRight;
            int   screenWidth  = Screen.width;

            if (tooltipWidth > screenWidth)
            {
                tooltipWidth = screenWidth;
            }

            tooltipTransform.sizeDelta = new Vector2(tooltipWidth, 0f);
            float tooltipHeight = tooltipText.preferredHeight + tooltipBorderTop + tooltipBorderBottom;

            Utils.FitRectTransformToScreen(tooltipTransform, tooltipWidth, tooltipHeight, mousePos.x, -mousePos.y + Screen.height);
            #endregion
        }
Exemplo n.º 12
0
        /// <summary>
        /// Handler on owner pointer exit event.
        /// </summary>
        /// <param name="owner">Tooltip owner.</param>
        public static void OnTooltipOwnerExit(TooltipOwnerScript owner)
        {
            if (instance != null)
            {
                instance.mNextOwner = null;

                if (instance.mCurrentOwner != null)
                {
                    if (instance.mCurrentOwner == owner)
                    {
                        instance.StartTimer(HIDE_DELAY, instance.DestroyTooltip);
                    }
                }
                else
                {
                    instance.StopTimer();
                }
            }
            else
            {
                Debug.LogError("There is no TooltipAreaScript instance");
            }
        }