diff --git a/Source/DTFluxUtilities/Private/FTDFluxUtils.cpp b/Source/DTFluxUtilities/Private/FTDFluxUtils.cpp index c7a22fa..321fabb 100644 --- a/Source/DTFluxUtilities/Private/FTDFluxUtils.cpp +++ b/Source/DTFluxUtilities/Private/FTDFluxUtils.cpp @@ -4,14 +4,20 @@ #include "FTDFluxUtils.h" #include "DTFluxCoreSubsystem.h" +#include "DTFluxUtilitiesModule.h" FText UFTDFluxUtils::GetFormatedName(const int& Bib, const int MaxChar, const FString Separator, const FString OverFlowChar) { UDTFluxCoreSubsystem* CoreSubsystem = GEngine->GetEngineSubsystem(); - FDTFluxParticipant OutParticipant; - CoreSubsystem->GetParticipant(Bib, OutParticipant); - return OutParticipant.GetFormattedNameText(MaxChar, Separator, OverFlowChar); + if (CoreSubsystem == nullptr) + { + FDTFluxParticipant OutParticipant; + CoreSubsystem->GetParticipant(Bib, OutParticipant); + return OutParticipant.GetFormattedNameText(MaxChar, Separator, OverFlowChar); + } + UE_LOG(logDTFluxUtilities, Error, TEXT("DTFluxCoreSubsystem not available")); + return FText(); } FText UFTDFluxUtils::GetParticipantFormatedName(FDTFluxParticipant& Participant, const int MaxChar, @@ -20,3 +26,33 @@ FText UFTDFluxUtils::GetParticipantFormatedName(FDTFluxParticipant& Participant, { return Participant.GetFormattedNameText(MaxChar, Separator, OverFlowChar); } + +void UFTDFluxUtils::GetFullName(const int Bib, FText& OutFullName) +{ + OutFullName = FText(); + UDTFluxCoreSubsystem* CoreSubsystem = GEngine->GetEngineSubsystem(); + FDTFluxParticipant Participant; + CoreSubsystem->GetParticipant(Bib, Participant); + { + FDTFluxParticipant OutParticipant; + if(CoreSubsystem->GetParticipant(Bib, OutParticipant)) + { + FString FormattedName = ""; + if (OutParticipant.IsTeam()) + { + OutFullName = FText::FromString(Participant.Team); + return; + } + if (Participant.GetTeammate().IsEmpty()) + { + UE_LOG(logDTFluxUtilities, Warning, TEXT("Non teammate found with Bib %i"), Bib) + return; + } + OutFullName = FText::FromString(FString::Printf(TEXT("%s %s"), *Participant.GetTeammate()[0].FirstName, + *Participant.GetTeammate()[0].LastName)); + return; + } + UE_LOG(logDTFluxUtilities, Warning, TEXT("Participant not found with Bib %i"), Bib); + } + UE_LOG(logDTFluxUtilities, Error, TEXT("DTFluxCoreSubsystem not available")); +} diff --git a/Source/DTFluxUtilities/Public/FTDFluxUtils.h b/Source/DTFluxUtilities/Public/FTDFluxUtils.h index 059f75b..a3957d4 100644 --- a/Source/DTFluxUtilities/Public/FTDFluxUtils.h +++ b/Source/DTFluxUtilities/Public/FTDFluxUtils.h @@ -66,4 +66,8 @@ public: OutRanking.Add(static_cast(Item)); } } + + UFUNCTION(BlueprintCallable, Category="DTFlux|Utils") + static void GetFullName(const int Bib, FText& OutFullName); + };