Files
video-record-ue-poc/Source/AudioVideoRecord/Variant_Shooter/ShooterPlayerController.h
2026-03-11 11:25:15 +05:30

78 lines
2.2 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/PlayerController.h"
#include "ShooterPlayerController.generated.h"
class UInputMappingContext;
class AShooterCharacter;
class UShooterBulletCounterUI;
/**
* Simple PlayerController for a first person shooter game
* Manages input mappings
* Respawns the player pawn when it's destroyed
*/
UCLASS(abstract)
class AUDIOVIDEORECORD_API AShooterPlayerController : public APlayerController
{
GENERATED_BODY()
protected:
/** Input mapping contexts for this player */
UPROPERTY(EditAnywhere, Category="Input|Input Mappings")
TArray<UInputMappingContext*> DefaultMappingContexts;
/** Input Mapping Contexts */
UPROPERTY(EditAnywhere, Category="Input|Input Mappings")
TArray<UInputMappingContext*> MobileExcludedMappingContexts;
/** Mobile controls widget to spawn */
UPROPERTY(EditAnywhere, Category="Input|Touch Controls")
TSubclassOf<UUserWidget> MobileControlsWidgetClass;
/** Pointer to the mobile controls widget */
TObjectPtr<UUserWidget> MobileControlsWidget;
/** Character class to respawn when the possessed pawn is destroyed */
UPROPERTY(EditAnywhere, Category="Shooter|Respawn")
TSubclassOf<AShooterCharacter> CharacterClass;
/** Type of bullet counter UI widget to spawn */
UPROPERTY(EditAnywhere, Category="Shooter|UI")
TSubclassOf<UShooterBulletCounterUI> BulletCounterUIClass;
/** Tag to grant the possessed pawn to flag it as the player */
UPROPERTY(EditAnywhere, Category="Shooter|Player")
FName PlayerPawnTag = FName("Player");
/** Pointer to the bullet counter UI widget */
TObjectPtr<UShooterBulletCounterUI> BulletCounterUI;
protected:
/** Gameplay Initialization */
virtual void BeginPlay() override;
/** Initialize input bindings */
virtual void SetupInputComponent() override;
/** Pawn initialization */
virtual void OnPossess(APawn* InPawn) override;
/** Called if the possessed pawn is destroyed */
UFUNCTION()
void OnPawnDestroyed(AActor* DestroyedActor);
/** Called when the bullet count on the possessed pawn is updated */
UFUNCTION()
void OnBulletCountUpdated(int32 MagazineSize, int32 Bullets);
/** Called when the possessed pawn is damaged */
UFUNCTION()
void OnPawnDamaged(float LifePercent);
};