// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "CoreMinimal.h" #include "Engine/DeveloperSettingsBackedByCVars.h" #include "GameplayTagContainer.h" #include "LyraDeveloperSettings.generated.h" class ULyraExperienceDefinition; UENUM() enum class ECheatExecutionTime { // When the cheat manager is created OnCheatManagerCreated, // When a pawn is possessed by a player OnPlayerPawnPossession }; USTRUCT() struct FLyraCheatToRun { GENERATED_BODY() UPROPERTY(EditAnywhere) ECheatExecutionTime Phase = ECheatExecutionTime::OnPlayerPawnPossession; UPROPERTY(EditAnywhere) FString Cheat; }; /** * Developer settings / editor cheats */ UCLASS(config=EditorPerProjectUserSettings, MinimalAPI) class ULyraDeveloperSettings : public UDeveloperSettingsBackedByCVars { GENERATED_BODY() public: ULyraDeveloperSettings(); //~UDeveloperSettings interface virtual FName GetCategoryName() const override; //~End of UDeveloperSettings interface public: // The experience override to use for Play in Editor (if not set, the default for the world settings of the open map will be used) UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, config, Category=Lyra, meta=(AllowedTypes="LyraExperienceDefinition")) FPrimaryAssetId ExperienceOverride; UPROPERTY(BlueprintReadOnly, config, Category=LyraBots) bool bOverrideBotCount = false; UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, config, Category=LyraBots, meta=(EditCondition=bOverrideBotCount)) int32 OverrideNumPlayerBotsToSpawn = 0; UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, config, Category=LyraBots) bool bAllowPlayerBotsToAttack = true; // Do the full game flow when playing in the editor, or skip 'waiting for player' / etc... game phases? UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, config, Category=Lyra) bool bTestFullGameFlowInPIE = false; // Should game logic load cosmetic backgrounds in the editor or skip them for iteration speed? UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, config, Category=Lyra) bool bSkipLoadingCosmeticBackgroundsInPIE = false; // List of cheats to auto-run during 'play in editor' UPROPERTY(config, EditAnywhere, Category=Lyra) TArray CheatsToRun; // Should messages broadcast through the gameplay message subsystem be logged? UPROPERTY(config, EditAnywhere, Category=GameplayMessages, meta=(ConsoleVariable="GameplayMessageSubsystem.LogMessages")) bool LogGameplayMessages = false; #if WITH_EDITORONLY_DATA /** A list of common maps that will be accessible via the editor detoolbar */ UPROPERTY(config, EditAnywhere, BlueprintReadOnly, Category=Maps, meta=(AllowedClasses="/Script/Engine.World")) TArray CommonEditorMaps; #endif #if WITH_EDITOR public: // Called by the editor engine to let us pop reminder notifications when cheats are active LYRAGAME_API void OnPlayInEditorStarted() const; private: void ApplySettings(); #endif public: //~UObject interface #if WITH_EDITOR virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override; virtual void PostReloadConfig(FProperty* PropertyThatWasLoaded) override; virtual void PostInitProperties() override; #endif //~End of UObject interface };