public void SetConversation(Conversation conv, DialogueSpeaker speaker)
 {
     //SI EL SPEAKER NO ES NULO
     if (speaker != null)
     {
         speakerActual = speaker; //SPEAKER ACTUAL SE IGUAL AL SPEAKER QUE SE PASA COMO PARAMETRO
     }
     else
     {
         //SI EL SPEAKER ES NULL QUIERE DECIR QUE VIENE UNA PREGUNTA
         //RESEREAMOT EL LOCAL IN PARA RECORRER LA CONVERSACION EN PRODUCTO DE LA RESPUESTA ELEGIDA
         dialogueUIScript.conversationScript = conv; //IGUALAMOS A LA CONVERSACION QUE PASAMOS EN EL PARAMETRO
         dialogueUIScript.LocalIn            = 0;    // RESEEAMOS LOS DIALOGOS DE LA CONVERSACION
         dialogueUIScript.UpdateSpeech(0);           //LLAMAMOS A LA FUNCION QUE ACTUALIZARA Y LE PASAMOS EL SWITCH CASE 0
     }
     //CONDICIONAL PARA VER SI LA CONVERSACION YA FINALIZO  Y LA CONVERSACION NO SE REUTILIZARA
     if (conv.finished && !conv.reUse)
     {
         dialogueUIScript.conversationScript = conv;                  //PASAMOS LA NUEVA CONVERSACION
         dialogueUIScript.LocalIn            = conv.dialogues.Length; //LOCAL IN = TOTAL DE DIALOGOS PARA SABER QUE ESTAMOS AL TOPE
         dialogueUIScript.UpdateSpeech(1);                            //LAMAMOS AL SWITCH CASE 1 EN EL DIALOGUE UI SCRIPT
     }
     else //SINO
     {
         dialogueUIScript.conversationScript = conv;                          //IGUALAMOS AL PARAMETRO
         dialogueUIScript.LocalIn            = speakerActual.DialogueLocalIn; //DIALOGUE SCRIPT LO IGUALAMOS AL DIALOGO ACTUAL
         dialogueUIScript.UpdateSpeech(0);                                    //LLAMAMOS A LA FUNCION QUE ACTUALIZARA Y LE PASAMOS EL SWITCH CASE 0
     }
 }
Пример #2
0
 // Normal TextLine Struct
 public DialogueLine(DialogueSpeaker dialogueSpeaker_, List <string> texts_, List <float> lettersPerSeconds_)
 {
     dialogueSpeaker   = dialogueSpeaker_;
     texts             = texts_;
     lettersPerSeconds = lettersPerSeconds_;
     dialogueLineType  = Dialogue.DialogueLineType.TEXT;
 }
Пример #3
0
 // Pre-DialogueLine Struct
 public DialogueLine(DialogueSpeaker dialogueSpeaker_)
 {
     dialogueSpeaker   = dialogueSpeaker_;
     dialogueLineType  = new Dialogue.DialogueLineType();
     texts             = new List <string> ();
     lettersPerSeconds = new List <float> ();
     triggers          = new List <Trigger> ();
 }
Пример #4
0
    public void StartGame(string fileName)
    {
        string json = SaveLoad.LoadMap(fileName);

        if (json == null)
        {
            return;
        }

        HideMenu();
        HideLevelSelectionScreen();
        ShowBackground();

        cameraController.targetOrtho = 5f;
        GameController.GetComponent <Game>().GenerateMapFromJson(json);
        Game.currentLevel = fileName;
        Scroller.SetPlayerTransform(FindObjectOfType <Player>().transform);
        cooldownHolder.gameObject.SetActive(true);

        Vector2 tilePos, boxSize;

        switch (fileName)
        {
        default:
        case "level00":
            mapLevel = 0;
            tilePos  = new Vector2(5, 20);
            boxSize  = new Vector2(5, 5);
            DialogueSpeaker tutorial1 = CreateSpeakerAtPos(tilePos, boxSize, "Instructor", 1);
            GameObject      howToMove = Instantiate <GameObject>(tutorialHelperPrefab, tilePos, Quaternion.identity, Game.gameHolder);

            tilePos = new Vector2(48, 31);
            boxSize = new Vector2(10, 5);
            DialogueSpeaker tutorial2   = CreateSpeakerAtPos(tilePos, boxSize, "Instructor", 2);
            GameObject      howToAttack = Instantiate <GameObject>(tutorialHelperPrefab, tilePos, Quaternion.identity, Game.gameHolder);
            break;

        case "level01":
            mapLevel = 1;
            tilePos  = new Vector2(5, 1);
            boxSize  = new Vector2(5, 5);
            DialogueSpeaker speaker = CreateSpeakerAtPos(tilePos, boxSize, "Narrator", 1);
            speaker.spoken = true;

            tilePos = new Vector2(15, 1);
            boxSize = new Vector2(5, 5);
            DialogueSpeaker speaker2 = CreateSpeakerAtPos(tilePos, boxSize, "Narrator", 2);
            //speaker2.spoken = true;
            break;
        }
    }
Пример #5
0
    private DialogueSpeaker CreateSpeakerAtPos(Vector2 tilePos, Vector2 boxSize, string name, int dialogueNumber)
    {
        GameObject tile = new GameObject("Speaker GameObject");

        tile.transform.SetParent(Game.gameHolder);
        tile.transform.position = tilePos;
        tile.tag = "DialogueSpeaker";

        DialogueSpeaker speaker = tile.AddComponent <DialogueSpeaker>();

        speaker.speakerName    = name;
        speaker.dialogueNumber = dialogueNumber;

        BoxCollider2D collider = tile.AddComponent <BoxCollider2D>();

        collider.size      = boxSize;
        collider.isTrigger = true;

        return(speaker);
    }
Пример #6
0
 public void EndDialogue()
 {
     if (activeGameObject != null)
     {
         activeGameObject.SendMessage("OnEndDialogue", activeDialogue, SendMessageOptions.DontRequireReceiver);
         activeGameObject = null;
     }
     SendMessage("OnEndDialogue", activeDialogue, SendMessageOptions.DontRequireReceiver);
     activeCharacter = null;
     activeDialogue  = null;
     activeLine      = null;
     isUsable        = false;
     countdown.StopTimer();
     speakerGUI.SetActive(false);
     textGUI.SetActive(false);
     foreach (GameObject r in repliesGUI)
     {
         r.SetActive(false);
     }
 }
Пример #7
0
    private void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.CompareTag("DialogueSpeaker"))
        {
            DialogueSpeaker speaker = collision.GetComponent <DialogueSpeaker>();
            if (speaker.spoken)
            {
                return;
            }

            LevelController.ShowDialogue();
            DialogueScript.ChangeDialogueSpeaker(speaker.speakerName);
            DialogueScript.ChangeDialogueText(speaker.dialogueNumber, speaker.dialogueText);

            speaker.spoken = true;
        }
        else if (collision.CompareTag("Win"))
        {
            // Win Screen

            // After Win Screen back to menu?
            Game.WinGame();
        }
    }
Пример #8
0
    public void StartDialogue(Dialogue d, DialogueSpeaker c, GameObject dialogueObject)
    {
//		if(c == null) { Debug.LogError("DialogueManager: Got a null Character."); return;}
        activeCharacter = c;
        if (d == null)
        {
            Debug.LogError("DialogueManager: Got a null Dialogue."); return;
        }
        activeDialogue = d;
        Line line = FindLine(d.openingLines);

        if (line == null)
        {
            Debug.LogError("DialogueManager: Got a null Line."); return;
        }
        activeGameObject = dialogueObject;

        PrepareLine(line);
        InvokeActions(line);
        speakerGUI.SetActive(true);
        textGUI.SetActive(true);
        isUsable = true;
        SendMessage("OnStartDialogue", activeDialogue, SendMessageOptions.DontRequireReceiver);
    }
Пример #9
0
    public void UpdateDialogue(out Dictionary <string, List <DialogueLine> > newDialogue)
    {
        newDialogue = new Dictionary <string, List <DialogueLine> > ();
        var lines = Regex.Split(dialogueCSV.text, LINE_SPLIT_RE);

        if (lines[lines.Length - 1] == "")
        {
            Array.Resize(ref lines, lines.Length - 1);
        }

        if (lines.Length <= 1)
        {
            Debug.LogError("DialogueCSV did not contain any data.");
            return;
        }

        List <DialogueLine> tmpNewDialogueLines = new List <DialogueLine> ();
        string          currentDialogueId       = "";
        DialogueSpeaker currentDialogueSpeaker  = NameToDialogueSpeaker("DEFAULT");

        for (int i = 0; i < lines.Length; i++)
        {
            var values = Regex.Split(lines[i], SPLIT_RE);

            if (values[0].ToUpper() == "ID")
            {
                currentDialogueId = values[1].ToUpper();
            }
            else if (values[0].ToUpper() == "END")
            {
                newDialogue[currentDialogueId] = tmpNewDialogueLines;
                tmpNewDialogueLines            = new List <DialogueLine> ();
                currentDialogueId = "";
            }
            else
            {
                if (values[0] != "")
                {
                    currentDialogueSpeaker = NameToDialogueSpeaker(values[0]);
                }
                DialogueLine tmpNewDialogueLine = new DialogueLine(currentDialogueSpeaker);
                switch (values[1].ToUpper())
                {
                case "TRIGGER":
                    tmpNewDialogueLine.dialogueLineType = DialogueLineType.TRIGGER;
                    bool triggerIsDone = false;
                    i++;
                    int triggerIndex = 0;
                    while (!triggerIsDone)
                    {
                        values = Regex.Split(lines[i], SPLIT_RE);
                        if (!Enum.IsDefined(typeof(TriggerType), values[1].ToUpper()))
                        {
                            triggerIsDone = true;
                            tmpNewDialogueLines.Add(tmpNewDialogueLine);
                            triggerIndex++;
                            i--;
                            break;
                        }
                        else
                        {
                            TriggerType tmpNewTriggerType = (TriggerType)Enum.Parse(typeof(TriggerType), values[1].ToUpper());

                            Trigger tmpNewTrigger = new Trigger {
                                triggerType = tmpNewTriggerType
                            };

                            for (int k = 0; k < 4; k++)
                            {
                                tmpNewTrigger.variables.Add(values[k + 2] == "" ? "NULL" : values[k + 2]);
                            }

                            tmpNewDialogueLine.triggers.Add(tmpNewTrigger);
                        }

                        var tmpNewValues = Regex.Split(lines[i + 1], SPLIT_RE);

                        if (i >= lines.Length || tmpNewValues[1].ToUpper() == "TRIGGER" || tmpNewValues[0].ToUpper() == "END" || (tmpNewValues[0].ToUpper() != "" && tmpNewValues[0].ToUpper() != currentDialogueSpeaker.name.ToUpper()))
                        {
                            triggerIsDone = true;
                            tmpNewDialogueLines.Add(tmpNewDialogueLine);
                        }
                        else
                        {
                            i++;
                        }
                        triggerIndex++;
                    }
                    break;

                default:
                    tmpNewDialogueLine.dialogueLineType = DialogueLineType.TEXT;
                    int  textIndex  = 0;
                    bool textIsDone = false;
                    while (!textIsDone)
                    {
                        values = Regex.Split(lines[i], SPLIT_RE);
                        tmpNewDialogueLine.texts.Add(values[1]);

                        var tmpNewValues = Regex.Split(lines[i + 1], SPLIT_RE);

                        if (i >= lines.Length || tmpNewValues[1].ToUpper() == "TRIGGER" || tmpNewValues[0].ToUpper() == "END" || (tmpNewValues[0].ToUpper() != "" && tmpNewValues[0].ToUpper() != currentDialogueSpeaker.name.ToUpper()))
                        {
                            textIsDone = true;
                            tmpNewDialogueLines.Add(tmpNewDialogueLine);
                        }
                        else
                        {
                            i++;
                        }
                        textIndex++;
                    }
                    break;
                }
            }
        }
    }
Пример #10
0
 // Trigger TextLine Struct
 public DialogueLine(DialogueSpeaker dialogueSpeaker_, List <Trigger> triggers_, List <List <string> > variables_)
 {
     dialogueSpeaker  = dialogueSpeaker_;
     triggers         = triggers_;
     dialogueLineType = Dialogue.DialogueLineType.TRIGGER;
 }