#pragma once #include "CoreMinimal.h" #include "UObject/NoExportTypes.h" #include "UObject/NoExportTypes.h" #include "UObject/NoExportTypes.h" #include "GameFramework/OnlineReplStructs.h" #include "EFortSpectatorBlendType.h" #include "EPlayEventType.h" #include "ESpectatorCameraType.h" #include "FortPlayerControllerGameplay.h" #include "NotificationUISettings.h" #include "OnCameraTypeChangedDelegate.h" #include "OnFollowedPlayerChangedDelegate.h" #include "OnPlayerBecameIrrelevantDelegate.h" #include "OnPlayerBecameRelevantDelegate.h" #include "OnPlayerDiedDelegate.h" #include "OnShowNotificationDelegate.h" #include "OnShowNotificationsEnabledChangedDelegate.h" #include "PlayerStateAthenaDelegateDelegate.h" #include "QuickBarData.h" #include "RemoteViewRotSnapshotManager.h" #include "SavedPlayerSpectatorCameraData.h" #include "SavedSpectatorCameras.h" #include "SpectatorDelegateDelegate.h" #include "Templates/SubclassOf.h" #include "FortPlayerControllerSpectating.generated.h" class AActor; class ABattleMapPawn; class AFortBroadcastRemoteClientInfo; class AFortPlayerState; class AFortPlayerStateAthena; class AFortRelevancyZoneIndicator; class AFortReplaySpectatorPawnBase; class AFortSpectatorThirdPersonPawn; class AHoverDronePawn; class APlayerState; class AVolume; class UAthenaMarkerComponent; class UAthenaPlayerMatchReport; class UFortMiniMapTeamIndicators; class UFortReplayContext; class UFortSpectatorCameraComponent; class UFortSpectatorSettings; class UInputComponent; class UMaterialInterface; class UPostProcessComponent; UCLASS(Blueprintable, Config=Game) class FORTNITEGAME_API AFortPlayerControllerSpectating : public AFortPlayerControllerGameplay { GENERATED_BODY() public: UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) ESpectatorCameraType CurrentCameraType; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) TArray CameraModeCycle; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) FLinearColor MinimapPlayerIconColorBase; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) FLinearColor MinimapPlayerIconColorHovered; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float ZoomThresholdForPlayerNames; UPROPERTY(EditAnywhere, meta=(AllowPrivateAccess=true)) FQuickBarData QuickBarDefinitions[3]; UPROPERTY(BlueprintAssignable, BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) FOnFollowedPlayerChanged OnFollowedPlayerChanged; UPROPERTY(BlueprintAssignable, BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) FOnCameraTypeChanged OnCameraTypeChanged; UPROPERTY(BlueprintAssignable, BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) FOnPlayerBecameRelevant OnPlayerBecameRelevant; UPROPERTY(BlueprintAssignable, BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) FOnPlayerBecameIrrelevant OnPlayerBecameIrrelevant; UPROPERTY(BlueprintAssignable, BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) FPlayerStateAthenaDelegate OnPlayerStateAdded; UPROPERTY(BlueprintAssignable, BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) FPlayerStateAthenaDelegate OnPlayerStateChanged; UPROPERTY(BlueprintAssignable, BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) FOnPlayerDied OnPlayerDied; UPROPERTY(BlueprintAssignable, BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) FSpectatorDelegate OnTimelineScrubbed; UPROPERTY(BlueprintAssignable, BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) FSpectatorDelegate OnZoomChanged; UPROPERTY(BlueprintAssignable, BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) FOnShowNotification OnShowNotification; UPROPERTY(BlueprintAssignable, BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) FOnShowNotificationsEnabledChanged OnShowNotificationsEnabledChanged; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) UMaterialInterface* SpectatorPostProcessMaterial; protected: UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true)) UPostProcessComponent* OutsideSafeZonePPComponent; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) TSubclassOf SpectatorPawnBaseClass; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) TSubclassOf ThirdPersonPawnBaseClass; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) TSubclassOf HoverDronePawnClass; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) TSubclassOf BattleMapPawnClass; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) TSubclassOf ARDronePawnClass; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) TSubclassOf MinimapIndicatorClass; UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, meta=(AllowPrivateAccess=true)) TArray SavedCameraStates; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) TMap PlayerRelevancyTrackingMap; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) TMap AddedPlayersMap; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) TMap PlayerMatchReports; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) FVector ChaseCamOffset; UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, meta=(AllowPrivateAccess=true)) AFortPlayerState* LastDamagerOfViewTarget; UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, meta=(AllowPrivateAccess=true)) AActor* HoveredActor; UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true)) UInputComponent* FullScreenMapInputComponent; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) FSavedSpectatorCameras HotkeyCameras; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) AActor* LastKnownViewTarget; private: UPROPERTY(BlueprintReadWrite, Config, EditAnywhere, meta=(AllowPrivateAccess=true)) FRemoteViewRotSnapshotManager RemoteViewRotSnapshotManager; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) UFortSpectatorSettings* SpectatorSettings; public: UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) AVolume* CameraBoundsVolume; protected: UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) TSubclassOf RelevancyZoneIndicatorClass; UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, meta=(AllowPrivateAccess=true)) AFortRelevancyZoneIndicator* RelevancyZoneIndicator; UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, meta=(AllowPrivateAccess=true)) UFortReplayContext* ReplayContext; UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true)) UAthenaMarkerComponent* MarkerComponent; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) TArray SquadMembers; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) AFortBroadcastRemoteClientInfo* FollowedPlayerRemoteClientInfo; public: AFortPlayerControllerSpectating(); UFUNCTION(BlueprintCallable) void ZoomIn(const float Val); UFUNCTION() void UpdateReplayEvents(EPlayEventType Type); UFUNCTION(BlueprintCallable) void ToggleSpectatorHUD(); protected: UFUNCTION(BlueprintCallable) void SpectatorSpecialAction(); UFUNCTION(BlueprintCallable, Exec) void SpectatorClearSavedCameraShots(); public: UFUNCTION(BlueprintCallable) void ShowHoveredPlayersConsoleProfile(); UFUNCTION(BlueprintCallable) void SetShowVehiclesOnMap(bool bInShowVehiclesOnMap); UFUNCTION(BlueprintCallable) void SetShowPlayersOnMap(bool bInShowPlayersOnMap); UFUNCTION(BlueprintCallable) void SetShowBusPathsOnMap(bool bInShowBusPathsOnMap); UFUNCTION(BlueprintCallable) void SetNotificationsEnabled(bool bNewState); UFUNCTION(BlueprintCallable) void SetNewCameraType(ESpectatorCameraType NewCameraType, bool bReset); UFUNCTION(BlueprintCallable) void SetMapWeaponTracersEnabled(bool bEnable); UFUNCTION(BlueprintCallable) void SetFollowedPlayer(AFortPlayerState* NewPlayerToFollow); UFUNCTION(BlueprintCallable) void SetBlendType(EFortSpectatorBlendType NewBlendType); UFUNCTION(BlueprintCallable) void ResetCamera(); UFUNCTION(BlueprintCallable) void ResetAllCameras(); protected: UFUNCTION(BlueprintCallable) void PlayerBecameRelevant(AFortPlayerState* FPS); UFUNCTION(BlueprintCallable) void OnNextCameraMode(); public: UFUNCTION(BlueprintCallable) bool JumpToHoveredActor(); UFUNCTION(BlueprintCallable, BlueprintPure) bool IsPlayerInRelevancy(const AFortPlayerState* FPS) const; UFUNCTION(BlueprintCallable, BlueprintPure) bool IsFollowedPlayerInBus() const; protected: UFUNCTION(BlueprintCallable) bool IsAllowedChangeCamera(); public: UFUNCTION(BlueprintCallable) void HandleTimelineScrubbed(); UFUNCTION(BlueprintCallable, BlueprintPure=false) void HandleNewNotificationRequest(const FText& NotificationText, const FNotificationUISettings& NotificationSettings) const; UFUNCTION(BlueprintCallable, BlueprintPure) UFortSpectatorSettings* GetSpectatorSettings_BP() const; UFUNCTION(BlueprintCallable, BlueprintPure) bool GetShowVehiclesOnMap() const; UFUNCTION(BlueprintCallable, BlueprintPure) bool GetShowPlayersOnMap() const; UFUNCTION(BlueprintCallable, BlueprintPure) bool GetShowBusPathsOnMap() const; UFUNCTION(BlueprintCallable, BlueprintPure) UAthenaMarkerComponent* GetMarkerComponent() const; UFUNCTION(BlueprintCallable, BlueprintPure) bool GetMapWeaponTracersEnabled() const; UFUNCTION(BlueprintCallable, BlueprintPure) AFortPlayerState* GetFollowedPlayer() const; UFUNCTION(BlueprintCallable, BlueprintPure) UFortSpectatorCameraComponent* GetCurrentSpectatorCameraComponent() const; UFUNCTION(BlueprintCallable, BlueprintPure) EFortSpectatorBlendType GetBlendType() const; UFUNCTION(BlueprintCallable, BlueprintPure) TMap GetAddedPlayersMap() const; protected: UFUNCTION(BlueprintCallable) void FullscreenMapZoom(float Value); public: UFUNCTION(BlueprintCallable) void FullScreenMapCursorStopDrag(); UFUNCTION(BlueprintCallable) void FullScreenMapCursorStartDrag(); UFUNCTION(BlueprintCallable) void FullScreenMapCursorMoved(const FVector2D& CursorWidgetLocation, const FVector2D& CursorDelta); UFUNCTION(BlueprintCallable, Exec) void FollowPrevTeamMember(); UFUNCTION(BlueprintCallable, Exec) void FollowPrevSquadMember(); UFUNCTION(BlueprintCallable, Exec) void FollowPrevPlayer(); UFUNCTION(BlueprintCallable, Exec) void FollowPlayerByName(const FString& PlayerName); UFUNCTION(BlueprintCallable, Exec) void FollowNextTeamMember(); UFUNCTION(BlueprintCallable, Exec) void FollowNextSquadMember(); UFUNCTION(BlueprintCallable, Exec) void FollowNextPlayer(); UFUNCTION(BlueprintCallable, Exec) void FollowLastDamagerOfViewTarget(); UFUNCTION(BlueprintCallable) bool FollowHoveredPlayer(); UFUNCTION(BlueprintCallable, BlueprintPure) AFortPlayerState* FindPlayerStateByUID(const FUniqueNetIdRepl& UID) const; UFUNCTION(BlueprintCallable, BlueprintPure) bool CanRespawnAfterDeath() const; UFUNCTION(BlueprintCallable, BlueprintPure) bool AreNotificationsEnabled() const; UFUNCTION(BlueprintCallable) void AdjustNormalizedDistanceToPlayer(const float Val); };