コード例 #1
0
    private void CreateVoiceLabel(CharInfoNode node)
    {
        //var objres = ResourceManager.PrepareResourceSync<GameObject>("UI/ChatMain/ChatVoiceCell.prefab");
        //var obj = Instantiate(objres) as GameObject;
        var obj = ComplexObjectPool.NewObjectSync("UI/ChatMain/ChatVoiceCell.prefab");

        if (obj == null)
        {
            return;
        }
        mVoiceCell = obj.GetComponent <ChatVoiceCellLogic>();
        if (mVoiceCell == null)
        {
            return;
        }
        mVoiceCell.SetChatInfo(FontSize, mChatMessageData.Seconds, MaxLineWidth);
        //mVoiceCell.ChatMessageData = mChatMessageData;
        mVoiceCell.Seconds   = mChatMessageData.Seconds;
        mVoiceCell.SoundData = mChatMessageData.SoundData;
        var objTransform = obj.transform;

        //objTransform.parent = BackGround.transform;
        objTransform.SetParentEX(BackGround.transform);
        obj.SetActive(true);
        objTransform.localScale    = Vector3.one;
        objTransform.localPosition = new Vector3(mPositionX, mPositionY, 0);

        mTotalLength = MaxLineWidth;
        mPositionX   = 10;
        AddVoiceLabel();
    }
コード例 #2
0
        public void AddChatNode(bool checkSensitive, string str)
        {
            ChatInfoNodeData data = null;

            try
            {
                var bytes     = Convert.FromBase64String(str);
                var unwrapped = LZ4Codec.Decode32(bytes, 0, bytes.Length, decodeBuffer, 0, decodeBuffer.Length, false);
                using (var ms = new MemoryStream(decodeBuffer, 0, unwrapped, false))
                {
                    data = Serializer.Deserialize <ChatInfoNodeData>(ms);
                }
            }
            catch (Exception)
            {
                // ignored
            }

            if (data == null)
            {
                ChatNodeList.Add(new CharInfoNode(checkSensitive, str));
                return;
            }
            if (data.Type == (int)eChatLinkType.Dictionary)
            {
                //AnalyseDictionaryNode(data);
                return;
            }
            var infoNode = new CharInfoNode(false, "", data);

            ChatNodeList.Add(infoNode);
        }
コード例 #3
0
        private void CreateVoiceLabel(CharInfoNode node)
        {
            var obj = ComplexObjectPool.NewObjectSync("UI/ChatMain/ChatVoiceCell.prefab");

            if (obj == null)
            {
                return;
            }
            obj.SetActive(true);
            voiceCell = obj.GetComponent <ChatVoiceCellLogic>();
            if (voiceCell == null)
            {
                return;
            }

            voiceCell.SetChatInfo(FontSize, chatDataMsg.Seconds, MaxWidth);
            voiceCell.Seconds   = chatDataMsg.Seconds;
            voiceCell.SoundData = chatDataMsg.SoundData;
            var objTransform = obj.transform;

            //objTransform.parent = Content.transform;
            objTransform.SetParentEX(Content.transform);
            objTransform.localScale    = Vector3.one;
            objTransform.localPosition = new Vector3(xPos, yPos, 0);

            obj.SetActive(true);
            AddXPos(200);
            xPos = 10;
            AddVoiceLabel();
        }
コード例 #4
0
ファイル: FriendChatCell.cs プロジェクト: pikaqiufk/Client
        private void InitMessage()
        {
            if (chatDataMsg == null)
            {
                return;
            }
            isMine = chatDataMsg.Type == (int)eChatChannel.MyWhisper;

            var roleId = chatDataMsg.RoleId;
            var tbChar = Table.GetCharacterBase(roleId);

            if (tbChar == null)
            {
                return;
            }
            GameUtils.SetSpriteIcon(HeadInfo, tbChar.HeadIcon);
            ResetMessage();
            SetTime();

            if (chatDataMsg.SoundData != null)
            {
                var data = new ChatInfoNodeData();
                data.Type      = (int)eChatLinkType.Voice;
                data.SoundData = chatDataMsg.SoundData;
                var node = new CharInfoNode(false, "", data);
                ChatNodeList.Add(node);
            }
            else
            {
                ParseText(ShouldCheckSensitiveWord(chatDataMsg), chatDataMsg.Content);
            }
            Display();
        }
コード例 #5
0
        private void InitMessage()
        {
            if (chatDataMsg == null)
            {
                return;
            }
            isMine = chatDataMsg.Type == (int)eChatChannel.MyWhisper;
            var roleId   = chatDataMsg.RoleId;
            var rebornId = 0;

            if (isMine)
            {
                rebornId = PlayerDataManager.Instance.GetExData(51);
                var tbReborn = Table.GetTransmigration(rebornId);
                if (tbReborn == null)
                {
                    return;
                }
                SetChatIcon(roleId, tbReborn);
            }
            else
            {
                rebornId = chatDataMsg.Ladder;
                var tbReborn = Table.GetTransmigration(rebornId);
                if (tbReborn == null)
                {
                    return;
                }
                SetChatIcon(roleId, tbReborn);
            }
            //var roleId = chatDataMsg.RoleId;
            //var tbChar = Table.GetCharacterBase(roleId);
            //if (tbChar == null)
            //{
            //    return;
            //}
            //GameUtils.SetSpriteIcon(HeadInfo, tbChar.HeadIcon);
            ResetMessage();
            SetTime();

            if (chatDataMsg.SoundData != null)
            {
                var data = new ChatInfoNodeData();
                data.Type      = (int)eChatLinkType.Voice;
                data.SoundData = chatDataMsg.SoundData;
                var node = new CharInfoNode(false, "", data);
                ChatNodeList.Add(node);
            }
            else
            {
                ParseText(ShouldCheckSensitiveWord(chatDataMsg), chatDataMsg.Content);
            }
            Display();
        }
コード例 #6
0
 private void CreateTeamNewLabel(CharInfoNode node)
 {
     CreateTextLabel(node.NodeData.Content, true, node);
     for (int i = 0; i < mCharInfoNodes.Count;)
     {
         if (mCharInfoNodes[i].LinkType == eChatLinkType.NewTeam)
         {
             mCharInfoNodes.RemoveAt(i);
         }
         else
         {
             i++;
         }
     }
 }
コード例 #7
0
        private void CreateItemLabel(CharInfoNode node)
        {
            var obj = ComplexObjectPool.NewObjectSync("UI/ChatMain/ChatLableNode.prefab");

            if (obj == null)
            {
                return;
            }
            var objTransform = obj.transform;

            objTransform.SetParentEX(Content.transform);
            obj.gameObject.collider.enabled = true;

            obj.SetActive(true);
            var label = obj.GetComponent <UILabel>();

            ColliderList.Add(obj.gameObject);
            var sbstr = "";
            var text  = "";

            label.fontSize = FontSize;

            NGUIText.fontSize        = label.fontSize;
            NGUIText.finalSize       = label.fontSize;
            NGUIText.dynamicFont     = label.trueTypeFont;
            NGUIText.regionWidth     = MaxWidth - xPos;
            NGUIText.pixelDensity    = 1.0f;
            NGUIText.maxLines        = 10000;
            NGUIText.regionHeight    = 10000;
            NGUIText.finalLineHeight = label.fontSize;
            NGUIText.fontScale       = 1.0f;
            var chatLogic = obj.GetComponent <ChatLableLogic>();

            chatLogic.InfoNode = node;
            var tbTable  = Table.GetItemBase(node.NodeData.Id);
            var value    = tbTable.Name;
            var itemClor = GameUtils.GetTableColor(tbTable.Quality);

            //label.color = itemClor;
            NGUIText.WrapText(value, out sbstr, false, true);
            var index = sbstr.IndexOf("\n");

            label.text = "[" + GameUtils.ColorToString(itemClor) + "]" + "[" + value + "]" + "[-]";
            label.text = value;
            var y = yPos;

            if (index > -1)
            {
                xPos = (int)(FontSize * 0.5f);

                var height = 0;
                if (isFace)
                {
                    height = (int)(FontSize * FaceScale);
                    isFace = false;
                }
                else
                {
                    height = FontSize;
                }
                height            += LineOffset;
                y                 -= height;
                BackGround.height += height;
                Content.height    += height;
            }
            else
            {
                if (isFace)
                {
                    y -= FontSize;
                }
            }

            label.gameObject.transform.localPosition = new Vector3(xPos, y, 0);
            objTransform.localScale = Vector3.one;
            AddXPos(label.width);
        }
コード例 #8
0
        private void CreateFaceLabel(CharInfoNode node)
        {
            var obj = ComplexObjectPool.NewObjectSync("UI/ChatMain/ChatFaceNode.prefab");

            if (obj == null)
            {
                return;
            }
            obj.SetActive(true);
            var faceSprite   = obj.GetComponent <UISprite>();
            var objTransform = obj.transform;

            //objTransform.parent = Content.transform;
            objTransform.SetParentEX(Content.transform);
            objTransform.localScale = Vector3.one;

            obj.SetActive(true);
            var faceWidth  = (int)(FontSize * FaceScale);
            var faceHeight = (int)(FontSize * FaceScale);

            faceSprite.width  = faceWidth;
            faceSprite.height = faceHeight;
            if (MaxWidth < xPos + faceWidth)
            {
                //换行

                xPos = (int)(FontSize * 0.5f);

                if (isFace)
                {
                    var y = FontSize * FaceScale;
                    yPos -= (int)y;
                    BackGround.height += (int)y;
                    Content.height    += FontSize;
                    isFace             = false;
                }
                else
                {
                    yPos -= FontSize;
                    BackGround.height += FontSize;
                    Content.height    += FontSize;
                }
                yPos -= LineOffset;


                WidgetList.Clear();
            }
            var face   = node.NodeData.Id;
            var tbFace = Table.GetFace(face);

            if (tbFace == null)
            {
                return;
            }
            if (isFace == false)
            {
                isFace = true;
                var c = WidgetList.Count;
                for (var i = 0; i < c; i++)
                {
                    var w = WidgetList[i];
                    var l = w.transform.localPosition;
                    l.y -= FontSize * (FaceScale - 1.0f) * 0.5f;
                    w.transform.localPosition = l;
                }
            }

            faceSprite.spriteName = tbFace.Name + "_1";
            var ani = obj.GetComponent <UISpriteAnimation>();

            ani.namePrefix = tbFace.Name + "_";
            var faceY = yPos;

            objTransform.localPosition = new Vector3(xPos, faceY, 0);
            AddXPos(faceWidth);
        }
コード例 #9
0
    private void CreatePostionLabel(CharInfoNode node)
    {
        //var objres = ResourceManager.PrepareResourceSync<GameObject>("UI/ChatMain/ChatLableNode.prefab");
        //var obj = Instantiate(objres) as GameObject;
        var obj = ComplexObjectPool.NewObjectSync("UI/ChatMain/ChatLableNode.prefab");

        if (obj == null)
        {
            return;
        }
        var objTransform = obj.transform;

        //objTransform.parent = BackGround.transform;
        objTransform.SetParentEX(BackGround.transform);
        obj.gameObject.collider.enabled = true;
        obj.SetActive(true);
        var chatLogic = obj.GetComponent <ChatLableLogic>();

        chatLogic.InfoNode = node;
        var label = obj.GetComponent <UILabel>();

        mColliderObjects.Add(obj.gameObject);
        var sbstr = "";
        var text  = "";

        //SetLableColor(label);
        label.fontSize           = FontSize;
        NGUIText.fontSize        = label.fontSize;
        NGUIText.finalSize       = label.fontSize;
        NGUIText.dynamicFont     = label.trueTypeFont;
        NGUIText.regionWidth     = MaxLineWidth - mPositionX;
        NGUIText.pixelDensity    = 1.0f;
        NGUIText.maxLines        = 10000;
        NGUIText.regionHeight    = 10000;
        NGUIText.finalLineHeight = label.fontSize;
        NGUIText.fontScale       = 1.0f;
        var sceneId = node.NodeData.ExData[0];
        var x       = node.NodeData.ExData[1];
        var y       = node.NodeData.ExData[2];

        var tbScene = Table.GetScene(sceneId);
        var strDic  = GameUtils.GetDictionaryText(242011);
        var value   = String.Format(strDic, tbScene.Name, x / 100, y / 100);

        NGUIText.WrapText(value, out sbstr, false, true);
        label.text = value;
        var index = sbstr.IndexOf("\n");

        if (index > -1)
        {
            mPositionX = (int)(FontSize * 0.5f);
            var height = mLineOffset;
            if (mLineFace)
            {
                height    = (int)(FontSize * FaceScale);
                mLineFace = false;
            }
            else
            {
                height = FontSize;
            }
            mPositionY        -= height;
            BackGround.height += height;
        }
        label.gameObject.transform.localPosition = new Vector3(mPositionX, mPositionY, 0);
        objTransform.localScale = Vector3.one;
        AddPositionX(label.width);
    }
コード例 #10
0
    private void CreateItemLabel(CharInfoNode node)
    {
        //var objres = ResourceManager.PrepareResourceSync<GameObject>("UI/ChatMain/ChatLableNode.prefab");
        //var obj = Instantiate(objres) as GameObject;
        var obj = ComplexObjectPool.NewObjectSync("UI/ChatMain/ChatLableNode.prefab");

        if (obj == null)
        {
            return;
        }

        var objTransform = obj.transform;

        //objTransform.parent = BackGround.transform;
        objTransform.SetParentEX(BackGround.transform);
        obj.gameObject.collider.enabled = true;
        obj.SetActive(true);
        var label = obj.GetComponent <UILabel>();

        mColliderObjects.Add(obj.gameObject);
        var sbstr = "";
        var text  = "";

        label.fontSize = FontSize;

        NGUIText.fontSize        = label.fontSize;
        NGUIText.finalSize       = label.fontSize;
        NGUIText.dynamicFont     = label.trueTypeFont;
        NGUIText.regionWidth     = MaxLineWidth - mPositionX;
        NGUIText.pixelDensity    = 1.0f;
        NGUIText.maxLines        = 10000;
        NGUIText.regionHeight    = 10000;
        NGUIText.finalLineHeight = label.fontSize;
        NGUIText.fontScale       = 1.0f;
        var chatLogic = obj.GetComponent <ChatLableLogic>();

        chatLogic.InfoNode = node;
        var nodeNodeDataExDataCount0 = node.NodeData.ExData.Count;
        var tbTable  = Table.GetItemBase(node.NodeData.Id);
        var value    = tbTable.Name;
        var itemClor = GameUtils.GetTableColor(tbTable.Quality);

        //label.color = itemClor;
        NGUIText.WrapText(value, out sbstr, false, true);

        var index = sbstr.IndexOf("\n");

        label.text = "[" + GameUtils.ColorToString(itemClor) + "]" + "[" + value + "]" + "[-]";
        if (index > -1)
        {
            mPositionX = (int)(FontSize * 0.5f);

            var height = 0;
            if (mLineFace)
            {
                height    = (int)(FontSize * FaceScale);
                mLineFace = false;
            }
            else
            {
                height = FontSize;
            }
            height            += mLineOffset;
            mPositionY        -= height;
            BackGround.height += height;
        }
        label.gameObject.transform.localPosition = new Vector3(mPositionX, mPositionY, 0);
        objTransform.localScale = Vector3.one;
        AddPositionX(label.width);
    }
コード例 #11
0
    private void CreateFaceLabel(CharInfoNode node)
    {
//         var objres = ResourceManager.PrepareResourceSync<GameObject>("UI/ChatMain/ChatFaceNode.prefab");
//
//         var obj = Instantiate(objres) as GameObject;
        var obj = ComplexObjectPool.NewObjectSync("UI/ChatMain/ChatFaceNode.prefab");

        if (obj == null)
        {
            return;
        }

        var faceSprite   = obj.GetComponent <UISprite>();
        var objTransform = obj.transform;

        //objTransform.parent = BackGround.transform;
        objTransform.SetParentEX(BackGround.transform);
        objTransform.localScale = Vector3.one;
        obj.SetActive(true);
        var faceWidth  = (int)(FontSize * FaceScale);
        var faceHeight = (int)(FontSize * FaceScale);

        faceSprite.width  = faceWidth;
        faceSprite.height = faceHeight;
        if (MaxLineWidth < mPositionX + faceWidth)
        {
            mPositionX = (int)(FontSize * 0.5f);

            if (mLineFace)
            {
                var y = FontSize * FaceScale;
                mPositionY        -= (int)y;
                BackGround.height += (int)y;
                mLineFace          = false;
            }
            else
            {
                mPositionY        -= FontSize;
                BackGround.height += FontSize;
            }
            mPositionY -= mLineOffset;
        }
        var face   = node.NodeData.Id;
        var tbFace = Table.GetFace(face);

        if (tbFace == null)
        {
            return;
        }
        mLineFace             = true;
        faceSprite.spriteName = tbFace.Name + "_1";
        var ani = obj.GetComponent <UISpriteAnimation>();

        ani.namePrefix = tbFace.Name + "_";
        var faceY = mPositionY;

        if (IsCenter)
        {
            faceY += (int)(FontSize * (FaceScale - 1.0f) / 2.0f);
        }
        objTransform.localPosition = new Vector3(mPositionX, faceY, 0);
        AddPositionX(faceWidth);
    }
コード例 #12
0
    private void AnalyseDictionaryNode(ChatInfoNodeData data)
    {
        var strDic = GameUtils.GetDictionaryText(data.Id);
        var begin  = 0;
        var flag   = 0;

        while (begin != -1)
        {
            begin = strDic.IndexOf("{", StringComparison.Ordinal);
            var end = strDic.IndexOf("}", StringComparison.Ordinal);

            if (begin != -1 && end != -1)
            {
                var perColor = "";
                if (begin >= 8)
                {
                    var s = strDic.Substring(begin - 8, 8);
                    if (Regex.IsMatch(s, GameUtils.BeginCoclorStrRegex))
                    {
                        perColor = s;
                    }
                }

                var endColor = "";
                if (strDic.Length >= end + 3)
                {
                    var s = strDic.Substring(end + 1, 3);
                    if (s == GameUtils.EndCoclorStrRegex)
                    {
                        end     += 3;
                        endColor = s;
                    }
                }


                if (begin != 0)
                {
                    var s = strDic.Substring(0, begin);
                    mCharInfoNodes.Add(new CharInfoNode(ShouldCheckSensitiveWord(), s));
                }

                if (data.StrExData.Count == flag)
                {
                    break;
                }

                var strEx = data.StrExData[flag];
                if (strEx.Length > 0 && strEx[0] == '#')
                {
                    var args = strEx.Split(':');
                    if (args[0] == "#ItemBase.Name")
                    {
                        var itemId  = args[1].ToInt();
                        var newData = new ChatInfoNodeData();
                        newData.Type = (int)eChatLinkType.Equip;
                        newData.Id   = itemId;
                        newData.ExData.AddRange(data.ExData);
                        mCharInfoNodes.Add(new CharInfoNode(ShouldCheckSensitiveWord(), "", newData));
                    }
                    else if (args[0] == "#Character")
                    {
                        var name    = args[1];
                        var newData = new ChatInfoNodeData();
                        newData.Type = (int)eChatLinkType.Character;

                        if (perColor != "")
                        {
                            name = perColor + name;
                        }
                        if (endColor != "")
                        {
                            name = name + endColor;
                        }

                        var node = new CharInfoNode(ShouldCheckSensitiveWord(), name, newData);
                        node.CharacterId = args[2].ToUlong();
                        mCharInfoNodes.Add(node);
                    }
                    else if (args[0] == "#Scene.Name")
                    {
                        var ret     = "";
                        var sceneId = args[1].ToInt();
                        var tbScene = Table.GetScene(sceneId);
                        if (tbScene != null)
                        {
                            ret += tbScene.Name;
                        }
                        if (args.Length > 2)
                        {
                            for (var i = 2; i < args.Length; i++)
                            {
                                sceneId = args[i].ToInt();
                                tbScene = Table.GetScene(sceneId);
                                if (tbScene != null)
                                {
                                    ret += "," + tbScene.Name;
                                }
                            }
                        }
                        mCharInfoNodes.Add(new CharInfoNode(ShouldCheckSensitiveWord(), ret));
                    }
                }
                else
                {
                    if (perColor != "")
                    {
                        strEx = perColor + strEx;
                    }
                    if (endColor != "")
                    {
                        strEx = strEx + endColor;
                    }

                    mCharInfoNodes.Add(new CharInfoNode(ShouldCheckSensitiveWord(), strEx));
                }
                flag++;
                strDic = strDic.Substring(end + 1);
            }
        }
        if (!string.IsNullOrEmpty(strDic))
        {
            mCharInfoNodes.Add(new CharInfoNode(ShouldCheckSensitiveWord(), strDic));
        }
    }
コード例 #13
0
    private void CreateTextLabel(string value, bool isNewTeam = false, CharInfoNode node = null)
    {
        var obj = ComplexObjectPool.NewObjectSync("UI/ChatMain/ChatLableNode.prefab");

        if (obj == null)
        {
            return;
        }
        var objTransform = obj.transform;

        //objTransform.parent = BackGround.transform;
        objTransform.SetParentEX(BackGround.transform);
        obj.gameObject.collider.enabled = false;
        obj.SetActive(false);
        NetManager.Instance.StartCoroutine(DelayShowTextLabel(obj));
        var label = obj.GetComponent <UILabel>();

        var sbstr = "";
        var text  = "";


        label.fontSize       = FontSize;
        NGUIText.fontSize    = label.fontSize;
        NGUIText.finalSize   = label.fontSize;
        NGUIText.dynamicFont = label.trueTypeFont;
        if (mPositionX > MaxLineWidth)
        {
            ChangeLine();
        }
        NGUIText.regionWidth     = MaxLineWidth - mPositionX;
        NGUIText.maxLines        = 10000;
        NGUIText.pixelDensity    = 1.0f;
        NGUIText.regionHeight    = 10000;
        NGUIText.finalLineHeight = label.fontSize;
        NGUIText.fontScale       = 1.0f;
        NGUIText.WrapText(value, out sbstr, false, true);

        var index = sbstr.IndexOf("\n");

        if (index > -1)
        {
            text  = sbstr.Substring(0, index);
            sbstr = sbstr.Remove(0, text.Length).Trim();
            if (!string.IsNullOrEmpty(sbstr))
            {
                int symbol      = 0;
                var lastSymbol1 = text.LastIndexOf('[');
                var lastSymbol2 = text.LastIndexOf(']');

                if (lastSymbol1 >= 0 && lastSymbol2 >= 0 && 7 == lastSymbol2 - lastSymbol1)
                {
                    var lastEnd = text.LastIndexOf("[-]");
                    if ((lastEnd < 0 || lastEnd < lastSymbol1) && sbstr.IndexOf("[-]") >= 0)
                    {
                        text += "[-]";
                        var colstr = text.Substring(lastSymbol1, 8);
                        sbstr = colstr + sbstr;
                    }
                }
            }
        }
        else
        {
            text  = sbstr;
            sbstr = sbstr.Remove(0, text.Length).Trim();
        }
        SetLableStroke(label);
        SetLableColor(label, text);
        objTransform.localPosition = new Vector3(mPositionX, mPositionY, 0);
        objTransform.localScale    = Vector3.one;
        //positionX += label.width;
        AddPositionX(label.width);
        //sbstr = sbstr.Remove(0, text.Length);
        if (isNewTeam || mChatMessageData.Ladder == -1)
        {
            obj.gameObject.collider.enabled = true;
            var chatLogic = obj.GetComponent <ChatLableLogic>();
            chatLogic.InfoNode = node;
            chatLogic.param    = mChatMessageData.Ladder;
            if (null != label)
            {
                NGUITools.UpdateWidgetCollider(label.gameObject);
            }
        }
        if (!string.IsNullOrEmpty(sbstr))
        {
            ChangeLine();
            sbstr = sbstr.Replace("\n", "");
            CreateTextLabel(sbstr, isNewTeam, node);
        }
    }