blaster/Source/Blaster/Components/BuffComponent.h

65 lines
1.6 KiB
C++

// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "Components/ActorComponent.h"
#include "BuffComponent.generated.h"
UCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))
class BLASTER_API UBuffComponent : public UActorComponent
{
GENERATED_BODY()
public:
UBuffComponent();
friend class ABlasterCharacter;
void Heal(float HealAmount, float HealingTime);
void ReplenishShield(float ShieldAmount, float ReplenishTime);
void BuffSpeed(float BuffBaseSpeed, float BuffCrouchSpeed, float BuffTime);
void BuffJump(float BuffJumpVelocity, float BuffTime);
void SetInitialSpeeds(float BaseSpeed, float CrouchSpeed);
void SetInitialJumpVelocity(float Velocity);
protected:
virtual void BeginPlay() override;
void HealRampUp(float DeltaTime);
void ShieldRampUp(float DeltaTime);
private:
UPROPERTY()
class ABlasterCharacter* Character;
// Heal Buff
bool bHealing = false;
float HealingRate = 0;
float AmountToHeal = 0.f;
// Shield Buff
bool bReplenishingShield = false;
float ShieldReplenishRate = 0;
float ShieldReplenishAmount = 0.f;
// Speed Buff
FTimerHandle SpeedBuffTimer;
void ResetSpeeds();
float InitialBaseSpeed;
float InitialCrouchSpeed;
UFUNCTION(NetMulticast, Reliable)
void MulticastSpeedBuff(float BaseSpeed, float CrouchSpeed);
// Jump Buff
FTimerHandle JumpBuffTimer;
void ResetJump();
float InitialJumpZVelocity;
UFUNCTION(NetMulticast, Reliable)
void MulticastJumpBuff(float JumpVelocity);
public:
virtual void TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override;
};