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(); }
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); }
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(); }
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(); }
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(); }
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++; } } }
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); }
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); }
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); }
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); }
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); }
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)); } }
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); } }