// Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "Characters/ExoCharacterBase.h" #include "Components/CapsuleComponent.h" #include "ExoPlayerCharacter.generated.h" class UInteractionComponent; class UShootingComponent; class UWBP_PlayerUI; UCLASS() class EXO_API AExoPlayerCharacter : public AExoCharacterBase { GENERATED_BODY() public: AExoPlayerCharacter(); UPROPERTY(EditAnywhere, Category = "Combat") TObjectPtr Weapon; UPROPERTY(VisibleAnywhere, BlueprintReadOnly) TObjectPtr InteractionComponent; UPROPERTY(VisibleAnywhere, BlueprintReadOnly) TObjectPtr ShootingComponent; UPROPERTY(EditAnywhere, Category = "Dodge Properties") float DodgeForce = 5000.f; UPROPERTY(EditAnywhere, Category = "Dodge Properties") float DodgeCooldown = 2.f; UPROPERTY(EditAnywhere, Category = "Slide Properties") float SlideCooldown = 0.35f; UPROPERTY(EditAnywhere, Category = "Movement Properties") float WalkSpeed = 600.0f; UPROPERTY(EditAnywhere, Category = "Movement Properties") float SprintSpeed = 1500.0f; UPROPERTY(EditAnywhere, Category = "Movement Properties") float SlideSpeed = 2500.f; UPROPERTY(EditAnywhere, Category = "Movement Properties") float CrouchSpeed = 300.f; UPROPERTY(EditAnywhere, Category = "Aiming") float bIsAimingMode = false; UPROPERTY(EditAnywhere, Category = "Health") float CurrentHealth = 50.0f; UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "UI") TSubclassOf PlayerHudClass; UFUNCTION() void OnActorBeginOverlap(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult ); UFUNCTION() void AddHealthPoints(float addValue); protected: virtual void BeginPlay() override; float MaxHealth = 100.0f; UWBP_PlayerUI* PlayerHud; };