Added Events OnDisplayRankings to launch Display of rankings in BluePrints.

This commit is contained in:
2025-07-14 15:40:03 +02:00
parent 4bbdf43ffa
commit 0a175f7813
8 changed files with 275 additions and 7 deletions

View File

@ -13,6 +13,11 @@ UDTFluxModelAsset::UDTFluxModelAsset(const FObjectInitializer& ObjectInitializer
void UDTFluxModelAsset::AddContest(const FDTFluxContest& Contest)
{
Contests.Add(Contest.Name, Contest);
// initialisation
for (const auto& Stage : Contest.Stages)
{
FinishedStagesCache.Add(FDTFluxStageKey(Contest.ContestId, Stage.StageId), Stage.IsFinished());
}
}
bool UDTFluxModelAsset::GetContestById(const int InContestId, FDTFluxContest& OutContest)
@ -132,6 +137,32 @@ bool UDTFluxModelAsset::GetParticipantByBib(int Bib, FDTFluxParticipant& OutPart
return false;
}
bool UDTFluxModelAsset::IsStageFinished(FDTFluxStageKey StageKey)
{
if (!FinishedStagesCache.Contains(StageKey))
{
if (FinishedStagesCache[StageKey])
{
return true;
}
//maybe stage is finished because we have not be able to set it ?
return CheckStageIsFinished(StageKey);
}
return false;
}
bool UDTFluxModelAsset::CheckStageIsFinished(FDTFluxStageKey StageKey)
{
FDTFluxStage Stage;
if (GetStage(StageKey, Stage))
{
FinishedStagesCache.Add(StageKey, Stage.IsFinished());
return FinishedStagesCache[StageKey];
}
return false;
}
void UDTFluxModelAsset::UpdateOrCreateStageRanking(const FDTFluxStageRankings& InStageRankings)
{

View File

@ -2,6 +2,11 @@
#include "Types/Struct/DTFluxRaceDataStructs.h"
bool FDTFluxStage::IsFinished() const
{
return EndTime <= FDateTime::Now();
}
bool FDTFluxContest::IsFinished() const
{
return EndTime <= FDateTime::Now();
@ -62,6 +67,3 @@ bool FDTFluxContest::GetStage(const int StageID, FDTFluxStage& OutStage) const
}
return false;
}

View File

@ -3,6 +3,12 @@
#include "Types/Struct/DTFluxRankingStructs.h"
#include "DTFluxCoreModule.h"
bool FDTFluxBaseRankings::IsSealed(const FDateTime EndTime) const
{
return ReceivedAt >= EndTime;
}
void FDTFluxContestRanking::Dump() const
{
UE_LOG(logDTFluxCore, Log,

View File

@ -89,4 +89,13 @@ public:
UFUNCTION(BlueprintCallable, CallInEditor, Category="DTFlux|Participant")
bool GetParticipantByBib(int Bib, FDTFluxParticipant& OutParticipant);
UFUNCTION()
bool IsStageFinished(FDTFluxStageKey StageKey);
private:
UPROPERTY()
TMap<FDTFluxStageKey, bool /*bIsFinished*/> FinishedStagesCache;
UFUNCTION()
bool CheckStageIsFinished(FDTFluxStageKey StageKey);
};

View File

@ -51,6 +51,7 @@ public:
FDateTime EndTime;
UPROPERTY(BlueprintReadWrite, Category="DTFlux|model", EditAnywhere)
FDateTime CutOff;
bool IsFinished() const;
};
/**
@ -98,4 +99,4 @@ public:
UPROPERTY()
// ReSharper disable once IdentifierTypo
TArray<FDTFluxContest> Datas;
};
};

View File

@ -8,6 +8,18 @@
#include "DTFluxRankingStructs.generated.h"
USTRUCT(BlueprintType)
struct DTFLUXCORE_API FDTFluxBaseRankings
{
GENERATED_BODY()
public:
UPROPERTY(BlueprintReadOnly, Category="DTFlux|Model", VisibleAnywhere)
FDateTime ReceivedAt = FDateTime::Now();
bool IsSealed(const FDateTime EndTime) const;
};
/**
* @struct FDTFluxContestRanking
* Representing a contest ranking for a participant
@ -37,7 +49,7 @@ public:
USTRUCT(BlueprintType)
struct FDTFluxContestRankings
struct FDTFluxContestRankings : public FDTFluxBaseRankings
{
GENERATED_BODY()
@ -94,7 +106,7 @@ public:
};
USTRUCT(BlueprintType)
struct FDTFluxDetailedRankings
struct FDTFluxDetailedRankings : public FDTFluxBaseRankings
{
GENERATED_BODY()