Cosmetic CoreSubsystem cleaning + Added DTFluxDetailedRanking Casting functions

This commit is contained in:
2025-07-14 09:33:25 +02:00
parent 1c04ae6bd7
commit 51e5898d4b
4 changed files with 153 additions and 119 deletions

View File

@ -617,3 +617,78 @@ TArray<FDTFluxContest> UDTFluxCoreSubsystem::GetContests()
}
return TArray<FDTFluxContest>();
}
void UDTFluxCoreSubsystem::GetContest(const int ContestId, FDTFluxContest& OutContest)
{
OutContest = FDTFluxContest();
if (GetContestForId(ContestId, OutContest))
{
return;
}
UE_LOG(logDTFluxCoreSubsystem, Warning, TEXT("ContestId %d not found in ContestDefinition"), ContestId)
}
bool UDTFluxCoreSubsystem::GetStageDefinition(const FDTFluxStageKey StageKey, FDTFluxStage& OutStageDefinition)
{
int ContestId = StageKey.ContestId;
int StageId = StageKey.StageId;
FDTFluxContest ContestDefinition;
if (GetContestForId(ContestId, ContestDefinition))
{
for (auto& Stage : ContestDefinition.Stages)
{
if (Stage.StageId == StageId)
{
OutStageDefinition = Stage;
return true;
}
}
}
OutStageDefinition = FDTFluxStage();
UE_LOG(logDTFluxCoreSubsystem, Warning, TEXT("ContestId %d, StageId %d not found in ContestDefinition"),
ContestId, StageId)
return false;
}
bool UDTFluxCoreSubsystem::GetSplitDefinition(const FDTFluxSplitKey SplitKey, FDTFluxSplit& OutSplitDefinition)
{
int ContestId = SplitKey.ContestId;
int SplitId = SplitKey.SplitId;
FDTFluxContest ContestDefinition;
if (GetContestForId(ContestId, ContestDefinition))
{
for (auto& Split : ContestDefinition.Splits)
{
if (Split.SplitId == SplitId)
{
OutSplitDefinition = Split;
return true;
}
}
}
OutSplitDefinition = FDTFluxSplit();
UE_LOG(logDTFluxCoreSubsystem, Warning, TEXT("ContestId %d, SplitId %d not found in ContestDefinition"),
ContestId, SplitId);
return false;
}
void UDTFluxCoreSubsystem::GetStage(const int ContestId, const int StageId, FDTFluxStage& OutStageDefinition)
{
if (GetStageDefinition(FDTFluxStageKey(ContestId, StageId),
OutStageDefinition))
{
return;
}
OutStageDefinition = FDTFluxStage();
}
void UDTFluxCoreSubsystem::GetSplit(const int ContestId, const int StageId, const int SplitId,
FDTFluxSplit& OutSplitDefinition)
{
if (GetSplitDefinition(FDTFluxSplitKey(ContestId, StageId, SplitId),
OutSplitDefinition))
{
return;
}
OutSplitDefinition = FDTFluxSplit();
}

View File

@ -74,53 +74,39 @@ public:
UPROPERTY(BlueprintReadOnly, Category="DTFlux|Core Subsystem")
FOnWinner OnWinner;
UFUNCTION(BlueprintCallable, Category="DTFlux|Core Subsystem")
bool GetStageRankingForBib(const int ContestId, const int StageId, const int Bib,
FDTFluxStageRanking& OutStageRankings);
UFUNCTION(BlueprintCallable, Category="DTFlux|Core Subsystem")
bool GetSplitRankingForBib(const int ContestId, const int StageId, const int SplitId, const int Bib,
FDTFluxSplitRanking& OutSplitRankings);
UFUNCTION(BlueprintCallable, Category="DTFlux|Core Subsystem")
bool GetContestRanking(const int ContestId, FDTFluxContestRanking& OutContestRanking);
UFUNCTION(BlueprintCallable, Category="DTFlux|Core Subsystem")
bool GetContestRankings(const int ContestId, FDTFluxContestRankings& OutContestRankings);
UFUNCTION(BlueprintCallable, Category="DTFlux|Core Subsystem")
bool GetStageRankings(const int ContestId, const int StageId, FDTFluxStageRankings& OutStageRankings);
UFUNCTION(BlueprintCallable, Category="DTFlux|Core Subsystem")
bool GetSplitRankings(const int ContestId, const int StageId, const int SplitId,
FDTFluxSplitRankings& OutSplitRankings);
UFUNCTION(BlueprintCallable, Category="DTFlux|Core Subsystem")
bool GetStageRankingsWithKey(const FDTFluxStageKey StageKey, FDTFluxStageRankings& OutStageRankings,
const bool bShouldUseCached = true);
UFUNCTION(BlueprintCallable, Category="DTFlux|Core Subsystem")
bool GetSplitRankingsWithKey(const FDTFluxSplitKey SplitKey, FDTFluxSplitRankings& OutSplitRankings,
const bool bShouldUseCached = true);
UFUNCTION(BlueprintCallable, Category="DTFlux|Core Subsystem")
TArray<FGuid> TrackedRequestContestRankings(const TArray<int> ForContests, bool bEnableCache = true);
UFUNCTION(BlueprintCallable, Category="DTFlux|Core Subsystem")
TArray<FGuid> TrackedRequestStageRankings(const TArray<FDTFluxStageKey> ForStages, bool bEnableCache = true);
UFUNCTION(BlueprintCallable, Category="DTFlux|Core Subsystem")
TArray<FGuid> TrackedRequestSplitRankings(const TArray<FDTFluxSplitKey> ForSplits, bool bEnableCache = true);
UFUNCTION(BlueprintCallable, Category="DTFlux|Core Subsystem")
bool GetParticipant(int InBib, FDTFluxParticipant& OutParticipant);
//TODO : this must be a ProjectSetting
UPROPERTY(BlueprintReadOnly, Category="DTFlux|Core Subsystem")
bool bShouldKeepRankings = true;
UFUNCTION(BlueprintCallable, Category="DTFlux|Core Subsystem")
bool GetStageRankingForBib(const int ContestId, const int StageId, const int Bib,
FDTFluxStageRanking& OutStageRankings);
UFUNCTION(BlueprintCallable, Category="DTFlux|Core Subsystem")
bool GetSplitRankingForBib(const int ContestId, const int StageId, const int SplitId, const int Bib,
FDTFluxSplitRanking& OutSplitRankings);
UFUNCTION(BlueprintCallable, Category="DTFlux|Core Subsystem")
bool GetContestRanking(const int ContestId, FDTFluxContestRanking& OutContestRanking);
UFUNCTION(BlueprintCallable, Category="DTFlux|Core Subsystem")
bool GetContestRankings(const int ContestId, FDTFluxContestRankings& OutContestRankings);
UFUNCTION(BlueprintCallable, Category="DTFlux|Core Subsystem")
bool GetStageRankings(const int ContestId, const int StageId, FDTFluxStageRankings& OutStageRankings);
UFUNCTION(BlueprintCallable, Category="DTFlux|Core Subsystem")
bool GetSplitRankings(const int ContestId, const int StageId, const int SplitId,
FDTFluxSplitRankings& OutSplitRankings);
UFUNCTION(BlueprintCallable, Category="DTFlux|Core Subsystem")
bool GetStageRankingsWithKey(const FDTFluxStageKey StageKey, FDTFluxStageRankings& OutStageRankings,
const bool bShouldUseCached = true);
UFUNCTION(BlueprintCallable, Category="DTFlux|Core Subsystem")
bool GetSplitRankingsWithKey(const FDTFluxSplitKey SplitKey, FDTFluxSplitRankings& OutSplitRankings,
const bool bShouldUseCached = true);
UFUNCTION(BlueprintCallable, Category="DTFlux|Core Subsystem")
TArray<FGuid> TrackedRequestContestRankings(const TArray<int> ForContests, bool bEnableCache = true);
UFUNCTION(BlueprintCallable, Category="DTFlux|Core Subsystem")
TArray<FGuid> TrackedRequestStageRankings(const TArray<FDTFluxStageKey> ForStages, bool bEnableCache = true);
UFUNCTION(BlueprintCallable, Category="DTFlux|Core Subsystem")
TArray<FGuid> TrackedRequestSplitRankings(const TArray<FDTFluxSplitKey> ForSplits, bool bEnableCache = true);
UFUNCTION(BlueprintCallable, Category="DTFlux|Core Subsystem")
bool GetParticipant(int InBib, FDTFluxParticipant& OutParticipant);
UFUNCTION()
TArray<int> GetCurrentContestsId();
UFUNCTION()
@ -131,90 +117,20 @@ public:
bool GetContestForId(const int Id, FDTFluxContest& OutContest);
UFUNCTION(BlueprintCallable, Category="DTFlux|Core Subsystem")
TArray<FDTFluxContest> GetContestsForTime(const FDateTime Time);
UFUNCTION()
void RequestRankingsForStages(const TArray<FDTFluxStage> RequestedStages) const;
UFUNCTION()
TArray<FDTFluxContest> GetContests();
UFUNCTION(BlueprintCallable, Category="DTFlux|Core Subsystem")
void GetContest(const int ContestId, FDTFluxContest& OutContest)
{
OutContest = FDTFluxContest();
if (GetContestForId(ContestId, OutContest))
{
return;
}
UE_LOG(logDTFluxCoreSubsystem, Warning, TEXT("ContestId %d not found in ContestDefinition"), ContestId)
}
void GetContest(const int ContestId, FDTFluxContest& OutContest);
UFUNCTION(BlueprintCallable, Category="DTFlux|Core Subsystem")
bool GetStageDefinition(const FDTFluxStageKey StageKey, FDTFluxStage& OutStageDefinition)
{
int ContestId = StageKey.ContestId;
int StageId = StageKey.StageId;
FDTFluxContest ContestDefinition;
if (GetContestForId(ContestId, ContestDefinition))
{
for (auto& Stage : ContestDefinition.Stages)
{
if (Stage.StageId == StageId)
{
OutStageDefinition = Stage;
return true;
}
}
}
OutStageDefinition = FDTFluxStage();
UE_LOG(logDTFluxCoreSubsystem, Warning, TEXT("ContestId %d, StageId %d not found in ContestDefinition"),
ContestId, StageId)
return false;
}
bool GetStageDefinition(const FDTFluxStageKey StageKey, FDTFluxStage& OutStageDefinition);
UFUNCTION(BlueprintCallable, Category="DTFlux|Core Subsystem")
bool GetSplitDefinition(const FDTFluxSplitKey SplitKey, FDTFluxSplit& OutSplitDefinition)
{
int ContestId = SplitKey.ContestId;
int SplitId = SplitKey.SplitId;
FDTFluxContest ContestDefinition;
if (GetContestForId(ContestId, ContestDefinition))
{
for (auto& Split : ContestDefinition.Splits)
{
if (Split.SplitId == SplitId)
{
OutSplitDefinition = Split;
return true;
}
}
}
OutSplitDefinition = FDTFluxSplit();
UE_LOG(logDTFluxCoreSubsystem, Warning, TEXT("ContestId %d, SplitId %d not found in ContestDefinition"),
ContestId, SplitId);
return false;
}
bool GetSplitDefinition(const FDTFluxSplitKey SplitKey, FDTFluxSplit& OutSplitDefinition);
UFUNCTION(BlueprintCallable, Category="DTFlux|Core Subsystem")
void GetStage(const int ContestId, const int StageId, FDTFluxStage& OutStageDefinition)
{
if (GetStageDefinition(FDTFluxStageKey(ContestId, StageId),
OutStageDefinition))
{
return;
}
OutStageDefinition = FDTFluxStage();
}
void GetStage(const int ContestId, const int StageId, FDTFluxStage& OutStageDefinition);
UFUNCTION(BlueprintCallable, Category="DTFlux|Core Subsystem")
void GetSplit(const int ContestId, const int StageId, const int SplitId, FDTFluxSplit& OutSplitDefinition)
{
if (GetSplitDefinition(FDTFluxSplitKey(ContestId, StageId, SplitId),
OutSplitDefinition))
{
return;
}
OutSplitDefinition = FDTFluxSplit();
}
void GetSplit(const int ContestId, const int StageId, const int SplitId, FDTFluxSplit& OutSplitDefinition);
protected:
// ~Subsystem Interface