Add generated-mode launch request surface
This commit is contained in:
parent
1aec54d0e4
commit
7cfbbf5cb3
5 changed files with 109 additions and 0 deletions
|
|
@ -130,6 +130,33 @@ bool UHyperTwistTrainingRuntimeLibrary::TryGetActiveImportedGeneratedModeLaunchC
|
|||
return false;
|
||||
}
|
||||
|
||||
bool UHyperTwistTrainingRuntimeLibrary::TryGetActiveImportedGeneratedModeLaunchRequest(
|
||||
UObject* WorldContextObject,
|
||||
FHyperTwistTrainingImportedGeneratedModeLaunchRequest& OutLaunchRequest
|
||||
)
|
||||
{
|
||||
if (UHyperTwistTrainingSubsystem* TrainingSubsystem = GetTrainingSubsystem(WorldContextObject))
|
||||
{
|
||||
return TrainingSubsystem->TryGetActiveImportedGeneratedModeLaunchRequest(OutLaunchRequest);
|
||||
}
|
||||
|
||||
OutLaunchRequest = FHyperTwistTrainingImportedGeneratedModeLaunchRequest();
|
||||
return false;
|
||||
}
|
||||
|
||||
FHyperTwistTrainingImportedGeneratedModeLaunchRequest UHyperTwistTrainingRuntimeLibrary::CreateActiveImportedGeneratedModeLaunchRequest(
|
||||
UObject* WorldContextObject,
|
||||
const FString& RequestSource
|
||||
)
|
||||
{
|
||||
if (UHyperTwistTrainingSubsystem* TrainingSubsystem = GetTrainingSubsystem(WorldContextObject))
|
||||
{
|
||||
return TrainingSubsystem->CreateActiveImportedGeneratedModeLaunchRequest(RequestSource);
|
||||
}
|
||||
|
||||
return FHyperTwistTrainingImportedGeneratedModeLaunchRequest();
|
||||
}
|
||||
|
||||
FHyperTwistTrainingRunState UHyperTwistTrainingRuntimeLibrary::ApplyActiveImportedRuntimeSelectorOption(
|
||||
UObject* WorldContextObject,
|
||||
const FString& SelectorId,
|
||||
|
|
|
|||
|
|
@ -771,6 +771,35 @@ bool UHyperTwistTrainingSubsystem::TryGetActiveImportedGeneratedModeLaunchConfig
|
|||
);
|
||||
}
|
||||
|
||||
bool UHyperTwistTrainingSubsystem::TryGetActiveImportedGeneratedModeLaunchRequest(
|
||||
FHyperTwistTrainingImportedGeneratedModeLaunchRequest& OutLaunchRequest
|
||||
) const
|
||||
{
|
||||
OutLaunchRequest = ActiveImportedGeneratedModeLaunchRequest;
|
||||
return OutLaunchRequest.IsStructurallyValid();
|
||||
}
|
||||
|
||||
FHyperTwistTrainingImportedGeneratedModeLaunchRequest UHyperTwistTrainingSubsystem::CreateActiveImportedGeneratedModeLaunchRequest(
|
||||
const FString& RequestSource
|
||||
)
|
||||
{
|
||||
FHyperTwistTrainingImportedGeneratedModeLaunchConfig LaunchConfig;
|
||||
if (!TryGetActiveImportedGeneratedModeLaunchConfig(LaunchConfig))
|
||||
{
|
||||
ActiveImportedGeneratedModeLaunchRequest = FHyperTwistTrainingImportedGeneratedModeLaunchRequest();
|
||||
return ActiveImportedGeneratedModeLaunchRequest;
|
||||
}
|
||||
|
||||
ActiveImportedGeneratedModeLaunchRequest = FHyperTwistTrainingImportedGeneratedModeLaunchRequest();
|
||||
ActiveImportedGeneratedModeLaunchRequest.RequestId =
|
||||
FString::Printf(TEXT("generated_launch_%s"), *FGuid::NewGuid().ToString(EGuidFormats::Digits));
|
||||
ActiveImportedGeneratedModeLaunchRequest.RequestedAtUtc = FDateTime::UtcNow().ToIso8601();
|
||||
ActiveImportedGeneratedModeLaunchRequest.RequestSource =
|
||||
RequestSource.IsEmpty() ? TEXT("runtime-imported-generated-mode") : RequestSource;
|
||||
ActiveImportedGeneratedModeLaunchRequest.LaunchConfig = LaunchConfig;
|
||||
return ActiveImportedGeneratedModeLaunchRequest;
|
||||
}
|
||||
|
||||
FHyperTwistTrainingRunState UHyperTwistTrainingSubsystem::ApplyActiveImportedRuntimeSelectorOption(
|
||||
const FString& SelectorId,
|
||||
const FString& OptionId
|
||||
|
|
@ -2792,6 +2821,7 @@ FHyperTwistTrainingRunState UHyperTwistTrainingSubsystem::StartTrainingRunFromDe
|
|||
ActiveReviewFlowStatus = FHyperTwistTrainingReviewFlowStatus();
|
||||
ActiveCoachActionPlan = FHyperTwistTrainingCoachActionPlan();
|
||||
ActiveCoachFollowUpBrief = FHyperTwistCoachBrief();
|
||||
ActiveImportedGeneratedModeLaunchRequest = FHyperTwistTrainingImportedGeneratedModeLaunchRequest();
|
||||
ActiveRunState = UHyperTwistTrainingLibrary::StartTrainingRun(Deck, UserId, SessionId, Mode);
|
||||
bHasActiveRun = ActiveRunState.IsStructurallyValid();
|
||||
RefreshSummary();
|
||||
|
|
@ -3107,6 +3137,7 @@ void UHyperTwistTrainingSubsystem::ClearActiveRun()
|
|||
{
|
||||
ActiveRunState = FHyperTwistTrainingRunState();
|
||||
ActiveRunSummary = FHyperTwistTrainingSessionSummary();
|
||||
ActiveImportedGeneratedModeLaunchRequest = FHyperTwistTrainingImportedGeneratedModeLaunchRequest();
|
||||
ActiveReviewPlanState = FHyperTwistTrainingReviewPlanState();
|
||||
ActiveCoachActionPlan = FHyperTwistTrainingCoachActionPlan();
|
||||
bHasActiveRun = false;
|
||||
|
|
|
|||
|
|
@ -60,6 +60,18 @@ public:
|
|||
FHyperTwistTrainingImportedGeneratedModeLaunchConfig& OutLaunchConfig
|
||||
);
|
||||
|
||||
UFUNCTION(BlueprintCallable, Category = "HyperTwist|Training", meta = (WorldContext = "WorldContextObject"))
|
||||
static bool TryGetActiveImportedGeneratedModeLaunchRequest(
|
||||
UObject* WorldContextObject,
|
||||
FHyperTwistTrainingImportedGeneratedModeLaunchRequest& OutLaunchRequest
|
||||
);
|
||||
|
||||
UFUNCTION(BlueprintCallable, Category = "HyperTwist|Training", meta = (WorldContext = "WorldContextObject"))
|
||||
static FHyperTwistTrainingImportedGeneratedModeLaunchRequest CreateActiveImportedGeneratedModeLaunchRequest(
|
||||
UObject* WorldContextObject,
|
||||
const FString& RequestSource
|
||||
);
|
||||
|
||||
UFUNCTION(BlueprintCallable, Category = "HyperTwist|Training", meta = (WorldContext = "WorldContextObject"))
|
||||
static FHyperTwistTrainingRunState ApplyActiveImportedRuntimeSelectorOption(
|
||||
UObject* WorldContextObject,
|
||||
|
|
|
|||
|
|
@ -48,6 +48,16 @@ public:
|
|||
FHyperTwistTrainingImportedGeneratedModeLaunchConfig& OutLaunchConfig
|
||||
) const;
|
||||
|
||||
UFUNCTION(BlueprintCallable, Category = "HyperTwist|Training")
|
||||
bool TryGetActiveImportedGeneratedModeLaunchRequest(
|
||||
FHyperTwistTrainingImportedGeneratedModeLaunchRequest& OutLaunchRequest
|
||||
) const;
|
||||
|
||||
UFUNCTION(BlueprintCallable, Category = "HyperTwist|Training")
|
||||
FHyperTwistTrainingImportedGeneratedModeLaunchRequest CreateActiveImportedGeneratedModeLaunchRequest(
|
||||
const FString& RequestSource
|
||||
);
|
||||
|
||||
UFUNCTION(BlueprintCallable, Category = "HyperTwist|Training")
|
||||
FHyperTwistTrainingRunState ApplyActiveImportedRuntimeSelectorOption(
|
||||
const FString& SelectorId,
|
||||
|
|
@ -522,6 +532,9 @@ private:
|
|||
UPROPERTY()
|
||||
FHyperTwistTrainingSessionSummary ActiveRunSummary;
|
||||
|
||||
UPROPERTY()
|
||||
FHyperTwistTrainingImportedGeneratedModeLaunchRequest ActiveImportedGeneratedModeLaunchRequest;
|
||||
|
||||
UPROPERTY()
|
||||
FHyperTwistTrainingMethodDrillRunState ActiveMethodDrillRunState;
|
||||
|
||||
|
|
|
|||
|
|
@ -544,6 +544,32 @@ struct FHyperTwistTrainingImportedGeneratedModeLaunchConfig
|
|||
}
|
||||
};
|
||||
|
||||
USTRUCT(BlueprintType)
|
||||
struct FHyperTwistTrainingImportedGeneratedModeLaunchRequest
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString RequestId;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString RequestedAtUtc;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString RequestSource;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FHyperTwistTrainingImportedGeneratedModeLaunchConfig LaunchConfig;
|
||||
|
||||
bool IsStructurallyValid() const
|
||||
{
|
||||
return !RequestId.IsEmpty()
|
||||
&& !RequestedAtUtc.IsEmpty()
|
||||
&& !RequestSource.IsEmpty()
|
||||
&& LaunchConfig.IsStructurallyValid();
|
||||
}
|
||||
};
|
||||
|
||||
USTRUCT(BlueprintType)
|
||||
struct FHyperTwistTrainingDeck
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue