Added Getter Stage/Contest/Split + Bug Fix PursuitManager Extract Passed Started Pursuit.
This commit is contained in:
@ -70,13 +70,14 @@ void UDTFluxPursuitManager::GetPursuit(TArray<FDTFluxPursuitInfo>& OutPursuitFoc
|
||||
TArray<FDTFluxPursuitInfo>& OutPursuitNext, bool& BIsFocusTruncate,
|
||||
const int MaxSimultaneousPursuit)
|
||||
{
|
||||
FDateTime CurrentTime = FDateTime::UtcNow();
|
||||
FDateTime MetricsStartFunction = FDateTime::UtcNow();
|
||||
FDateTime CurrentTime = FDateTime::Now();
|
||||
|
||||
UE_LOG(logDTFluxCoreSubsystem, Warning, TEXT("=== GetPursuit CALLED ==="));
|
||||
UE_LOG(logDTFluxCoreSubsystem, Warning, TEXT("MaxSimultaneousPursuit: %d"), MaxSimultaneousPursuit);
|
||||
UE_LOG(logDTFluxCoreSubsystem, Warning, TEXT("Available groups: %d"), GroupedPursuit.Num());
|
||||
// UE_LOG(logDTFluxCoreSubsystem, Warning, TEXT("=== GetPursuit CALLED ==="));
|
||||
// UE_LOG(logDTFluxCoreSubsystem, Warning, TEXT("MaxSimultaneousPursuit: %d"), MaxSimultaneousPursuit);
|
||||
// UE_LOG(logDTFluxCoreSubsystem, Warning, TEXT("Available groups: %d"), GroupedPursuit.Num());
|
||||
|
||||
// Validation
|
||||
// BAd Parameter
|
||||
if (MaxSimultaneousPursuit <= 0)
|
||||
{
|
||||
UE_LOG(logDTFluxCoreSubsystem, Error, TEXT("Invalid MaxSimultaneousPursuit: %d"), MaxSimultaneousPursuit);
|
||||
@ -85,8 +86,6 @@ void UDTFluxPursuitManager::GetPursuit(TArray<FDTFluxPursuitInfo>& OutPursuitFoc
|
||||
BIsFocusTruncate = false;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (bIsSequenceDone || GroupedPursuit.IsEmpty())
|
||||
{
|
||||
UE_LOG(logDTFluxCoreSubsystem, Warning, TEXT("No groups available or sequence completed"));
|
||||
@ -95,12 +94,11 @@ void UDTFluxPursuitManager::GetPursuit(TArray<FDTFluxPursuitInfo>& OutPursuitFoc
|
||||
BIsFocusTruncate = false;
|
||||
return;
|
||||
}
|
||||
|
||||
int32 RemovedGroupsCount = 0;
|
||||
for (int32 i = GroupedPursuit.Num() - 1; i >= 0; i--) // Parcours inverse pour éviter les problèmes d'index
|
||||
{
|
||||
const FDTFluxPursuitGroup& Group = GroupedPursuit[i];
|
||||
|
||||
UE_LOG(logDTFluxCoreSubsystem, Log, TEXT("Group.StartTimeGlobal(%s) < CurrentTime(%s) "),
|
||||
*Group.StartTimeGlobal.ToString(), *CurrentTime.ToString())
|
||||
// Vérifier si le StartTime du groupe est déjà passé
|
||||
if (Group.StartTimeGlobal < CurrentTime)
|
||||
{
|
||||
@ -111,13 +109,24 @@ void UDTFluxPursuitManager::GetPursuit(TArray<FDTFluxPursuitInfo>& OutPursuitFoc
|
||||
Group.PursuitGroup.Num());
|
||||
|
||||
GroupedPursuit.RemoveAt(i);
|
||||
RemovedGroupsCount++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
OutPursuitFocusNext.Reset();
|
||||
OutPursuitNext.Reset();
|
||||
|
||||
// === VÉRIFICATION CRITIQUE : S'assurer qu'il reste des groupes après suppression ===
|
||||
if (GroupedPursuit.IsEmpty())
|
||||
{
|
||||
UE_LOG(logDTFluxCoreSubsystem, Warning, TEXT("All groups were expired and removed - no groups available"));
|
||||
OutPursuitFocusNext.Reset();
|
||||
OutPursuitNext.Reset();
|
||||
BIsFocusTruncate = false;
|
||||
bIsSequenceDone = true; // Marquer la séquence comme terminée
|
||||
return;
|
||||
}
|
||||
|
||||
FDTFluxPursuitGroup FocusGroup = GroupedPursuit[0];
|
||||
GroupedPursuit.RemoveAt(0);
|
||||
|
||||
@ -136,7 +145,6 @@ void UDTFluxPursuitManager::GetPursuit(TArray<FDTFluxPursuitInfo>& OutPursuitFoc
|
||||
|
||||
UE_LOG(logDTFluxCoreSubsystem, Warning, TEXT("Target Next Count: %d"), TargetNextCount);
|
||||
|
||||
// ✅ PARCOURIR les groupes restants SANS les modifier
|
||||
for (int32 GroupIndex = 0;
|
||||
GroupIndex < GroupedPursuit.Num() && AddedNextCount < TargetNextCount;
|
||||
GroupIndex++)
|
||||
@ -158,7 +166,6 @@ void UDTFluxPursuitManager::GetPursuit(TArray<FDTFluxPursuitInfo>& OutPursuitFoc
|
||||
AvailableInGroup,
|
||||
NeededFromGroup);
|
||||
|
||||
// ✅ COPIER les participants nécessaires (SANS les supprimer du groupe)
|
||||
for (int32 ParticipantIndex = 0; ParticipantIndex < NeededFromGroup; ParticipantIndex++)
|
||||
{
|
||||
FDTFluxPursuitInfo NextParticipant = NextGroup.PursuitGroup[ParticipantIndex]; // Copie
|
||||
@ -198,7 +205,7 @@ void UDTFluxPursuitManager::GetPursuit(TArray<FDTFluxPursuitInfo>& OutPursuitFoc
|
||||
bIsSequenceDone = true;
|
||||
UE_LOG(logDTFluxCoreSubsystem, Warning, TEXT("Pursuit sequence will be completed after this round"));
|
||||
}
|
||||
FTimespan Duration = FDateTime::UtcNow() - CurrentTime;
|
||||
FTimespan Duration = FDateTime::UtcNow() - MetricsStartFunction;
|
||||
|
||||
UE_LOG(logDTFluxCoreSubsystem, Warning, TEXT("Metrics Time Out: %d fraction seconds"),
|
||||
Duration.GetDuration().GetFractionMicro());
|
||||
|
||||
Reference in New Issue
Block a user