Exemplo n.º 1
0
    // Handle the showing of how to show the sentences to player.
    void HandleDialogueText(DialogueData.Dialogue currDialogue)
    {
        int currSentenceCount = currDialogue.sentenceList.Count;

        if (mCurrSentenceIndex < currSentenceCount)
        {
            DialogueData.Dialogue.Sentence currSentence = currDialogue.sentenceList[mCurrSentenceIndex];
            if (mIsShowingSentence)
            {
                // Skip the type-writer style writing and show full sentence.
                StopCoroutine(coroutine);
                mDialogueText.text = currSentence.text;
                SetToNextSentence();
            }
            else if (!mIsShowingSentence)
            {
                if (mActiveCharacterSpriteState == ActiveCharacterSpriteState.NONE)
                {
                    if (currDialogue.isLeft)
                    {
                        mActiveCharacterSpriteState = ActiveCharacterSpriteState.LEFT;
                    }
                    else
                    {
                        mActiveCharacterSpriteState = ActiveCharacterSpriteState.RIGHT;
                    }
                }
                string charName = currDialogue.character.name.ToString();
                UpdateCharacterSprite(currSentence);
                ShowNextDialogue(currSentence, charName);
            }
        }
    }
Exemplo n.º 2
0
    // Set left and right character's sprite and state.
    void CharSpriteState()
    {
        if (currDialogueData > dialogueDataList.Count - 1)
        {
            return;
        }

        DialogueData.Dialogue firstDiag = dialogueDataList[currDialogueData].dialogueList [0];
        Sprite firstSprite = firstDiag.sentenceList [0].sprite;

        DialogueData.Dialogue secondDiag = null;
        Sprite secondSprite = null;

        for (int i = 1; i < dialogueDataList[currDialogueData].dialogueList.Count; i++)
        {
            DialogueData.Dialogue currDiag = dialogueDataList[currDialogueData].dialogueList [i];
            if (currDiag.character.name != CharacterData.Info.Character.NONE &&
                firstDiag.character.name != currDiag.character.name)
            {
                secondDiag = currDiag; break;
            }
        }
        if (secondDiag != null)
        {
            secondSprite = secondDiag.sentenceList [0].sprite;
        }

        if (firstDiag.isLeft)
        {
            mActiveCharacterSpriteState = ActiveCharacterSpriteState.LEFT;
            characterSpriteList[0].characterSpriteRend.sprite = firstSprite;
            if (secondSprite != null)
            {
                characterSpriteList[1].characterSpriteRend.sprite = secondSprite;
            }

            if (!dialogueDataList[currDialogueData].isBothAppear)
            {
                characterSpriteList[1].spriteState = CharacterSprite.SpriteState.INVISIBLE_IN_SCREEN;
            }
        }
        else
        {
            mActiveCharacterSpriteState = ActiveCharacterSpriteState.RIGHT;
            characterSpriteList[1].characterSpriteRend.sprite = firstSprite;
            if (secondSprite != null)
            {
                characterSpriteList[0].characterSpriteRend.sprite = secondSprite;
            }

            if (!dialogueDataList[currDialogueData].isBothAppear)
            {
                characterSpriteList[0].spriteState = CharacterSprite.SpriteState.INVISIBLE_IN_SCREEN;
            }
        }
        SetActiveCharacterSpriteShade();
    }
Exemplo n.º 3
0
 // Swap character's shade.
 void SwapActiveCharacterSpriteShade()
 {
     if (mActiveCharacterSpriteState == ActiveCharacterSpriteState.LEFT)          // Change right character to active.
     {
         mActiveCharacterSpriteState = ActiveCharacterSpriteState.RIGHT;
         leftCharacter.color         = new Color(0.5f, 0.5f, 0.5f, 1.0f);
         rightCharacter.color        = Color.white;
     }
     else         // Change left character to active.
     {
         mActiveCharacterSpriteState = ActiveCharacterSpriteState.LEFT;
         leftCharacter.color         = Color.white;
         rightCharacter.color        = new Color(0.5f, 0.5f, 0.5f, 1.0f);
     }
 }
Exemplo n.º 4
0
    IEnumerator WaitTimeBasedOnCurrentDialogue()
    {
        mCurrentState = CurrentState.DIALOGUE_PAUSE;

        DialogueData.Dialogue currDialogue = dialogueDataList[currDialogueData].dialogueList[mCurrDialogueIndex];
        DialogueSlide.sSingleton.DisappearAll(false);
        yield return(new WaitForSeconds(currDialogue.time.reOpenTime));

        mCurrDialogueIndex++;
        mIsUpdatedPosScale = false;
        currDialogue       = dialogueDataList[currDialogueData].dialogueList[mCurrDialogueIndex];

        if (mActiveCharacterSpriteState == ActiveCharacterSpriteState.NONE)
        {
            if (currDialogue.isLeft)
            {
                mActiveCharacterSpriteState = ActiveCharacterSpriteState.LEFT;
            }
            else
            {
                mActiveCharacterSpriteState = ActiveCharacterSpriteState.RIGHT;
            }
        }

        DialogueData.Dialogue.Sentence currSentence = currDialogue.sentenceList[0];
        string charName = currDialogue.character.name.ToString();

        UpdateCharacterSprite(currSentence);
        ShowNextDialogue(currSentence, charName);

        if (dialogueDataList[currDialogueData].isBothAppear)
        {
            DialogueSlide.sSingleton.AppearAll();
            mCurrentState = CurrentState.DIALOGUE_SHOW;
        }
    }
Exemplo n.º 5
0
 // This happens when both of the characters on screen are not talking.
 void DarkenBothCharacterSpriteShade()
 {
     mActiveCharacterSpriteState = ActiveCharacterSpriteState.NONE;
     leftCharacter.color         = new Color(0.5f, 0.5f, 0.5f, 1.0f);
     rightCharacter.color        = new Color(0.5f, 0.5f, 0.5f, 1.0f);
 }
Exemplo n.º 6
0
    void SetToNextDialogue()
    {
        DialogueData.Dialogue currDialogue = dialogueDataList[currDialogueData].dialogueList[mCurrDialogueIndex];
        int dialogueCount = dialogueDataList[currDialogueData].dialogueList.Count;

        mIsShowingSentence = false;

        if (mCurrDialogueIndex + 1 < dialogueCount)
        {
            CharacterData.Info.Character currChar = currDialogue.character.name;
            CharacterData.Info.Character nextChar = dialogueDataList[currDialogueData].dialogueList[mCurrDialogueIndex + 1].character.name;
            bool isNextCharNone = IsNextCharacterNone(currDialogue);

            if (currChar != CharacterData.Info.Character.NONE && isNextCharNone)
            {
                mSavedActiveCharacter = currDialogue.character.name;
            }
            else if (currChar != CharacterData.Info.Character.NONE && nextChar != mSavedActiveCharacter)
            {
                mIsSwapActive = !isNextCharNone && !IsNextCharacterTheSame(currDialogue);
            }

            if (currDialogue.time.reOpenTime != 0)
            {
                mCurrentState = CurrentState.DIALOGUE_RE_OPEN;
            }
            else
            {
                // ------------------------------HANDLE MOVE-OUT TIME------------------------------
                if (currDialogue.time.moveOutTime > 0)
                {
                    HandleMoveOutTime(currDialogue);
                }
                else
                {
                    mCurrentState = CurrentState.DIALOGUE_SHOW;
                }
                // --------------------------------END MOVE-OUT TIME-------------------------------

                mCurrDialogueIndex++;
                mIsUpdatedPosScale = false;

                // Set back the active character's state.
                if (mActiveCharacterSpriteState == ActiveCharacterSpriteState.NONE)
                {
                    DialogueData.Dialogue nextDialogue = dialogueDataList[currDialogueData].dialogueList[mCurrDialogueIndex];
                    if (nextDialogue.isLeft)
                    {
                        mActiveCharacterSpriteState = ActiveCharacterSpriteState.LEFT;
                    }
                    else
                    {
                        mActiveCharacterSpriteState = ActiveCharacterSpriteState.RIGHT;
                    }
                }
            }
        }
        else if (mCurrDialogueIndex + 1 >= dialogueCount)
        {
            mCurrentState = CurrentState.DIALOGUE_ENDED;
            currDialogueData++;
//            mIsFirstStart = true;
//            GameManager.sSingleton.state = GameManager.State.NONE;
//            Debug.Log("Ended");
        }
    }
Exemplo n.º 7
0
    // Handle the moving in of character potraits and dialogue sentences.
    void HandleDialogueShow()
    {
        DialogueData.Dialogue currDialogue = dialogueDataList[currDialogueData].dialogueList[mCurrDialogueIndex];

        // Update current character state.
        if (currDialogue.isLeft)
        {
            mActiveCharacterSpriteState = ActiveCharacterSpriteState.LEFT;
        }
        else
        {
            mActiveCharacterSpriteState = ActiveCharacterSpriteState.RIGHT;
        }

        if (mCurrDialogueIndex != 0 && !mIsUpdatedPosScale)
        {
            UpdateCharPositionAndScale(currDialogue.isLeft);
        }
        mIsSwapActive = false;

        // ------------------------------HANDLE MOVE-IN TIME------------------------------
        if (currDialogue.time.moveInTime > 0 &&
            ((mActiveCharacterSpriteState == ActiveCharacterSpriteState.LEFT && characterSpriteList[0].spriteState != CharacterSprite.SpriteState.IN_SCREEN) ||
             (mActiveCharacterSpriteState == ActiveCharacterSpriteState.RIGHT && characterSpriteList[1].spriteState != CharacterSprite.SpriteState.IN_SCREEN)))
        {
            if (currDialogue.appearMeth == DialogueData.Dialogue.AppearMethod.FADE)
            {
                // TODO : defaultLeft and defaultRight to follow characterData postList.
//                if (mActiveCharacterSpriteState == ActiveCharacterSpriteState.LEFT) leftCharacter.transform.position = defaultLeftSprPos;
//                else if (mActiveCharacterSpriteState == ActiveCharacterSpriteState.RIGHT) rightCharacter.transform.position = defaultRightSprPos;
                AppearCharOnScreen(currDialogue);
            }
            else if (currDialogue.appearMeth == DialogueData.Dialogue.AppearMethod.SLIDE)
            {
                PutSpriteOutScreen(currDialogue);
                UpdateCharacterSprite(currDialogue.sentenceList[0]);
                HandleMoveInTime(currDialogue);
            }
        }
        else
        {
            // Fade in character if it's invisible in screen. (Alpha 0 to 1).
            if ((mActiveCharacterSpriteState == ActiveCharacterSpriteState.LEFT && characterSpriteList[0].spriteState == CharacterSprite.SpriteState.INVISIBLE_IN_SCREEN) ||
                (mActiveCharacterSpriteState == ActiveCharacterSpriteState.RIGHT && characterSpriteList[1].spriteState == CharacterSprite.SpriteState.INVISIBLE_IN_SCREEN))
            {
                AppearCharOnScreen(currDialogue);
                if (mActiveCharacterSpriteState == ActiveCharacterSpriteState.LEFT)
                {
                    characterSpriteList[0].spriteState = CharacterSprite.SpriteState.IN_SCREEN;
                }
                else
                {
                    characterSpriteList[1].spriteState = CharacterSprite.SpriteState.IN_SCREEN;
                }
            }
            else
            {
                HandleDialogueText(currDialogue);
            }
        }
    }