using Snxxz.UI;  
 | 
using System.Collections;  
 | 
using System.Collections.Generic;  
 | 
using UnityEngine;  
 | 
using UnityEngine.UI;  
 | 
  
 | 
namespace EnhancedUI.EnhancedScroller  
 | 
{  
 | 
    public class ChatOtherVoiceCell : ScrollerUI  
 | 
    {  
 | 
        [SerializeField] Text m_VoiceTimes;  
 | 
        [SerializeField] Button m_Voice;  
 | 
        [SerializeField] ChatBubbleBehaviour m_ChatBubble;  
 | 
        [SerializeField] Text m_VipLevel;  
 | 
        [SerializeField] Text m_PlayerName;  
 | 
        [SerializeField] Text m_ChatTime;  
 | 
        [SerializeField] Image m_ChatIcon;  
 | 
        [SerializeField] Button m_Func;  
 | 
        [SerializeField] float spacing = 15.0f;  
 | 
  
 | 
        ChatCenter m_ChatCenter;  
 | 
        ChatCenter chatCenter  
 | 
        {  
 | 
            get  
 | 
            {  
 | 
                return m_ChatCenter ?? (m_ChatCenter = ModelCenter.Instance.GetModel<ChatCenter>());  
 | 
            }  
 | 
        }  
 | 
        public override void Refresh(CellView cell)  
 | 
        {  
 | 
            m_Func.RemoveAllListeners();  
 | 
            ChatUeseData _data = chatCenter.GetChatData(ChatCtrl.Inst.presentChatType, cell.index) as ChatUeseData;  
 | 
            if (_data == null)  
 | 
            {  
 | 
                return;  
 | 
            }  
 | 
            m_Func.onClick.AddListener(() =>  
 | 
            {  
 | 
                ViewPlayer(_data);  
 | 
            });  
 | 
            m_ChatBubble.DisplayContent(_data.content, true);  
 | 
            m_ChatBubble.DisplayBubble(_data.bubbleId);  
 | 
            m_ChatIcon.SetSprite(GeneralDefine.GetJobHeadPortrait(_data.job, 0));  
 | 
            m_PlayerName.text = _data.name;  
 | 
            m_ChatTime.text = _data.createTime.ToString("yyyy-MM-dd HH:mm");  
 | 
            if (_data.vipLv > 0)  
 | 
            {  
 | 
                m_VipLevel.text = "VIP";//string.Format("V{0}", _data.vipLv);  
 | 
            }  
 | 
            else  
 | 
            {  
 | 
                m_VipLevel.text = string.Empty;  
 | 
            }  
 | 
            m_Voice.onClick.RemoveAllListeners();  
 | 
            m_VoiceTimes.text = _data.soundLength.ToString("0.0");  
 | 
            m_Voice.onClick.AddListener(() =>  
 | 
            {  
 | 
                OnVoiceClick(_data, Mathf.Min(8.0f, _data.soundLength));  
 | 
            });  
 | 
        }  
 | 
  
 | 
        private void OnVoiceClick(ChatUeseData _chat, float _length)  
 | 
        {  
 | 
            if (_chat != null)  
 | 
            {  
 | 
                chatCenter.PlaySpeech(_chat.player, _chat.soundTick, _length);  
 | 
            }  
 | 
        }  
 | 
  
 | 
        void ViewPlayer(ChatUeseData _chat)  
 | 
        {  
 | 
            ChatUeseData user = _chat as ChatUeseData;  
 | 
            if (user.player == PlayerDatas.Instance.baseData.PlayerID)  
 | 
            {  
 | 
                return;  
 | 
            }  
 | 
            if (user.serverGroupId == 0 || user.serverGroupId == PlayerDatas.Instance.baseData.ServerGroupId)  
 | 
            {  
 | 
                PlayerDetails.ShowPlayerDetails(user.player, null);  
 | 
            }  
 | 
            else  
 | 
            {  
 | 
                PlayerDetails.ShowCrossServerChatPlayer(user);  
 | 
            }  
 | 
        }  
 | 
  
 | 
        public float GetHeight(string content, ArrayList list)  
 | 
        {  
 | 
            var minHeight = m_ChatIcon.rectTransform.sizeDelta.y;  
 | 
            var chatHeight = m_ChatBubble.GetBubbleHeight(content, list) + Mathf.Abs(m_ChatBubble.transform.localPosition.y);  
 | 
            if (string.IsNullOrEmpty(content))  
 | 
            {  
 | 
                chatHeight = 0;  
 | 
            }  
 | 
            return (chatHeight > minHeight ? chatHeight : minHeight) + spacing;  
 | 
        }  
 | 
    }  
 | 
}  
 | 
  
 |