protected override void Update() { foreach (PopupObject po in activePopups) { DialoguePopupObject dpo = (DialoguePopupObject)po; int i = po.ID; float popupHeight = dpo.Height; float targetHeight = GetTargetHeight(dpo); float delta = 1f - Mathf.Abs(targetHeight - dpo.transform.anchoredPosition.y) / popupHeight; delta = Mathf.Lerp(delta, 1f, Time.unscaledDeltaTime * popupEntrySpeed); dpo.popupGroup.alpha = i == 0 ? delta : 1f / (i + 1); Vector2 targetPos = po.transform.anchoredPosition; targetPos.y = targetHeight; po.transform.anchoredPosition = Vector2.Lerp(po.transform.anchoredPosition, targetPos, delta); } foreach (PopupObject po in inactivePopups) { DialoguePopupObject dpo = (DialoguePopupObject)po; float delta = dpo.popupGroup.alpha; if (delta <= 0.01f) { dpo.transform.gameObject.SetActive(false); } else { delta = Mathf.Lerp(delta, 0f, Time.unscaledDeltaTime); dpo.popupGroup.alpha = delta; dpo.transform.anchoredPosition += Vector2.right * popupMoveSpeed * Time.unscaledDeltaTime; } } }
private void RevealCharacters() { DialoguePopupObject po = (DialoguePopupObject)GetActivePopupWithID(0); if (po == null) { return; } po.SetCharacterRevealedCount(dialogueController.RevealedCharacterCount); }
protected DialoguePopupObject CreatePopup(bool left) { RectTransform prefab = left ? leftPopupPrefab : rightPopupPrefab; RectTransform popup = Instantiate(prefab); popup.gameObject.SetActive(false); popup.SetParent(transform, false); DialoguePopupObject po = new DialoguePopupObject( popup, hasName ? popup.GetComponentInChildren <DialogueNameUI>() : null, hasLine ? popup.GetComponentInChildren <DialogueLineUI>() : null, hasFace ? popup.GetComponentInChildren <DialogueFaceUI>() : null, popup.GetComponentInChildren <DialogueInputPromptUI>(), popup.GetComponent <CanvasGroup>(), prefab == leftPopupPrefab); inactivePopups.Add(po); return(po); }
protected DialoguePopupObject GetInactivePopup(bool left) { DialoguePopupObject po = null; foreach (DialoguePopupObject dpo in inactivePopups) { if (dpo.isLeft == left) { po = dpo; break; } } if (po == null) { po = CreatePopup(left); } ActivatePopup(po); RevealCharacters(); return(po); }
protected void GeneratePopup(string name, string line, Sprite face, int speakerID, AudioClip tone) { bool useLeftSide = speakerID == 0; if (activePopups.Count == 0) { speakerIDs.Clear(); } else if (activePopups.Count >= popupViewLimit) { RemovePopupsWithID(activePopups.Count - 1); } AddSpeakerID(speakerID); DialoguePopupObject po = GetInactivePopup(useLeftSide); po.SetAll(name, line, face, speakerID, 0f); Vector2 pos = po.transform.anchoredPosition; pos.x = po.xPos; pos.y = po.Height; po.transform.anchoredPosition = pos; po.transform.gameObject.SetActive(true); }