public void TransformMessageBubble(MessageBubbleType type) { const int RootPaddingIsLast = 0; const int RootPadding = 30; const int BubblePaddingIsLast = 50; const int BubblePadding = 20; const int LayoutElementMinWidth = 100; const int LayoutElementMinWidthIsLast = 130; const float DateTextAnchoredPositionX = -15; const float DateTextAnchoredPositionXIsLast = -45; bool isOwner = UChatApp.Instance.IsOwnerUser(currentMessage.Sender); bool isLast = type == MessageBubbleType.Last; var bubbleBgSprite = isOwner ? (isLast ? ownerBGLastMessage : ownerBG) : isLast ? otherBGLastMessage : otherBG; bubbleBG.sprite = bubbleBgSprite; messageAuthor.gameObject.SetActive(isLast); if (isOwner) { dateText.rectTransform.anchoredPosition = new Vector2(isLast ? DateTextAnchoredPositionXIsLast : DateTextAnchoredPositionX, dateText.rectTransform.anchoredPosition.y); rootVerticalLayoutGroup.padding.right = isLast ? RootPaddingIsLast : RootPadding; bubbleVerticalLayoutGroup.padding.right = isLast ? BubblePaddingIsLast : BubblePadding; layoutElement.minWidth = isLast ? LayoutElementMinWidthIsLast : LayoutElementMinWidth; } else { rootVerticalLayoutGroup.padding.left = isLast ? RootPaddingIsLast : RootPadding; bubbleVerticalLayoutGroup.padding.left = isLast ? BubblePaddingIsLast : BubblePadding; layoutElement.minWidth = isLast ? LayoutElementMinWidthIsLast : LayoutElementMinWidth; } }
/// <summary> /// Adding new message box with raw data that comes from a fresh new ink file /// </summary> /// <param name="msgType"></param> /// <param name="text"></param> /// <param name="shootTime"></param> /// <param name="isAddedToTop"></param> private void _AddNewDemonMessageBox(MessageBubbleType msgType, string text, DateTime rawShootTime, out DateTime shootTime) { //processing label elements in the raw text and clean them to get the real text text = TextEffectManager.ProcessingTags(text, out List <UndefinedTagInfo> undefinedTagInfos, out List <Tag> gameRelatedTags); shootTime = _AddTypingBehaviorBox(text, gameRelatedTags, rawShootTime); //Time Stamp appearing logic if ((shootTime - _lastTimeStamp) > TimeSpan.FromMinutes(10f)) { MessageContent ts = new MessageContent(); ts.messageType = MessageBubbleType.TimeStamp; ts.content = String.Empty; ts.shootTime = shootTime; _currentDialogueMessages.Add(ts); _AddMessageBox(ts); _lastTimeStamp = shootTime; } MessageContent msg = new MessageContent(); msg.messageType = msgType; msg.content = text; msg.shootTime = shootTime; _currentDialogueMessages.Add(msg); _AddMessageBox(msg); //Prefab Logic foreach (var textFiles in gameRelatedTags.Where(tag => tag is TextFile).ToList()) { var file = textFiles as TextFile; if ((shootTime - _lastTimeStamp) > TimeSpan.FromMinutes(10f)) { MessageContent ts = new MessageContent(); ts.messageType = MessageBubbleType.TimeStamp; ts.content = String.Empty; ts.shootTime = shootTime + TimeSpan.FromSeconds(1); _currentDialogueMessages.Add(ts); _AddMessageBox(ts); _lastTimeStamp = shootTime; } msg = new MessageContent(); msg.messageType = MessageBubbleType.Prefab; msg.content = string.Empty; msg.fileBubbleName = file.fileBubble; msg.fileContentName = file.fileContent; msg.shootTime = shootTime + TimeSpan.FromSeconds(1); _currentDialogueMessages.Add(msg); _AddMessageBox(msg); } }
public MessageBubbleContent(string message, MessageBubbleType messageBubbleType) { this.message = message; this.messageBubbleType = messageBubbleType; }
private void _AddNewMessageBox(MessageBubbleType msgType, string text, DateTime shootTime, bool isAddedToTop = false) { text = TextEffectManager.ProcessingTags(text, out List <UndefinedTagInfo> undefinedTagInfos, out List <Tag> gameRelatedTags); if ((shootTime - _lastTimeStamp) > TimeSpan.FromMinutes(10f)) { _CreateNewTimeStamp(shootTime); _lastTimeStamp = shootTime; } switch (msgType) { case MessageBubbleType.Player: //create the msg info and put them in the save manager MessageContent msg = new MessageContent(); msg.messageType = MessageBubbleType.Player; msg.content = text; msg.shootTime = shootTime; _currentDialogueMessages.Add(msg); //create the bubble Services.textSequenceTaskRunner.AddTask(delegate { GameObject newTimeBox = GameObject.Instantiate(Resources.Load <GameObject>(_playerTextBox), content.transform); newTimeBox.GetComponentInChildren <TextMeshProUGUI>().text = text; }, shootTime); break; case MessageBubbleType.Demon: msg = new MessageContent(); msg.messageType = MessageBubbleType.Demon; msg.content = text; msg.shootTime = shootTime; _currentDialogueMessages.Add(msg); Services.textSequenceTaskRunner.AddTask(delegate { GameObject newTimeBox = GameObject.Instantiate(Resources.Load <GameObject>(_demonTextBox), content.transform); newTimeBox.GetComponentInChildren <TextMeshProUGUI>().text = text; }, shootTime); break; case MessageBubbleType.Prefab: Debug.Log("Change to use AddNewFileMessage to initiate a prefab msg."); break; } foreach (var textFiles in gameRelatedTags.Where(tag => tag is TextFile).ToList()) { var file = textFiles as TextFile; if ((shootTime - _lastTimeStamp) > TimeSpan.FromMinutes(10f)) { _CreateNewTimeStamp(shootTime); _lastTimeStamp = shootTime; } var msg = new MessageContent(); msg.messageType = MessageBubbleType.Prefab; msg.fileBubbleName = file.fileBubble; msg.fileContentName = file.fileContent; msg.shootTime = shootTime; _currentDialogueMessages.Add(msg); var bubblePrefab = Resources.Load <GameObject>("Prefabs/FileBubble/" + file.fileBubble); Services.textSequenceTaskRunner.AddTask(delegate { var bubble = GameObject.Instantiate(bubblePrefab, content.transform); bubble.GetComponentInChildren <OpenFileButton>().fileContentName = file.fileContent; }, shootTime + TimeSpan.FromSeconds(1)); } }