Exemplo n.º 1
0
        private void CreateSubItem(SChatMessageObjectInfo info, float width, ref float curOffsetX, ref float curOffsetY, List <LineObjCache> curLineObject)
        {
            if (width < 0f || curLineObject == null)
            {
                return;
            }

            ResNode itemPrefab = LogicDataCenter.chatMessageManager.GetChatItemPrefabByObjType(info.type);

            if (itemPrefab == null)
            {
                return;
            }

            GameObject itemObj = itemPrefab.InstanceMainRes();

            if (itemObj == null)
            {
                return;
            }

            IChatItem subItem = itemObj.GetComponent <IChatItem>();

            if (subItem == null)
            {
                itemPrefab.DestroyInstanceRes(ref itemObj);
                return;
            }
            subItem.SetResNode(itemPrefab);
            currChatBoxItem.Add(subItem);
            itemObj.transform.SetParent(this.transform, false);


            if (subItem.SetItemData(info) == false)
            {
                return;
            }

            for (int i = 0; i < 100; ++i)
            {
                IChatItem nextItem;
                subItem.SplitByWidth(width, curOffsetX, out subItem, out nextItem);
                if (subItem != null)
                {
                    curOffsetX += subItem.GetItemWidth();
                    AddLineObject(subItem, curLineObject);
                }

                if (nextItem == null)
                {
                    break;
                }

                AlignLineObject(ref curOffsetX, ref curOffsetY, curLineObject);
                subItem = nextItem;
                currChatBoxItem.Add(subItem);
            }
        }
Exemplo n.º 2
0
        public void OnInputfieldAddItem(ChatBoxAddInputFieldItemData msgData)
        {
            ResNode itemPrefab = LogicDataCenter.chatMessageManager.GetChatItemPrefabByObjType(msgData.objInfo.type);

            if (itemPrefab == null)
            {
                return;
            }

            GameObject itemObj = itemPrefab.InstanceMainRes();

            if (itemObj == null)
            {
                return;
            }

            IChatItem subItem = itemObj.GetComponent <IChatItem>();

            subItem.SetResNode(itemPrefab);

            if (subItem == null)
            {
                itemPrefab.DestroyInstanceRes(ref itemObj);
                return;
            }

            if (subItem.SetItemData(msgData.objInfo) == false)
            {
                itemPrefab.DestroyInstanceRes(ref itemObj);
                return;
            }

            if (msgData.bClearInputField)
            {
                inputField.ClearContent();
            }

            if (msgData.bActiveInputField)
            {
                inputField.ActivateInputField();
            }


            inputField.selectionFocusPosition = inputField.caretPosition;
            inputField.InsertItem(itemObj, subItem, -1);

            // 自动发送
            if (msgData.bAutoSend)
            {
                OnSendBtnClick();
            }
        }