示例#1
0
        public void PopHp(int tag, Transform trans, int hpType, int hp)
        {
            BubbleInfo info   = new BubbleInfo(hp.ToString(), 0f, textColor[hpType]);
            InfoQueue  iqueue = PushBubbleInfo(tag, 2, info);

            iqueue.Follow(trans);
        }
示例#2
0
        void SetupWriter(BubbleInfo info)
        {
            m_CurrentCharacters  = info.Text.ToCharArray();
            m_CurrentText        = info.Text;
            m_AlternateDelay     = 0.0f;
            m_WriteTimer         = 0.0f;
            m_TextCharacterIndex = 0;

            m_FadeValues.Clear();

            m_IsTextInstant = m_TypesToInstantWrite.Contains(info.Type);
            m_IsTextFading  = info.Type == Type.Think;
            m_WritingText   = !m_IsTextInstant && m_CurrentText.Length > 0;

            if (m_IsTextInstant)
            {
                m_AlternateDelay = k_MinWaitTimePerCharacter * m_CurrentCharacters.Length;
                m_CurrentSpeechBubble.Text.text = m_CurrentText;
            }
            else
            {
                // Add rich text alpha tag for text to start invisible.
                m_CurrentSpeechBubble.Text.text = k_TextAlpha + m_CurrentText;
            }
        }
示例#3
0
 public void Push(BubbleInfo info)
 {
     if (!item.isEmpty && !item.isPush)
     {
         return;
     }
     queue.Enqueue(info);
 }
示例#4
0
        public IEnumerator Load(string fileName)
        {
            RemoveChatBubble();
            //yield return new WaitForEndOfFrame();
            ObjectWrapper ow = new ObjectWrapper();

            yield return(ResourceLoader.Instance.StartCoroutine(ObjCachePoolMgr.Instance.LoadPrefab(fileName, ObjCachePoolType.UI_PREFAB, fileName, ow)));

            GameObject bubbleGO = ow.obj as GameObject;

            if (bubbleGO == null)
            {
                //Debug.Log("UIChatBubbleWidget bubbleGO null ");
                yield break;
            }
            RectTransform rect = bubbleGO.GetComponent <RectTransform>();

            if (rect == null)
            {
                //Debug.Log("UIChatBubbleWidget bubbleGO rect ");
                yield break;
            }
            GameObject.DontDestroyOnLoad(bubbleGO);
            if (this == null || gameObject == null || transform == null || fileName != mShowingFileName)
            {
                //Debug.Log("UIChatBubbleWidget bubbleGO return ");
                ObjCachePoolMgr.Instance.RecyclePrefab(bubbleGO, ObjCachePoolType.UI_PREFAB, fileName);
                yield break;
            }

            RemoveChatBubble();

            rect.SetParent(transform);
            rect.SetAsFirstSibling();
            //美术资源制作要复合规格
            rect.localScale         = Vector3.one;
            rect.anchoredPosition3D = Vector3.zero;
            rect.sizeDelta          = Vector2.zero;



            LayoutElement layout = bubbleGO.GetComponent <LayoutElement>();

            if (layout == null)
            {
                layout = bubbleGO.AddComponent <LayoutElement>();
            }
            layout.ignoreLayout = true;

            mShowingInfo = new BubbleInfo(fileName, bubbleGO);
            //mDefaultImage.enabled = false;
            SetDefaultImageEnabled(false);

            UpdateFlip();
            StopLoadCoroutine();
        }
示例#5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="tag">用于建立队列索引,弹出的内容会顶同一个索引队列,只有一个队列,填0</param>
        /// <param name="kindIdx">弹出类型</param>
        /// <param name="txt"></param>
        /// <param name="duration"></param>
        public void Bubble(int tag, int kindIdx, string txt, float duration)
        {
            if (kindIdx < 0 || kindIdx >= kindItems.Count)
            {
                return;
            }
            BubbleInfo info = new BubbleInfo(txt, duration);

            PushBubbleInfo(tag, kindIdx, info);
        }
示例#6
0
    public void AddBubble(string str, Vector3 pos, Bubble.BubbleType type, bool bSelf)
    {
        BubbleInfo info = new BubbleInfo();

        info.str   = str;
        info.pos   = pos;
        info.type  = type;
        info.bSelf = bSelf;
        lstBubbleInfo.Add(info);
    }
示例#7
0
        public void Bubble(int tag, int kindIdx, Transform trans, string txt, float duration)
        {
            if (kindIdx < 0 || kindIdx >= kindItems.Count)
            {
                return;
            }
            BubbleInfo info   = new BubbleInfo(txt, duration);
            InfoQueue  iqueue = PushBubbleInfo(tag, kindIdx, info);

            iqueue.Follow(trans);
        }
示例#8
0
        public void RemoveChatBubble()
        {
            SetDefaultImageEnabled(true);

            if (mShowingInfo == null)
            {
                return;
            }
            ObjCachePoolMgr.Instance.RecyclePrefab(mShowingInfo.mBubbleObject, ObjCachePoolType.UI_PREFAB, mShowingInfo.mFileName);
            mShowingInfo = null;

            //Debug.Log("UIChatBubbleWidget RemoveChatBubble ");
        }
示例#9
0
 void UpdateLoadBubble()
 {
     if (lstBubbleInfo.Count > 0)
     {
         BubbleInfo info = lstBubbleInfo[0];
         lstBubbleInfo.RemoveAt(0);
         Bubble bubble = Load(info.str, info.pos, info.type, info.bSelf);
         if (bubble)
         {
             bubble.OwnerID = bubble.GetInstanceID();
             AddBubble(bubble);
         }
     }
 }
示例#10
0
        private InfoQueue PushBubbleInfo(int tag, int kindIdx, BubbleInfo info)
        {
            long      key     = GetKey(tag, kindIdx);
            InfoQueue infoQue = null;

            if (waitings.ContainsKey(key))
            {
                infoQue = waitings[key];
            }
            else
            {
                infoQue        = new InfoQueue();
                infoQue.ItemGo = kindItems[kindIdx].CachedGo;
                waitings.Add(key, infoQue);
            }
            infoQue.Push(info);
            return(infoQue);
        }
示例#11
0
 public bool CheckPop(float curTime)
 {
     if (queue.Count > 0)
     {
         if (nextTime <= curTime)
         {
             nextTime = curTime + item.period;
             BubbleInfo info = queue.Dequeue();
             info.Bubble(item);
         }
         return(false);
     }
     else
     {
         //if(delTime<curTime)
         if (item.isEmpty)
         {
             ReleaseItem();
             return(true);
         }
         return(false);
     }
 }