/// <summary> /// Handling animating windows, fadeing in / out canvas etc. /// </summary> protected virtual void Update() { if (IsWorking) { // Animating text canvases AnimateSelectionWindow(); AnimateReplyWindow(); // Controlling switching replys etc. if (ActiveDialogue != null) { ActiveDialogue.DialogueUpdate(); if (hidingReply) { if (softAnimationFinished) { if (ActiveDialogue.Replys != null) { if (ActiveReplyIndex >= ActiveDialogue.Replys.Count) { EndDialogue(AvailableDialogues); } else { ShowReply(); } } } } } OnWorkingUpdate(); if (ActiveReply != null) { ActiveReply.ReplyUpdate(); } } // Controlling main canvas alpha if (!IsHiding) { ConversationUI.MainCanvasG.alpha = Mathf.Lerp(ConversationUI.MainCanvasG.alpha, 1.05f, Time.unscaledDeltaTime * 10f + Time.unscaledDeltaTime * 2f); } else { ConversationUI.MainCanvasG.alpha = Mathf.Lerp(ConversationUI.MainCanvasG.alpha, -0.05f, Time.unscaledDeltaTime * 10f + Time.unscaledDeltaTime * 2f); if (ConversationUI.MainCanvasG.alpha <= 0f) { FinishingHidingConversationSystem(); } } }
/// <summary> /// Viewing reply images and texts /// </summary> protected virtual void ShowReply() { ConversationUI.ReplyCanvasG.blocksRaycasts = true; ConversationUI.DialogueCanvasG.blocksRaycasts = false; ConversationUI.MainCanvasG.blocksRaycasts = true; hidingReply = false; softAnimationFinished = false; ConversationUI.ReplyText.text = ""; string content = ""; content += ActiveReply.Text; ActiveReply.OnReplyStart(); ConversationUI.ReplyText.text = content; SetReplyCameraOrientation(); }
/// <summary> /// Skipping reply to trigger next one /// </summary> protected virtual void SkipReply(bool hard = false, bool hardSkipAnimation = true) { SkipAnimation(); if (!softAnimationFinished) { return; } if (hidingReply) { return; } ActiveReplyIndex += 1; if (ActiveDialogue.Replys.Count > ActiveReplyIndex) { ActiveReply.OnReplySkip(); ActiveReply = ActiveDialogue.Replys[ActiveReplyIndex]; } HideReply(); if (hard) { SkipAnimation(); if (ActiveDialogue.Replys.Count > ActiveReplyIndex) { ShowReply(); if (hardSkipAnimation) { SkipAnimation(); } } } }
/// <summary> /// Generating and showing dialogue options inside conversation /// </summary> protected virtual void ShowDialogueOptions(List <FBasic_DialogueBase> dialogues) { GenerateDialogueOptions(dialogues); ConversationUI.DialogueCanvasG.blocksRaycasts = true; ConversationUI.ReplyCanvasG.blocksRaycasts = false; ConversationUI.MainCanvasG.blocksRaycasts = true; OnShowDialogueOptions(); if (ActiveDialogue != null) { ActiveDialogue.OnDialogueEnd(); } if (ActiveReply != null) { ActiveReply.OnReplySkip(); } ActiveDialogue = null; ActiveReply = null; SetDefaultCameraOrientation(); }