58. Broadcasting Data Table Rows

This commit is contained in:
2024-04-26 20:08:08 -04:00
parent e8fb014d29
commit fe2abe1972
27 changed files with 127 additions and 26 deletions

View File

@ -2,6 +2,9 @@
#include "AbilitySystem/GasaAbilitySystemComponent_Inlines.h"
#include "AbilitySystem/GasaAttributeSet.h"
#include "GameplayEffectTypes.h"
#include "GasaDevOptions.h"
#include "TaggedMessageRow.h"
using namespace Gasa;
@ -30,6 +33,20 @@ void UHostWidgetController::MaxManaChanged( FOnAttributeChangeData const& Attrib
}
#pragma endregion Attribute Changed Callbacks
void UHostWidgetController::OnEffectAppliedAssetTags( FGameplayTagContainer const& AssetTags )
{
UDataTable* TaggedMessages = GetDevOptions()->TaggedMessageTable.Get();
for ( FGameplayTag const& Tag : AssetTags )
{
FGameplayTag MessageTagCategory = FGameplayTag::RequestGameplayTag( FName( "Message" ) );
if ( ! Tag.MatchesTag( MessageTagCategory ) )
continue;
FTaggedMessageRow* Row = TaggedMessages->FindRow<FTaggedMessageRow>( Tag.GetTagName(), TEXT( "" ) );
OnTaggedAssetMessage.Broadcast( *Row );
}
}
void UHostWidgetController::BroadcastInitialValues()
{
// This function is managed by: GenGasa/GenGasa_HostWidgetController.cpp
@ -66,4 +83,6 @@ void UHostWidgetController::BindCallbacksToDependencies()
FOnGameplayAttributeValueChange& MaxManaAttributeChangedDelegate =
AbilitySystem->GetGameplayAttributeValueChangeDelegate( GasaAttribs->GetMaxManaAttribute() );
MaxManaAttributeChangedDelegate.AddUObject( this, &ThisClass::MaxManaChanged );
AbilitySystem->Event_OnEffectAppliedAssetTags.AddUObject( this, &UHostWidgetController::OnEffectAppliedAssetTags );
}

View File

@ -1,7 +1,10 @@
#pragma once
#include "GasaCommon.h"
#include "TaggedMessageRow.h"
#include "WidgetController.h"
#include "HostWidgetController.generated.h"
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam( FAttributeFloatChangedSig, float, NewValue );
UCLASS( Blueprintable, BlueprintType )
@ -30,6 +33,11 @@ public:
void MaxManaChanged( FOnAttributeChangeData const& Data );
#pragma endregion Attribute Events
UPROPERTY( BlueprintAssignable, Category = "Messages" )
FTaggedMessageRowSig OnTaggedAssetMessage;
void OnEffectAppliedAssetTags( FGameplayTagContainer const& AssetTags );
#pragma region WidgetController
void BroadcastInitialValues() override;
void BindCallbacksToDependencies() override;

View File

@ -0,0 +1,28 @@
#pragma once
#include "GameplayTagContainer.h"
#include "GasaCommon.h"
#include "Engine/DataTable.h"
#include "Templates/SubclassOf.h"
#include "TaggedMessageRow.generated.h"
USTRUCT(BlueprintType)
struct FTaggedMessageRow : public FTableRowBase
{
GENERATED_BODY()
UPROPERTY(EditAnywhere, BlueprintReadOnly)
FGameplayTag Tag;
UPROPERTY(EditAnywhere, BlueprintReadOnly)
FText Message;
UPROPERTY(EditAnywhere, BlueprintReadOnly)
TSubclassOf<UGasaUserWidget> MessageTemplate;
UPROPERTY(EditAnywhere, BlueprintReadOnly)
UTexture2D* Image;
};
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FTaggedMessageRowSig, FTaggedMessageRow, Message);