Put back OnSequenceReady delegate in PursuitManager + PursuitManager General CleanUp

This commit is contained in:
2025-07-12 09:41:15 +02:00
parent d7a189f905
commit a08bcd98a4
4 changed files with 41 additions and 70 deletions

View File

@ -62,6 +62,7 @@ void UDTFluxCoreSubsystem::ProcessTrackedResponse(FDTFluxServerResponse& InRespo
FDTFluxContestRankings Rankings; FDTFluxContestRankings Rankings;
if (InResponse.ParseContestRanking(Rankings)) if (InResponse.ParseContestRanking(Rankings))
{ {
OnContestRankings.Broadcast(Rankings.ContestId, Rankings);
ProcessContestRanking(Rankings); ProcessContestRanking(Rankings);
UE_LOG(logDTFluxCoreSubsystem, Warning, TEXT("ContestRanking added for Contest %s"), UE_LOG(logDTFluxCoreSubsystem, Warning, TEXT("ContestRanking added for Contest %s"),
*Rankings.ContestName); *Rankings.ContestName);
@ -77,6 +78,8 @@ void UDTFluxCoreSubsystem::ProcessTrackedResponse(FDTFluxServerResponse& InRespo
FDTFluxStageRankings Rankings; FDTFluxStageRankings Rankings;
if (InResponse.ParseStageRanking(Rankings)) if (InResponse.ParseStageRanking(Rankings))
{ {
FDTFluxStageKey StageKey(Rankings.ContestId, Rankings.StageId);
OnStageRankings.Broadcast(StageKey, Rankings);
ProcessStageRanking(Rankings); ProcessStageRanking(Rankings);
UE_LOG(logDTFluxCoreSubsystem, Warning, TEXT("ContestRanking added for Stage %i of Contest %i"), UE_LOG(logDTFluxCoreSubsystem, Warning, TEXT("ContestRanking added for Stage %i of Contest %i"),
Rankings.StageId, Rankings.ContestId); Rankings.StageId, Rankings.ContestId);
@ -92,6 +95,8 @@ void UDTFluxCoreSubsystem::ProcessTrackedResponse(FDTFluxServerResponse& InRespo
FDTFluxSplitRankings Rankings; FDTFluxSplitRankings Rankings;
if (InResponse.ParseSplitRanking(Rankings)) if (InResponse.ParseSplitRanking(Rankings))
{ {
FDTFluxSplitKey SplitKey(Rankings.ContestId, Rankings.StageId, Rankings.SplitId);
OnSplitRankings.Broadcast(SplitKey, Rankings);
ProcessSplitRanking(Rankings); ProcessSplitRanking(Rankings);
UE_LOG(logDTFluxCoreSubsystem, Warning, UE_LOG(logDTFluxCoreSubsystem, Warning,
TEXT("ContestRanking added for Split %i of Stage %i of Contest %i"), 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()); SplitSensorInfo.SplitId, SplitSensorInfo.Bib, *Participant.GetFormattedName());
} }
void UDTFluxCoreSubsystem::SendRequest(const FString& Message) void UDTFluxCoreSubsystem::SendRequest(const FString& Message)
{ {
if (NetworkSubsystem) if (NetworkSubsystem)

View File

@ -226,7 +226,7 @@ bool UDTFluxPursuitManager::LaunchPursuitSequence()
bool bIsFocusTruncate = false; bool bIsFocusTruncate = false;
GetPursuit(FocusPursuits, NextPursuits, bIsFocusTruncate); GetPursuit(FocusPursuits, NextPursuits, bIsFocusTruncate);
FPursuitStaterData PursuitData = FPursuitStaterData(FocusPursuits, NextPursuits, MassStartTime, bIsFocusTruncate); FPursuitStarterData PursuitData = FPursuitStarterData(FocusPursuits, NextPursuits, MassStartTime, bIsFocusTruncate);
CoreSubsystem->OnPursuitSequenceReady.Broadcast(PursuitData); OnPursuitSequenceReady.Broadcast(PursuitData);
return true; return true;
} }

View File

@ -17,34 +17,6 @@ class UDTFluxModelAsset;
class UDTFluxPursuitManager; class UDTFluxPursuitManager;
struct FDTFluxServerResponse; struct FDTFluxServerResponse;
USTRUCT(BlueprintType)
struct FPursuitStaterData
{
GENERATED_BODY()
public:
FPursuitStaterData() = default;
FPursuitStaterData(const TArray<FDTFluxPursuitInfo>& InPursuitFocusNext,
const TArray<FDTFluxPursuitInfo>& InPursuitNext, const FDateTime& InMassStartTime,
const bool InIsFocusTruncate)
: PursuitFocusNext(InPursuitFocusNext), PursuitNext(InPursuitNext), MassStartTime(InMassStartTime),
bIsFocusTruncate(InIsFocusTruncate)
{
};
UPROPERTY(BlueprintReadOnly, Category="DTFlux|Pursuit")
TArray<FDTFluxPursuitInfo> PursuitFocusNext = TArray<FDTFluxPursuitInfo>();
UPROPERTY(BlueprintReadOnly, Category="DTFlux|Pursuit")
TArray<FDTFluxPursuitInfo> PursuitNext = TArray<FDTFluxPursuitInfo>();
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() GENERATED_BODY()
public: 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") UPROPERTY(BlueprintAssignable, Category="DTFlux|Core Subsystem")
FOnSplitRankings OnSplitRankings; 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") UPROPERTY(BlueprintAssignable, Category="DTFlux|Core Subsystem")
FOnStageRankings OnStageRankings; 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") UPROPERTY(BlueprintAssignable, Category="DTFlux|Core Subsystem")
FOnContestRankings OnContestRankings; FOnContestRankings OnContestRankings;
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnTeamList); DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnTeamList);
UPROPERTY(BlueprintAssignable, Category="DTFlux|Core Subsystem") UPROPERTY(BlueprintAssignable, Category="DTFlux|Core Subsystem")
@ -82,8 +60,6 @@ public:
UPROPERTY(BlueprintAssignable, Category="DTFlux|Core Subsystem") UPROPERTY(BlueprintAssignable, Category="DTFlux|Core Subsystem")
FOnRequestedStageRankings OnRequestedStageRankings; FOnRequestedStageRankings OnRequestedStageRankings;
UPROPERTY(BlueprintAssignable, Category="DTFlux|Core Subsystem")
FOnPursuitSequenceReady OnPursuitSequenceReady;
UFUNCTION(BlueprintCallable, Category="DTFlux|Core Subsystem") UFUNCTION(BlueprintCallable, Category="DTFlux|Core Subsystem")
bool GetContestRankings(const int ContestId, FDTFluxContestRankings& OutContestRankings); bool GetContestRankings(const int ContestId, FDTFluxContestRankings& OutContestRankings);

View File

@ -10,44 +10,31 @@
class UDTFluxCoreSubsystem; class UDTFluxCoreSubsystem;
USTRUCT()
struct FRequestData USTRUCT(BlueprintType)
struct FPursuitStarterData
{ {
GENERATED_BODY() GENERATED_BODY()
UPROPERTY() public:
TArray<FGuid> RequestIds; FPursuitStarterData() = default;
UPROPERTY()
TMap<FGuid, FDTFluxStageRankings> StageRankings;
UPROPERTY()
int ContestId;
UPROPERTY() FPursuitStarterData(const TArray<FDTFluxPursuitInfo>& InPursuitFocusNext,
bool bIsReady = false; const TArray<FDTFluxPursuitInfo>& InPursuitNext, const FDateTime& InMassStartTime,
const bool InIsFocusTruncate)
: PursuitFocusNext(InPursuitFocusNext), PursuitNext(InPursuitNext), MassStartTime(InMassStartTime),
FRequestData() = default; bIsFocusTruncate(InIsFocusTruncate)
FRequestData(const TArray<FGuid>& InRequestIds, const TMap<FGuid, FDTFluxStageRankings>& InStageRankings)
: RequestIds(InRequestIds), StageRankings(InStageRankings), ContestId(-1)
{ {
}; };
/** UPROPERTY(BlueprintReadOnly, Category="DTFlux|Pursuit")
* TArray<FDTFluxPursuitInfo> PursuitFocusNext = TArray<FDTFluxPursuitInfo>();
* @param RequestId UPROPERTY(BlueprintReadOnly, Category="DTFlux|Pursuit")
* @param InRankings TArray<FDTFluxPursuitInfo> PursuitNext = TArray<FDTFluxPursuitInfo>();
* @return True if all needed requests have responses UPROPERTY(BlueprintReadOnly, Category="DTFlux|Pursuit")
*/ FDateTime MassStartTime = FDateTime::MinValue();
bool IsWaitingFor(const FGuid& RequestId, const FDTFluxStageRankings& InRankings) UPROPERTY(BlueprintReadOnly, Category="DTFlux|Pursuit")
{ bool bIsFocusTruncate = false;
if (!StageRankings.Contains(RequestId))
{
StageRankings.Add(RequestId, InRankings);
}
bIsReady = StageRankings.Num() <= RequestIds.Num();
return bIsReady;
}
}; };
USTRUCT() USTRUCT()
@ -55,6 +42,7 @@ struct FDTFluxPursuitGroup
{ {
GENERATED_BODY() GENERATED_BODY()
UPROPERTY() UPROPERTY()
TArray<FDTFluxPursuitInfo> PursuitGroup = TArray<FDTFluxPursuitInfo>(); TArray<FDTFluxPursuitInfo> PursuitGroup = TArray<FDTFluxPursuitInfo>();
UPROPERTY() UPROPERTY()
@ -65,7 +53,6 @@ struct FDTFluxPursuitGroup
bool bIsFocus = false; bool bIsFocus = false;
}; };
/** /**
* *
*/ */
@ -78,14 +65,18 @@ public:
UDTFluxPursuitManager(const FObjectInitializer& ObjectInitializer); UDTFluxPursuitManager(const FObjectInitializer& ObjectInitializer);
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnPursuitSequenceReady, const FPursuitStarterData, PursuitData);
UPROPERTY(BlueprintAssignable, Category="DTFlux|Core Subsystem")
FOnPursuitSequenceReady OnPursuitSequenceReady;
UPROPERTY(BlueprintReadOnly, VisibleAnywhere) UPROPERTY(BlueprintReadOnly, VisibleAnywhere)
bool bFocusIsTruncate = false; bool bFocusIsTruncate = false;
UPROPERTY() UPROPERTY()
int PursuitMaxSimultaneousPursuit = 7; int PursuitMaxSimultaneousPursuit = 7;
UPROPERTY(BlueprintReadWrite, EditAnywhere, Category="DTFlux|Pursuit", UPROPERTY(BlueprintReadWrite, EditAnywhere, Category="DTFlux|Pursuit")
meta=(ClampMin="1", ClampMax="60", UIMin="0", UIMax="60"))
int MassStartDelay = 10; int MassStartDelay = 10;
UPROPERTY() UPROPERTY()