From a08bcd98a481e2a452213472378e2f37a97907a1 Mon Sep 17 00:00:00 2001 From: Ange-Marie MAURIN Date: Sat, 12 Jul 2025 09:41:15 +0200 Subject: [PATCH] Put back OnSequenceReady delegate in PursuitManager + PursuitManager General CleanUp --- .../Private/DTFluxCoreSubsystem.cpp | 6 +- .../Private/DTFluxPursuitManager.cpp | 4 +- .../Public/DTFluxCoreSubsystem.h | 42 +++---------- .../Public/DTFluxPursuitManager.h | 59 ++++++++----------- 4 files changed, 41 insertions(+), 70 deletions(-) diff --git a/Source/DTFluxCoreSubsystem/Private/DTFluxCoreSubsystem.cpp b/Source/DTFluxCoreSubsystem/Private/DTFluxCoreSubsystem.cpp index f60b7c1..a902fbb 100644 --- a/Source/DTFluxCoreSubsystem/Private/DTFluxCoreSubsystem.cpp +++ b/Source/DTFluxCoreSubsystem/Private/DTFluxCoreSubsystem.cpp @@ -62,6 +62,7 @@ void UDTFluxCoreSubsystem::ProcessTrackedResponse(FDTFluxServerResponse& InRespo FDTFluxContestRankings Rankings; if (InResponse.ParseContestRanking(Rankings)) { + OnContestRankings.Broadcast(Rankings.ContestId, Rankings); ProcessContestRanking(Rankings); UE_LOG(logDTFluxCoreSubsystem, Warning, TEXT("ContestRanking added for Contest %s"), *Rankings.ContestName); @@ -77,6 +78,8 @@ void UDTFluxCoreSubsystem::ProcessTrackedResponse(FDTFluxServerResponse& InRespo FDTFluxStageRankings Rankings; if (InResponse.ParseStageRanking(Rankings)) { + FDTFluxStageKey StageKey(Rankings.ContestId, Rankings.StageId); + OnStageRankings.Broadcast(StageKey, Rankings); ProcessStageRanking(Rankings); UE_LOG(logDTFluxCoreSubsystem, Warning, TEXT("ContestRanking added for Stage %i of Contest %i"), Rankings.StageId, Rankings.ContestId); @@ -92,6 +95,8 @@ void UDTFluxCoreSubsystem::ProcessTrackedResponse(FDTFluxServerResponse& InRespo FDTFluxSplitRankings Rankings; if (InResponse.ParseSplitRanking(Rankings)) { + FDTFluxSplitKey SplitKey(Rankings.ContestId, Rankings.StageId, Rankings.SplitId); + OnSplitRankings.Broadcast(SplitKey, Rankings); ProcessSplitRanking(Rankings); UE_LOG(logDTFluxCoreSubsystem, Warning, TEXT("ContestRanking added for Split %i of Stage %i of Contest %i"), @@ -275,7 +280,6 @@ void UDTFluxCoreSubsystem::ProcessSplitSensor(const FDTFluxSplitSensorInfo& Spli SplitSensorInfo.SplitId, SplitSensorInfo.Bib, *Participant.GetFormattedName()); } - void UDTFluxCoreSubsystem::SendRequest(const FString& Message) { if (NetworkSubsystem) diff --git a/Source/DTFluxCoreSubsystem/Private/DTFluxPursuitManager.cpp b/Source/DTFluxCoreSubsystem/Private/DTFluxPursuitManager.cpp index 1f2fb0d..38cb758 100644 --- a/Source/DTFluxCoreSubsystem/Private/DTFluxPursuitManager.cpp +++ b/Source/DTFluxCoreSubsystem/Private/DTFluxPursuitManager.cpp @@ -226,7 +226,7 @@ bool UDTFluxPursuitManager::LaunchPursuitSequence() bool bIsFocusTruncate = false; GetPursuit(FocusPursuits, NextPursuits, bIsFocusTruncate); - FPursuitStaterData PursuitData = FPursuitStaterData(FocusPursuits, NextPursuits, MassStartTime, bIsFocusTruncate); - CoreSubsystem->OnPursuitSequenceReady.Broadcast(PursuitData); + FPursuitStarterData PursuitData = FPursuitStarterData(FocusPursuits, NextPursuits, MassStartTime, bIsFocusTruncate); + OnPursuitSequenceReady.Broadcast(PursuitData); return true; } diff --git a/Source/DTFluxCoreSubsystem/Public/DTFluxCoreSubsystem.h b/Source/DTFluxCoreSubsystem/Public/DTFluxCoreSubsystem.h index 18f9274..5d25c8d 100644 --- a/Source/DTFluxCoreSubsystem/Public/DTFluxCoreSubsystem.h +++ b/Source/DTFluxCoreSubsystem/Public/DTFluxCoreSubsystem.h @@ -17,34 +17,6 @@ class UDTFluxModelAsset; class UDTFluxPursuitManager; struct FDTFluxServerResponse; -USTRUCT(BlueprintType) -struct FPursuitStaterData -{ - GENERATED_BODY() - -public: - FPursuitStaterData() = default; - - FPursuitStaterData(const TArray& InPursuitFocusNext, - const TArray& InPursuitNext, const FDateTime& InMassStartTime, - const bool InIsFocusTruncate) - : PursuitFocusNext(InPursuitFocusNext), PursuitNext(InPursuitNext), MassStartTime(InMassStartTime), - bIsFocusTruncate(InIsFocusTruncate) - { - }; - - UPROPERTY(BlueprintReadOnly, Category="DTFlux|Pursuit") - TArray PursuitFocusNext = TArray(); - UPROPERTY(BlueprintReadOnly, Category="DTFlux|Pursuit") - TArray PursuitNext = TArray(); - UPROPERTY(BlueprintReadOnly, Category="DTFlux|Pursuit") - FDateTime MassStartTime = FDateTime::MinValue(); - UPROPERTY(BlueprintReadOnly, Category="DTFlux|Pursuit") - bool bIsFocusTruncate = false; -}; - - -DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnPursuitSequenceReady, const FPursuitStaterData, PursuitInfoSequenceItem); /** * @@ -55,18 +27,24 @@ class DTFLUXCORESUBSYSTEM_API UDTFluxCoreSubsystem : public UEngineSubsystem GENERATED_BODY() public: - DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnSplitRankings, FDTFluxSplitRankings, SplitRankings); + DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnSplitRankings, FDTFluxSplitKey, SplitKey, FDTFluxSplitRankings, + SplitRankings); UPROPERTY(BlueprintAssignable, Category="DTFlux|Core Subsystem") FOnSplitRankings OnSplitRankings; - DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnStageRankings, FDTFluxStageRankings, StageRankings); + + DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnStageRankings, FDTFluxStageKey, StageKey, FDTFluxStageRankings, + StageRankings); UPROPERTY(BlueprintAssignable, Category="DTFlux|Core Subsystem") FOnStageRankings OnStageRankings; - DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnContestRankings, FDTFluxContestRankings, ContestRankings); + + DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnContestRankings, const int, ContestId, FDTFluxContestRankings, + ContestRankings); UPROPERTY(BlueprintAssignable, Category="DTFlux|Core Subsystem") FOnContestRankings OnContestRankings; + DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnTeamList); UPROPERTY(BlueprintAssignable, Category="DTFlux|Core Subsystem") @@ -82,8 +60,6 @@ public: UPROPERTY(BlueprintAssignable, Category="DTFlux|Core Subsystem") FOnRequestedStageRankings OnRequestedStageRankings; - UPROPERTY(BlueprintAssignable, Category="DTFlux|Core Subsystem") - FOnPursuitSequenceReady OnPursuitSequenceReady; UFUNCTION(BlueprintCallable, Category="DTFlux|Core Subsystem") bool GetContestRankings(const int ContestId, FDTFluxContestRankings& OutContestRankings); diff --git a/Source/DTFluxCoreSubsystem/Public/DTFluxPursuitManager.h b/Source/DTFluxCoreSubsystem/Public/DTFluxPursuitManager.h index 09acb27..28d9339 100644 --- a/Source/DTFluxCoreSubsystem/Public/DTFluxPursuitManager.h +++ b/Source/DTFluxCoreSubsystem/Public/DTFluxPursuitManager.h @@ -10,44 +10,31 @@ class UDTFluxCoreSubsystem; -USTRUCT() -struct FRequestData + +USTRUCT(BlueprintType) +struct FPursuitStarterData { GENERATED_BODY() - UPROPERTY() - TArray RequestIds; - UPROPERTY() - TMap StageRankings; - UPROPERTY() - int ContestId; +public: + FPursuitStarterData() = default; - UPROPERTY() - bool bIsReady = false; - - - FRequestData() = default; - - FRequestData(const TArray& InRequestIds, const TMap& InStageRankings) - : RequestIds(InRequestIds), StageRankings(InStageRankings), ContestId(-1) + FPursuitStarterData(const TArray& InPursuitFocusNext, + const TArray& InPursuitNext, const FDateTime& InMassStartTime, + const bool InIsFocusTruncate) + : PursuitFocusNext(InPursuitFocusNext), PursuitNext(InPursuitNext), MassStartTime(InMassStartTime), + bIsFocusTruncate(InIsFocusTruncate) { }; - /** - * - * @param RequestId - * @param InRankings - * @return True if all needed requests have responses - */ - bool IsWaitingFor(const FGuid& RequestId, const FDTFluxStageRankings& InRankings) - { - if (!StageRankings.Contains(RequestId)) - { - StageRankings.Add(RequestId, InRankings); - } - bIsReady = StageRankings.Num() <= RequestIds.Num(); - return bIsReady; - } + UPROPERTY(BlueprintReadOnly, Category="DTFlux|Pursuit") + TArray PursuitFocusNext = TArray(); + UPROPERTY(BlueprintReadOnly, Category="DTFlux|Pursuit") + TArray PursuitNext = TArray(); + UPROPERTY(BlueprintReadOnly, Category="DTFlux|Pursuit") + FDateTime MassStartTime = FDateTime::MinValue(); + UPROPERTY(BlueprintReadOnly, Category="DTFlux|Pursuit") + bool bIsFocusTruncate = false; }; USTRUCT() @@ -55,6 +42,7 @@ struct FDTFluxPursuitGroup { GENERATED_BODY() + UPROPERTY() TArray PursuitGroup = TArray(); UPROPERTY() @@ -65,7 +53,6 @@ struct FDTFluxPursuitGroup bool bIsFocus = false; }; - /** * */ @@ -78,14 +65,18 @@ public: UDTFluxPursuitManager(const FObjectInitializer& ObjectInitializer); + DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnPursuitSequenceReady, const FPursuitStarterData, PursuitData); + + UPROPERTY(BlueprintAssignable, Category="DTFlux|Core Subsystem") + FOnPursuitSequenceReady OnPursuitSequenceReady; + UPROPERTY(BlueprintReadOnly, VisibleAnywhere) bool bFocusIsTruncate = false; UPROPERTY() int PursuitMaxSimultaneousPursuit = 7; - UPROPERTY(BlueprintReadWrite, EditAnywhere, Category="DTFlux|Pursuit", - meta=(ClampMin="1", ClampMax="60", UIMin="0", UIMax="60")) + UPROPERTY(BlueprintReadWrite, EditAnywhere, Category="DTFlux|Pursuit") int MassStartDelay = 10; UPROPERTY()