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 } }
// Normal TextLine Struct public DialogueLine(DialogueSpeaker dialogueSpeaker_, List <string> texts_, List <float> lettersPerSeconds_) { dialogueSpeaker = dialogueSpeaker_; texts = texts_; lettersPerSeconds = lettersPerSeconds_; dialogueLineType = Dialogue.DialogueLineType.TEXT; }
// 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> (); }
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; } }
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); }
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); } }
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(); } }
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); }
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; } } } }
// Trigger TextLine Struct public DialogueLine(DialogueSpeaker dialogueSpeaker_, List <Trigger> triggers_, List <List <string> > variables_) { dialogueSpeaker = dialogueSpeaker_; triggers = triggers_; dialogueLineType = Dialogue.DialogueLineType.TRIGGER; }