using System.Text.RegularExpressions; using UnityEngine; using UnityEngine.UI; using UnityEngine.Windows; namespace SuperScrollView.AI { public class ChatViewItem : MonoBehaviour { public Text mMsgText; public RectTransform mMsgPicMask; public Image mMsgPic; public Image mIcon; public Image mItemBg; public Image mArrow; public Text mIndexText; int mItemIndex = -1; float mMsgPicScaleX = 0.7f; float mMsgPicScaleY = 0.7f; public int ItemIndex { get { return mItemIndex; } } public void Init() { } public void SetItemData(ChatMsg itemData, int itemIndex) { mIndexText.text = itemIndex.ToString(); PersonInfo person = ChatMsgDataSourceMgr.Get.GetPersonInfo(itemData.mPersonId); mItemIndex = itemIndex; if(itemData.mMsgType == MsgTypeEnum.Str) { mMsgPicMask.gameObject.SetActive(false); mMsgText.gameObject.SetActive(true); mMsgText.text = itemData.mSrtMsg; Vector2 size = mItemBg.GetComponent().sizeDelta; if (System.Text.Encoding.UTF8.GetByteCount(itemData.mSrtMsg) >= 48) { mMsgText.GetComponent().SetLayoutVertical(); size.x = mMsgText.GetComponent().sizeDelta.x + 20; size.y = mMsgText.GetComponent().sizeDelta.y + 34; } else { mMsgText.GetComponent().SetLayoutHorizontal(); size.x = mMsgText.GetComponent().sizeDelta.x + 20; size.y = mMsgText.GetComponent().sizeDelta.y + (Regex.Matches(itemData.mSrtMsg.Trim(), "\r\n|\n|\r").Count + 1) * 34; } mIcon.sprite = person.mHeadIcon; mItemBg.gameObject.SetActive(true); //Vector2 size = mItemBg.GetComponent().sizeDelta; //size.x = mMsgText.GetComponent().sizeDelta.x + 20; //size.y = mMsgText.GetComponent().sizeDelta.y + (Regex.Matches(itemData.mSrtMsg.Trim(), "\r\n|\n|\r").Count + 1) * 34; mItemBg.GetComponent().sizeDelta = size; RectTransform tf = gameObject.GetComponent(); float y = size.y; if (y < 75) { y = 75; } tf.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, y); } else { mMsgPicMask.gameObject.SetActive(true); mMsgText.gameObject.SetActive(false); mMsgPic.sprite = itemData.mPicMsgSprite; float w = mMsgPic.overrideSprite.rect.width; float h = mMsgPic.overrideSprite.rect.height; mMsgPicMask.sizeDelta = new Vector2(w *mMsgPicScaleX, h*mMsgPicScaleY); mIcon.sprite = person.mHeadIcon; mItemBg.gameObject.SetActive(false); Vector2 size = Vector2.zero; size.x = mMsgPicMask.sizeDelta.x + 20; size.y = mMsgPicMask.sizeDelta.y + 20; RectTransform tf = gameObject.GetComponent(); float y = size.y; if (y < 75) { y = 75; } tf.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, y); } } } }