ExoWest/Source/Exo/Public/Player/ExoPlayerController.h
Kubson96 89da8c4463 feat: add logic for jump, sprint and crouch
Added walk speed and sprint speed properties to character
Moved dodge properties to character
Implement logic for jump, sprint and crouch
Changed dodge key from Shift to Alt
2025-02-22 23:31:23 +01:00

132 lines
3.5 KiB
C++

// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/PlayerController.h"
#include <Player/InteractionComponent.h>
#include <Characters/Components/ShootingComponent.h>
#include "ExoPlayerController.generated.h"
class AExoPlayerCharacter;
class UInputMappingContext;
class UInputAction;
struct FInputActionValue;
UCLASS()
class EXO_API AExoPlayerController : public APlayerController
{
GENERATED_BODY()
public:
AExoPlayerController();
virtual void BeginPlay() override;
virtual void PlayerTick(float DeltaTime) override;
protected:
virtual void SetupInputComponent() override;
// Moja propozycja sterowania po prawej [Hubert]
UFUNCTION(BlueprintCallable, Category = "Input")
void Move(const FInputActionValue& InputActionValue); //WSAD
UFUNCTION(BlueprintCallable, Category = "Input")
void Look(const FInputActionValue& InputActionValue); // MouseXY
UFUNCTION(BlueprintCallable, Category = "Input")
void Interact(); // E
UFUNCTION(BlueprintCallable, Category = "Input")
void PlayerJump(); // Space
UFUNCTION(BlueprintCallable, Category = "Input")
void PlayerDodge(); // LShift(Pressed)
UFUNCTION(BlueprintCallable, Category = "Input")
void ResetDodge();
UFUNCTION(BlueprintCallable, Category = "Input")
void PlayerStartCrouch(); // LCtrl\C\X
UFUNCTION(BlueprintCallable, Category = "Input")
void PlayerStopCrouch(); // LCtrl\C\X
UFUNCTION(BlueprintCallable, Category = "Input")
void PlayerStartSprint(); // LShift(Hold)
UFUNCTION(BlueprintCallable, Category = "Input")
void PlayerStopSprint();
UFUNCTION(BlueprintCallable, Category = "Input")
void PlayerShoot(); // LPM
UFUNCTION(BlueprintCallable, Category = "Input")
void PlayerAim(); // PPM
UFUNCTION(BlueprintCallable, Category = "Input")
void PlayerMeleAttack(); // V
UFUNCTION(BlueprintCallable, Category = "Input")
void PlayerChangeWeapon(); // 1\2\MouseScroll
UFUNCTION(BlueprintCallable, Category = "Input")
void PlayerReload(); // R
protected:
UPROPERTY(EditAnywhere, Category = "Input")
TObjectPtr<UInputMappingContext> InputContext;
UPROPERTY(EditAnywhere, Category= "Input")
TObjectPtr<UInputAction> MoveAction;
UPROPERTY(EditAnywhere, Category = "Input")
TObjectPtr<UInputAction> InteractAction;
UPROPERTY(EditAnywhere, Category = "Input")
TObjectPtr<UInputAction> LookAction;
UPROPERTY(EditAnywhere, Category = "Input")
TObjectPtr<UInputAction> JumpAction;
UPROPERTY(EditAnywhere, Category = "Input")
TObjectPtr<UInputAction> SprintAction;
UPROPERTY(EditAnywhere, Category = "Input")
TObjectPtr<UInputAction> CrouchAction;
UPROPERTY(EditAnywhere, Category = "Input")
TObjectPtr<UInputAction> DodgeAction;
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Dodge Properties")
FTimerHandle DodgeCooldownTimer;
UPROPERTY(EditAnywhere, Category = "Dodge Properties")
bool CanDodge = true;
UPROPERTY(EditAnywhere, Category = "Input")
TObjectPtr<UInputAction> ShootAction;
UPROPERTY(EditAnywhere, Category = "Input")
TObjectPtr<UInputAction> ReloadAction;
UPROPERTY(EditAnywhere, Category = "Input")
TObjectPtr<UInputAction> AimAction;
UPROPERTY(EditAnywhere, Category = "Input")
TObjectPtr<UInputAction> MeleAction;
UPROPERTY(EditAnywhere, Category = "Input")
TObjectPtr<UInputAction> ChangeWeaponAction;
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Character")
TObjectPtr<AExoPlayerCharacter> PlayerCharacter;
private:
UInteractionComponent* InteractionComponent;
UShootingComponent* ShootingComponent;
};