Exemplo n.º 1
0
 public void ConversationStarted(Conversation newConversation)
 {
     if (newConversation.conversationType == Conversation.ConversationType.MissionDialogue ||
         newConversation.conversationType == Conversation.ConversationType.AmbientDialogue)
     {
         _currentConversation = newConversation;
         foreach (ConversationAction conversationAction in _currentConversation.actions)
         {
             if (conversationAction is ConAct_Speak)
             {
                 ConAct_Speak speakAction = (ConAct_Speak)conversationAction;
                 speakAction.speakStartEvent.AddListener(SpeakStartReceived);
                 speakAction.speakEndEvent.AddListener(SpeakEndReceived);
             }
             else if (conversationAction is ConAct_Choice)
             {
                 ConAct_Choice choiceAction = (ConAct_Choice)conversationAction;
                 choiceAction.speakStartEvent.AddListener(SpeakStartReceived);
                 choiceAction.speakEndEvent.AddListener(SpeakEndReceived);
             }
         }
     }
 }
Exemplo n.º 2
0
    protected override void Update()
    {
        base.Update();

        bool choiceActive = false;

        if (_currentConversation != null)
        {
            if (_currentConversation.currentConversationAction != null)
            {
                if (_currentConversation.currentConversationAction is ConAct_Choice)
                {
                    choiceActive = true;
                    ConAct_Choice choiceAction = (ConAct_Choice)(_currentConversation.currentConversationAction);
                    _speakText.maxVisibleCharacters = _speakText.text.Length;
                    for (int i = 0; i < choiceAction.choiceList.Count; i++)
                    {
                        _choiceObjects[i].SetActive(true);
                        _choiceTexts[i].text   = choiceAction.choiceList[i];
                        _choiceImages[i].color = i == choiceAction.currentChoiceIndex ? Color.yellow : Color.gray;
                    }
                }
                else if (_currentConversation.currentConversationAction is ConAct_Speak)
                {
                    ConAct_Speak speakAction = (ConAct_Speak)(_currentConversation.currentConversationAction);

                    _speakText.maxVisibleCharacters = Mathf.RoundToInt(ExtraMath.Map(speakAction.currentVisibleCharactersRatio, 0, 1, 0, _speakText.text.Length));
                    Debug.Log(_textAnimator.textInfo.characterCount);
                    if (speakAction.nextButtonVisible)
                    {
                        _nextButton.SetActive(true);
                    }
                }
                if (_speakText.maxVisibleCharacters == _speakText.text.Length && !_isTextAnimating)
                {
                    Debug.Log("animate text");
                    AnimateText();
                }
            }
        }
        if (!choiceActive)
        {
            foreach (GameObject choiceObject in _choiceObjects)
            {
                choiceObject.SetActive(false);
            }
        }
        if (_speakWindowActive)
        {
            _speakWindowActiveFrames = 2;
        }
        else
        {
            if (_speakWindowActiveFrames > 0)
            {
                _speakWindowActiveFrames--;
            }
            else
            {
                _speakObject.SetActive(false);
            }
        }
    }