using Snxxz.UI; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace EnhancedUI.EnhancedScroller { public class ChatMineVoiceCell : ScrollerUI { [SerializeField] Text m_VoiceTxt; [SerializeField] Button m_VoiceBtn; [SerializeField] RichText m_ChatTxt; [SerializeField] Image m_ChatBubble; [SerializeField] Text vipText; [SerializeField] Text playerNameText; [SerializeField] Image m_ChatIcon; [SerializeField] ImageFitterText m_Fitter; ChatCenter m_ChatCenter; ChatCenter chatCenter { get { return m_ChatCenter ?? (m_ChatCenter = ModelCenter.Instance.GetModel()); } } public override void Refresh(CellView cell) { ChatUeseData _data = chatCenter.GetChatData(ChatCtrl.Inst.presentChatType, cell.index) as ChatUeseData; if (_data == null) { return; } #region 更新高度 m_ChatTxt.AutoNewLine = false; m_ChatTxt.text = _data.content; if (m_ChatTxt.preferredWidth > m_ChatTxt.rectTransform.rect.width) { m_ChatTxt.alignment = TextAnchor.UpperLeft; } else { m_ChatTxt.alignment = TextAnchor.UpperRight; } m_Fitter.FiterRealTxtWidth = m_ChatTxt.alignment == TextAnchor.UpperRight; m_Fitter.gameObject.SetActive(!string.IsNullOrEmpty(_data.content)); m_ChatTxt.AutoNewLine = true; #endregion m_ChatIcon.SetSprite(GeneralConfig.Instance.GetJobHeadPortrait(_data.job, 0)); playerNameText.text = _data.name; if (_data.vipLv > 0) { vipText.text = string.Format("V{0}", _data.vipLv); } else { vipText.text = string.Empty; } m_VoiceBtn.onClick.RemoveAllListeners(); m_VoiceTxt.text = _data.soundLength.ToString("0.0"); m_VoiceBtn.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); } } } }