From 9aad3975610214ce8738813a7bc59d513767a538 Mon Sep 17 00:00:00 2001 From: Steve Streeting Date: Mon, 9 Jan 2023 13:10:48 +0000 Subject: [PATCH] Add event for when the run name changes --- .../Private/StevesUI/TypewriterTextWidget.cpp | 9 ++++++++- .../Public/StevesUI/TypewriterTextWidget.h | 4 ++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/Source/StevesUEHelpers/Private/StevesUI/TypewriterTextWidget.cpp b/Source/StevesUEHelpers/Private/StevesUI/TypewriterTextWidget.cpp index 8857ada..31ec722 100644 --- a/Source/StevesUEHelpers/Private/StevesUI/TypewriterTextWidget.cpp +++ b/Source/StevesUEHelpers/Private/StevesUI/TypewriterTextWidget.cpp @@ -147,12 +147,19 @@ void UTypewriterTextWidget::PlayNextLetter() return; } - FString WrappedString = CalculateSegments(&CurrentRunName); + FString NewRunName; + const FString WrappedString = CalculateSegments(&NewRunName); if (IsValid(LineText)) { LineText->SetText(FText::FromString(WrappedString)); } + if (NewRunName != CurrentRunName) + { + CurrentRunName = NewRunName; + OnTypewriterRunNameChanged.Broadcast(this, NewRunName); + } + // TODO: How do we keep indexing of text i18n-friendly? if (CurrentLetterIndex < MaxLetterIndex) { diff --git a/Source/StevesUEHelpers/Public/StevesUI/TypewriterTextWidget.h b/Source/StevesUEHelpers/Public/StevesUI/TypewriterTextWidget.h index 2e74f62..afbf2a5 100644 --- a/Source/StevesUEHelpers/Public/StevesUI/TypewriterTextWidget.h +++ b/Source/StevesUEHelpers/Public/StevesUI/TypewriterTextWidget.h @@ -18,6 +18,7 @@ DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnTypewriterLineFinished, class UTypewriterTextWidget*, Widget); DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnTypewriterLetterAdded, class UTypewriterTextWidget*, Widget); +DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnTypewriterRunNameChanged, class UTypewriterTextWidget*, Widget, const FString&, NewRunName); /** * A text block that exposes more information about text layout for typewriter widget. */ @@ -62,6 +63,9 @@ public: /// Event called when one or more new letters have been displayed UPROPERTY(BlueprintAssignable) FOnTypewriterLetterAdded OnTypewriterLetterAdded; + + /// Event called when the "run name" of the text changes aka the rich text style markup. Also called when reverts to default. + FOnTypewriterRunNameChanged OnTypewriterRunNameChanged; UPROPERTY(BlueprintReadOnly, meta = (BindWidget)) URichTextBlockForTypewriter* LineText;