using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace vnxbqy.UI { public class ChatFaceItemCell : CellView { [SerializeField] List imgFaceList; [SerializeField] HorizontalLayoutGroup horizontalLayoutGroup; [SerializeField] RectTransform rectTransform; int rowIndex; PhantasmPavilionModel model { get { return ModelCenter.Instance.GetModel(); } } ChatCenter chatCenter { get { return ModelCenter.Instance.GetModel(); } } public void Display(int rowIndex) { this.rowIndex = rowIndex; int id = model.selectEmojiPackID; model.GetShowEmojiInfo(this.rectTransform.rect.width, id, out int rowCount, out int emojiCount, out int space); model.GetEmojiShowSize(id, out int emojiWidth, out int emojiHeight); rectTransform.sizeDelta = new Vector2(rectTransform.sizeDelta.x, emojiHeight); horizontalLayoutGroup.spacing = space; List emojiList = model.GetEmojiList(id); for (int i = 0; i < model.MaxEmojiCount; i++) { if (i < emojiCount) { imgFaceList[i].rectTransform.sizeDelta = new Vector2(emojiWidth, emojiHeight); int index = rowIndex * emojiCount + i; if (index < emojiList.Count) { string name = emojiList[index]; imgFaceList[i].SetActive(true); if (!FaceConfig.Has(name)) continue; FaceConfig config = FaceConfig.Get(name); UIFrame frame = imgFaceList[i].GetComponent(); if (UIFrameMgr.Inst.ContainsDynamicImage(config.name)) { if (frame == null) frame = imgFaceList[i].gameObject.AddComponent(); frame.ResetFrame(config.name); frame.enabled = true; } else { if (frame != null) frame.enabled = false; imgFaceList[i].SetSprite(config.name); } ButtonEx buttonEx = imgFaceList[i].GetComponent(); if (buttonEx != null) { buttonEx.SetListener(() => OnFaceClick(name)); } } else { imgFaceList[i].SetActive(false); } } else { imgFaceList[i].SetActive(false); } } } private void OnFaceClick(string index) { List emojiList = model.GetEmojiList(model.selectEmojiPackID); if (!FaceConfig.Has(index)) return; FaceConfig config = FaceConfig.Get(index); if (config.EmojiPackID == 1) { if (chatCenter.chatInputLength + 5 > chatCenter.chatCharacterLimit) { return; } string facename = config.name; if (facename.Length == 1) { facename = "00" + facename; } else if (facename.Length == 2) { facename = "0" + facename; } chatCenter.ChangeChatValue(string.Format("#~{0}", facename), true, true); } else { string msg = config.name; if (msg.Length == 1) { msg = "00" + msg; } else if (msg.Length == 2) { msg = "0" + msg; } //ChatCtrl.Inst.SendChatInfo(ChatCtrl.Inst.presentChatType, string.Format("#~{0}", msg)); model.SendChatAction?.Invoke(string.Format("#~{0}", msg)); } } } }