using vnxbqy.UI; using System.Collections; using UnityEngine; using UnityEngine.UI; namespace EnhancedUI.EnhancedScroller { public class ChatOtherVoiceCell : ScrollerUI { [SerializeField] AvatarCell avatarCell; [SerializeField] RectTransform m_avatarRect; [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] float spacing = 15.0f; ChatCenter m_ChatCenter; ChatCenter chatCenter { get { return m_ChatCenter ?? (m_ChatCenter = ModelCenter.Instance.GetModel()); } } PhantasmPavilionModel phantasmPavilionModel { get { return ModelCenter.Instance.GetModel(); } } public override void Refresh(CellView cell) { ChatUeseData _data = chatCenter.GetChatData(ChatCtrl.Inst.presentChatType, cell.index) as ChatUeseData; if (_data == null) { return; } m_ChatBubble.DisplayContent(_data.content, true); int bubbleID = phantasmPavilionModel.GetNowOtherChatBubbleID(_data.bubbleId); m_ChatBubble.DisplayBubble(bubbleID); avatarCell.InitUI(AvatarHelper.GetOtherAvatarModel(_data.face, _data.facePic, _data.job)); avatarCell.button.SetListener(() => { ViewPlayer(_data); }); 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_avatarRect.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; } } }