diff --git a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.cpp b/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.cpp index dd877626..53a1e62e 100644 --- a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.cpp @@ -71,12 +71,12 @@ void AEndlessVendettaCharacter::BeginPlay() InventoryComponent = Cast(GetWorld()->GetFirstPlayerController()->GetComponentByClass(UInventoryComponent::StaticClass())); WalkSpeed = CharacterMovement->MaxWalkSpeed; OriginalWalkSpeed = CharacterMovement->MaxWalkSpeed; + CurrentStamina = MaxStamina; } void AEndlessVendettaCharacter::Tick(float DeltaTime) { Super::Tick(DeltaTime); - WeaponPickUpSystem(); MoveGroundSpeed = Cast(GetComponentByClass(UMovementComponent::StaticClass()))->Velocity.Size(); @@ -89,6 +89,27 @@ void AEndlessVendettaCharacter::Tick(float DeltaTime) { bIsPlayerMoving = false; } + //PLAYER STAMINA HANDLING + if (bIsPlayerSprinting) + { + CurrentStamina -= FMath::Clamp(StaminaDecreaseRate, 0.0f, 100.0f); + if (CurrentStamina <= 0.0f) + { + bIsPlayerSprinting = false; + this->GetFirstPersonCameraComponent()->SetFieldOfView(90); + CurrentStamina = 0.0f; + CharacterMovement->MaxWalkSpeed = OriginalWalkSpeed; + } + } + if (!bIsPlayerSprinting) + { + if(CurrentStamina >= 100.0f) + { + CurrentStamina = 100.0f; + return; + } + CurrentStamina += FMath::Clamp(StaminaRegenRate, 0.0f, 100.0f); + } } void AEndlessVendettaCharacter::RegenHealth() @@ -521,13 +542,7 @@ void AEndlessVendettaCharacter::Sprint() if (bIsPlayerSprinting) { CharacterMovement->MaxWalkSpeed = SprintSpeed; - MaxStamina -= StaminaDecreaseRate; - UE_LOG(LogTemp, Display, TEXT("Walk Speed: %f"), WalkSpeed); - if (MaxStamina <= 0) - { - CharacterMovement->MaxWalkSpeed = OriginalWalkSpeed; - bIsPlayerSprinting = false; - } + this->GetFirstPersonCameraComponent()->SetFieldOfView(100); } } @@ -538,7 +553,7 @@ void AEndlessVendettaCharacter::StopSprint() { UE_LOG(LogTemp, Display, TEXT("Player stopped sprinting")); CharacterMovement->MaxWalkSpeed = OriginalWalkSpeed; - MaxStamina++; + this->GetFirstPersonCameraComponent()->SetFieldOfView(90); } } diff --git a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.h b/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.h index 8a7ff928..ca2e5a99 100644 --- a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.h +++ b/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.h @@ -88,11 +88,15 @@ public: //STAMINA AND SPRINT SPEED UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Stats") - float MaxStamina = 100.0f; + float MaxStamina = 100; UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Stats") - float StaminaDecreaseRate = 10.0f; + float CurrentStamina; UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Stats") - float SprintSpeed = 1200; + float StaminaDecreaseRate = 0.2; + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Stats") + float StaminaRegenRate = 0.05; + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Stats") + float SprintSpeed = 900; //Getting the charMovementComp UCharacterMovementComponent* CharacterMovement = GetCharacterMovement();