78 lines
2.2 KiB
C++
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);
|
|
};
|