Пример #1
0
    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;
        }
    }
Пример #2
0
    /// <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);
        }
    }
Пример #3
0
 public MessageBubbleContent(string message, MessageBubbleType messageBubbleType)
 {
     this.message           = message;
     this.messageBubbleType = messageBubbleType;
 }
Пример #4
0
    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));
        }
    }