void OnDialogHandlerLifetimeEnded(GameObject sender) { DialogHandler handler = sender.GetComponent <DialogHandler>(); DialogSO nextDialog = handler.dialogSO.nextDialog; if (!handler.dialogSO.isWithNext) // not in the same line { foreach (var item in dialogContainer) { item.GetComponent <DialogHandler>().FadeOutTransition(); } dialogContainer.Clear(); } if (nextDialog != null) { //still on the same character talk if (nextDialog.actor == actor) { Talk(nextDialog); } else { handler.OnObjectDestroyed += OnDialogHandlerObjectDestroyed; } } }
public void EndDialog() { bubble.gameObject.SetActive(false); optionRoot.gameObject.SetActive(false); foreach (Transform child in optionRoot) { Destroy(child.gameObject); } dialogText.text = ""; if (nextDialog != null) { currentLine = 0; StartDialog(nextDialog); nextDialog = null; } else { currentLine = 0; currentDialog = null; talkingTo = null; PlayerController.instance.canMove = true; isTalking = false; } }
public void StartDialog(DialogSO dialog) { PlayerController.instance.canMove = false; isTalking = true; currentDialog = dialog; currentLine = 0; StartCoroutine(PlayNextText()); }
GameObject CreateDialogText(DialogSO dialogSO) { GameObject obj = Instantiate(dialogPrefab) as GameObject; obj.GetComponent <DialogHandler>().SetText(dialogSO, transform); obj.GetComponent <DialogHandler>().OnLifetimeEnded += OnDialogHandlerLifetimeEnded; return(obj); }
void OnDialogHandlerObjectDestroyed(GameObject sender) { DialogHandler handler = sender.GetComponent <DialogHandler>(); DialogSO nextDialog = handler.dialogSO.nextDialog; if (nextDialog != null) { ActorSingleton.shared(nextDialog.actor.ToString()).Talk(nextDialog); } }
public static void CreateMyAsset() { DialogSO asset = ScriptableObject.CreateInstance <DialogSO>(); AssetDatabase.CreateAsset(asset, "Assets/NewDialogObject.asset"); AssetDatabase.SaveAssets(); EditorUtility.FocusProjectWindow(); Selection.activeObject = asset; }
private IEnumerator AnimateSubtitles(DialogSO dialog) { subtitleBox.gameObject.SetActive(true); for (int i = 0; i < dialog.subtitles.Length; ++i) { subtitleText.text = dialog.subtitles[i].line; yield return(new WaitForSeconds(dialog.subtitles[i].time)); } subtitleBox.gameObject.SetActive(false); }
public void PlayDialog(DialogSO dialogObject) { if (dialogAudioSource.isPlaying) { dialogAudioSource.Stop(); StopCoroutine(activeSubtitleRoutine); } dialogAudioSource.clip = dialogObject.clip; dialogAudioSource.Play(); activeSubtitleRoutine = StartCoroutine(AnimateSubtitles(dialogObject)); }
public void SetText(DialogSO dialogSO, Transform parent) { this.dialogSO = dialogSO; this.textLifetime = dialogSO.lifetime; this.TextMeshPro.text = dialogSO.GetText(); this.TextMeshPro.fontSize *= this.GetFontSize(dialogSO.fontSize); this.TextMeshPro.alignment = GetTextAlignment(dialogSO.alignment); this.extraOffset = dialogSO.extraOffset; this.offset += this.GetOffset(dialogSO.alignment); this.parent = parent; Vector3 playerHeight = new Vector3(0, 1.0f, 0); this.transform.position = parent.position + playerHeight; this.GetComponent <RectTransform>().pivot = GetPivot(dialogSO.alignment); FadeInTransition(); }
public void LoadInDialog(DialogSO dialog) { currentDialog = dialog; dialogPieces = new Queue <DialogSO.DialogPiece>(currentDialog.dialogPieces); SetNextDialogPieceAndEnqueueItsSentences(); }
void SetNextDialog(DialogSO dialogSO) { nextDialog = dialogSO; }
public Dialog_End(DialogSO dialog, Character character) { Dialog = dialog; Character = character; }
public Dialog_Start(DialogSO dialog, Character character) { Dialog = dialog; Character = character; }
public void Talk(DialogSO dialog) { AddLineToPreviousText(); dialogContainer.Add(CreateDialogText(dialog)); }
public static void generatedialog() { string basePath = "Assets/ScriptableObject"; DialogSO lastDialogSO = null; string lastCutSceneFolderID = ""; int lastLineIdx = 0; if (LanguageManager.Instance == null) { Debug.LogError("Need to run in PLAY MODE"); return; } foreach (string item in LanguageManager.Instance.GetAllKeys()) { string[] splittedPath = item.Split('.'); if (splittedPath[0] != "Dialog") { continue; } if (splittedPath.Length != 7) { string assetPath = basePath + "/Others"; CreateFolder(assetPath); DialogSO asset = AssetCreator.CreateObject <DialogSO>(item, assetPath); asset.objectID = item; } else { string dialogFolder = splittedPath[0]; string areaFolder = splittedPath[1]; string puzzleFolder = splittedPath[2]; string cutsceneFolder = splittedPath[3]; string dialogLine = splittedPath[4]; string actor = splittedPath[5]; int currLineIdx = int.Parse(dialogLine); string assetPath = basePath + "/" + dialogFolder + "/" + areaFolder + "/" + puzzleFolder + "/" + cutsceneFolder; string filePath = assetPath + "/" + item + ".asset"; // Dialog.A01.P02.CS01.01.Lev.01 CreateFolder(assetPath); DialogSO asset = null; if (!File.Exists(filePath)) { asset = AssetCreator.CreateObject <DialogSO>(item, assetPath); asset.objectID = item; asset.alignment = DialogAlignmentType.TopCenter; asset.SetActor(actor); } else { asset = AssetDatabase.LoadAssetAtPath <DialogSO>(filePath); } if (cutsceneFolder.Equals(lastCutSceneFolderID)) //if in the same cutscene folder { if (currLineIdx > lastLineIdx) { lastDialogSO.nextDialog = asset; lastLineIdx = currLineIdx; } } else //reset { lastLineIdx = 0; } lastCutSceneFolderID = cutsceneFolder; lastDialogSO = asset; EditorUtility.SetDirty(asset); } } Debug.Log("GENERATE SUCCESSFUL"); }